[Dovecot] mail_location and master_user rel 1.0.x
login me@mymail.net*theboss thebossespwd
this is a great piece of software, but it has some frustrating issues.
i have included my two configurations below, just FYI.
the one (older) system is 1.0rc7 on mandriva 2007.0 and postfix 2.3.3 and amavisd and spamassassin and using a maildir configuration
the newer system is 1.0.5 (soon to be 7) on mandriva 2008.0 and postfix 2.4.5 amavisd and spamassassin and using a maildir configuration
first, i followed the instructions in this document http://wiki.dovecot.org/Authentication/MasterUsers to the letter and it works for neither the old server nor the new. specifically i was using the first example configuration. all i ever got was:
Connected to mail.mailserver.com Escape character is '^]'.
- OK [CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=DIGEST-MD5] Dovecot ready. login him@mailserver.com*theboss thebossespwd login BAD Error in IMAP command received by server.
and the auth_debug information was completely useless. if someone goes to the trouble of writing great examples they really should test to make sure they actually work.
secondly: this configuration on the old server (1.0rc7) works fine: ## Dovecot 1.0 configuration file base_dir = /var/lib/dovecot protocols = imap pop3 imaps log_path = /var/log/dovecot/error.log info_log_path = /var/log/dovecot/info.log first_valid_uid = 60000 last_valid_uid = 60000 first_valid_gid=15 last_valid_gid=15 default_mail_env = maildir:/var/spool/mail/%d/%u mailbox_check_interval = 60 maildir_copy_with_hardlinks = yes mbox_locks = fcntl umask = 0077 auth default { mechanisms = plain digest-md5 user = dovecot passdb pgsql { /etc/dovecot/dovecot-pgsql.conf } userdb pgsql { /etc/dovecot/dovecot-pgsql.conf }
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0660
user = postfix
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = mail
}
}
}
but the same configuration on the newer version 1.0.5 does not work, the problem being in mail location (note changed from default_mail_location to mail_location). so i had to make a number of changes...
## Dovecot configuration file base_dir = /var/lib/dovecot/ protocols = imap pop3 imaps disable_plaintext_auth = no log_path = /var/log/dovecot/error.log info_log_path = /var/log/dovecot/info.log ssl_cert_file = /etc/pki/tls/certs/dovecot.pem ssl_key_file = /etc/pki/tls/private/dovecot.pem login_dir = /var/lib/dovecot/login mail_location = maildir:/var/spool/mail/%d/%n: namespace private { prefix = location = maildir:/var/spool/mail/%d/%n inbox = yes } mail_extra_groups = mail first_valid_uid = 60000 last_valid_uid = 60000 first_valid_gid=15 last_valid_gid=15 maildir_copy_with_hardlinks = yes maildir_copy_preserve_filename = yes mbox_read_locks = fcntl mbox_write_locks = fcntl protocol imap { login_greeting_capability = yes } protocol pop3 { pop3_uidl_format = %08Xu%08Xv pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } protocol lda { postmaster_address = postmaster@example.com } auth default { mechanisms = login plain digest-md5 passdb sql { args = /etc/postfix/mysql/dovecot.conf } userdb sql { args = /etc/postfix/mysql/dovecot.conf }
socket listen { master { path = /var/lib/dovecot/auth-master mode = 0660 user = nobody group = mail }
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = mail
}
} }
dict { }
plugin { }
or from the dovecot -n command:
# 1.0.5: /etc/dovecot.conf base_dir: /var/lib/dovecot/ log_path: /var/log/dovecot/error.log info_log_path: /var/log/dovecot/info.log protocols: imap pop3 imaps ssl_cert_file: /etc/pki/tls/certs/dovecot.pem ssl_key_file: /etc/pki/tls/private/dovecot.pem disable_plaintext_auth: no login_dir: /var/lib/dovecot/login login_executable(default): /usr/lib64/dovecot/imap-login login_executable(imap): /usr/lib64/dovecot/imap-login login_executable(pop3): /usr/lib64/dovecot/pop3-login login_greeting_capability(default): yes login_greeting_capability(imap): yes login_greeting_capability(pop3): no first_valid_uid: 60000 last_valid_uid: 60000 first_valid_gid: 15 last_valid_gid: 15 mail_extra_groups: mail mail_location: maildir:/var/spool/mail/%d/%n: maildir_copy_with_hardlinks: yes maildir_copy_preserve_filename: yes mbox_write_locks: fcntl mail_executable(default): /usr/lib64/dovecot/imap mail_executable(imap): /usr/lib64/dovecot/imap mail_executable(pop3): /usr/lib64/dovecot/pop3 mail_plugin_dir(default): /usr/share/dovecot//imap mail_plugin_dir(imap): /usr/share/dovecot//imap mail_plugin_dir(pop3): /usr/share/dovecot//pop3 pop3_uidl_format(default): pop3_uidl_format(imap): pop3_uidl_format(pop3): %08Xu%08Xv pop3_client_workarounds(default): pop3_client_workarounds(imap): pop3_client_workarounds(pop3): outlook-no-nuls oe-ns-eoh namespace: type: private location: maildir:/var/spool/mail/%d/%n inbox: yes auth default: mechanisms: login plain digest-md5 passdb: driver: sql args: /etc/postfix/mysql/dovecot.conf userdb: driver: sql args: /etc/postfix/mysql/dovecot.conf socket: type: listen client: path: /var/spool/postfix/private/auth mode: 432 user: postfix group: mail master: path: /var/lib/dovecot/auth-master mode: 432 user: nobody group: mail
what i found was that i HAD to add a namespace in order to be able to define my maildir location. that was ok, /*except */that the mail_location value is no longer being used for the pop3 server mail location. so i could pick up mail using IMAP no problem, but POP wasn't working. after a number of hours i modified my SQL script with 'CONCAT(path, maildir)' so that the 'mail' path is returned complete from the sql statement:
in my initial SQL statement, works on the old server and the new version 1.0.5 IMAP as:
user_query = SELECT maildir AS mail, 60000 AS uid, 15 AS gid FROM mailbox WHERE username = '%u' AND active='1'
but in order to get the POP3 version working i had to change it thus:
user_query = SELECT CONCAT('/var/spool/mail/', maildir) AS mail, 65534 AS uid, 12 AS gid FROM mailbox WHERE username = '%u' AND active='1'
one would have expected changing the SQL statement to this new format would have resulted in a location for the IMAP server now being constructed as:
/var/spool/mail/var/spool/mail/domain/user
but that did not happen. they both (POP & IMAP) now can find the mail and folders.
like i said, thanks very much for writing this s/ware. it is great...but needs some tweaking.
thanks for listening
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Tue, 30 Oct 2007, Robert Heller wrote:
http://wiki.dovecot.org/Authentication/MasterUsers to the letter and it works ^^^^^^^^^^^^^ for neither the old server nor the new. specifically i was using the first example configuration. all i ever got was:
login him@mailserver.com*theboss thebossespwd login BAD Error in IMAP command received by server.
Although you followed the example "to the letter", you didn't followed the example "to the digit". The webpage clearly has a "1" before the login command, which is required, how about reading RFC3501.
and the auth_debug information was completely useless. if someone goes to the trouble of writing great examples they really should test to make sure they actually work.
Following examples is another matter.
secondly:
mail_location = maildir:/var/spool/mail/%d/%n:
namespace private { prefix = location = maildir:/var/spool/mail/%d/%n inbox = yes }
Is this really a maildir or the location of a flar-file INBOX? What happens if you remove the colon at the end of the line? Which Maildir-location is logged when a POP3-user logins in opposite to a IMAP user?
BTW:
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux)
iQEVAwUBRyr78S9SORjhbDpvAQK69Af/VklKI62kCyDt0uuukytsJtEVabhHeUKw KnxkAMSDAyx0MAkNK1CG+7k05Qqhjo1zSLn5QsQV0vToKrd2f3S9FjbuxYGmc50E CmEHsMvRt5yd83S8snoDz6mWEnXMGDDMEumYvENjYOxvnciXtLFWA5NzAChfiBEI qglKn0eN5Od+/PXMD+Ynh7xtofP36qguPX9KaeL7ymOGUFZkbJr+ZboVQJ6W6v/n eUDF9RTiyGVxp9PVry9AbQWTMJQmyJ2cCmA8IS8AW7Z5+C/6W3NXGmEiYGZQJP40 U5zCdRun/JlzbW83zofrRhwob1Hbs1JL+xxWjNv7zTOH0cbGnHOlOw== =vPXW -----END PGP SIGNATURE-----
participants (2)
-
Robert Heller
-
Steffen Kaiser