[Dovecot] Dovecot Migration: Retrieving/Logging POP/IMAP Passwords in Plaintext
Gilles van den Hoven
support at webunity.nl
Wed Mar 5 13:59:19 UTC 2014
Traiano Welcome <traiano <at> gmail.com> writes:
>
> Hi List
>
> I'm currently in the process of migrating my dovecot imap/pop users to a
> new server and have to extract their passwords in order to import them
into
> the new system (different password encryption schemes).
>
> I've tried enabling auth_* debug parameters in my dovecot.conf in the hope
> that this would result in logging plaintext passwords to the dovecot log.
> However dovecot does not log the passwords in plaintext under any
debugging
> configuration.
>
> My question: Is there any other configuration of dovecot that would allow
> me to capture POP/IMAP passwords at a successful login time?
>
> Dovecot version: 1.0.7 (from dovecot-1.0.7-7.el5_7.1 rpm)
>
> The output of dovecot -n is:
>
> ---
> # 1.0.7: /etc/dovecot.conf
> info_log_path: /var/log/dovecot.debug
> verbose_ssl: yes
> login_dir: /var/run/dovecot/login
> login_executable(default): /usr/libexec/dovecot/imap-login
> login_executable(imap): /usr/libexec/dovecot/imap-login
> login_executable(pop3): /usr/libexec/dovecot/pop3-login
> mail_location: mbox:~:INBOX=~/Mailbox
> mail_debug: yes
> mail_executable(default): /usr/libexec/dovecot/imap
> mail_executable(imap): /usr/libexec/dovecot/imap
> mail_executable(pop3): /usr/libexec/dovecot/pop3
> mail_plugin_dir(default): /usr/lib64/dovecot/imap
> mail_plugin_dir(imap): /usr/lib64/dovecot/imap
> mail_plugin_dir(pop3): /usr/lib64/dovecot/pop3
> auth default:
> mechanisms: plain login
> verbose: yes
> debug: yes
> debug_passwords: yes
> passdb:
> driver: pam
> userdb:
> driver: passwd
> socket:
> type: listen
> client:
> path: /var/run/dovecot/auth-client
> mode: 438
> ---
>
> My dovecot.conf is as follows:
>
> ------
> info_log_path = /var/log/dovecot.debug
> verbose_ssl = yes
> mail_location = mbox:~:INBOX=~/Mailbox
> mail_debug = yes
> protocol imap {
> }
> protocol pop3 {
> }
> protocol lda {
> postmaster_address = postmaster <at> example.com
> }
> auth_verbose = yes
> auth_debug = yes
> auth_debug_passwords = yes
> auth default {
> mechanisms = plain login
> passdb pam {
> }
> userdb passwd {
> }
> user = root
> socket listen {
> client {
> path = /var/run/dovecot/auth-client
> mode = 0666
> }
> }
> }
> dict {
> }
> plugin {
> }
> ---
>
> Many thanks in advance!
> Traiano
>
>
Yes this is possible, i did it today for my own server which was also
running dovecot 1.x. I hope i got all steps; but if not this should get you
a head start in the right direction.
requires SQL and prefetching; largely based on a lot of googling, trying and
this page; http://wiki1.dovecot.org/UserDatabase/Prefetch
Steps to implement (based on SQL login);
1) Change MySQL 'user' query (all fields that are needed for LDA)
note: adjust query to match your own fields/query
user_query = SELECT home, uid, gid FROM mail_users WHERE address = '%u' AND
active = '1'
2) Change MySQL 'password' query (prepend all 'user info' fields with
userdb_)
note: adjust query to match your own fields/query
password_query = SELECT <...>, '%w' as userdb_plain_pass FROM mail_users
WHERE address = '%u' AND active = '1'
3) Add new executables for imap and pop3 login;
vi /usr/local/sbin/pop3.sh
add this:
#!/bin/sh
echo "UPDATE mail_users SET modified=now(), type='pop3',
plainpwd='$PLAIN_PASS' WHERE address = '$USER'" | mysql --host=<host> --
user=<usr> --password=<pass> <dbname>
exec /usr/lib/dovecot/pop3 "$@"
vi /usr/local/sbin/imap.sh
add this:
#!/bin/sh
echo "UPDATE mail_users SET modified=now(), type='pop3',
plainpwd='$PLAIN_PASS' WHERE address = '$USER'" | mysql --host=<host> --
user=<usr> --password=<pass> <dbname>
exec /usr/lib/dovecot/imap "$@"
Chmod +x them and make sure both the query as the "/usr/lib/dovecot/<exec>"
matches your environment.
4) In dovecot.conf; change executables for imap and pop3 login to point to
new bash scripts
protocol pop3 {
...
mail_executable = /usr/local/sbin/pop3.sh
...
}
protocol imap {
...
mail_executable = /usr/local/sbin/imap.sh
...
}
5) Still in dovecot.conf add:
userdb {
driver = prefetch
}
6) restart dovecot, done.
/etc/init.d/dovecot restart
Regards,
Gilles
More information about the dovecot
mailing list