Hi all,
I just installed dovecot-1.0_beta2 and love it! However, I've run into issues using multiple authentication databases.
I use both pam (for users on my system) and sql (for virtual users). I've noticed that if I have system user "userabc" and virtual user "userabc@otherdomain.com" (two distinct users) and my "auth default" section contains these passdb/userdb entries in this order (the order in the example config):
passdb pam passdb sql userdb pam userdb sql
then when userabc@otherdomain.com logs in, he'll get the system user userabc's mail instead of his own. It appears that the sql password check succeeds, then Dovecot grabs the home directory from pam, NOT sql.
I can work around this by setting up "userdb prefetch" and adding that section *before* "userdb pam". If I put "userdb prefetch" after "userdb pam" or after "userdb sql", then Dovecot doesn't actually do the prefetch (which causes an error since Dovecot issues the default SQL query for "user_query", which my MySQL database doesn't like).
Is there a safer way to do this? If not, should there be?
Thanks! Richard
====================================================== complete working dovecot.conf:
first_valid_uid = 900 mail_debug = yes default_mail_env = maildir:%h/.maildir maildir_copy_with_hardlinks = yes protocol imap { login_greeting_capability = yes } protocol pop3 { } auth_debug = yes auth default { mechanisms = plain passdb pam { args = "*" } passdb sql { args = /etc/dovecot/dovecot-sql.conf } userdb prefetch { } userdb passwd { } userdb sql { args = /etc/dovecot/dovecot-sql.conf } user = root }
====================================================== dovecot-sql.conf:
driver = mysql connect = host=/var/run/mysqld/mysqld.sock user=mail password=** dbname=mail default_pass_scheme = SSHA password_query = <query that returns user, password, userdb_home, userdb_uid, userdb_gid>