[Dovecot] 1.0.alpha3 plaintext authentication problem
Hello everyone,
Since the upgrade to 1.0.alpha3 I experience a strange problem with plaintext authentication. I successfully login first few (2-5) times after the dovecot restart, and then on a reason I cannot login any more (both via POP3 and IMAP). I tried to find out what could be the reason for this but I failed. Nothing is changed inside the user's home directory or /var/run/dovecot, but I cannot login any more. I guess there is something wrong inside dovecot-auth od dovecot process itself. I just start to receive "01 NO Authentication failed." or "-ERR Authentication failed." from dovecot and "Authenticate PLAIN failed: Unsupported authentication mechanism.: method=PLAIN" in my logs, even though I used the same PLAIN two minutes ago without a problem.
Here is my dovecot.conf:
nevoservice# egrep -v '^[ ]*(\#.*)?$' /usr/local/etc/dovecot.conf protocols = imap pop3 ssl_disable = no ssl_cert_file = /etc/mail/certs/server.crt ssl_key_file = /etc/mail/certs/server.key disable_plaintext_auth = no log_path = /var/log/dovecot/log info_log_path = /var/log/dovecot/info login_user = dovecot login_processes_count = 1 verbose_proctitle = no first_valid_gid = 0 mail_extra_groups = mail mail_debug=yes default_mail_env = mbox:/var/mail/%u maildir_copy_with_hardlinks = yes protocol imap { imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep } protocol pop3 { pop3_uidl_format = %08Xu%08Xv pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } auth_verbose = yes auth_debug = yes auth default { mechanisms = plain passdb passwd-file { args = /usr/local/etc/dovecot.passwd } userdb passwd-file { args = /usr/local/etc/dovecot.passwd } user = root }
Here are two lines in dovecot.passwd which define the user that I use:
wail:password-hash:1050:1032:Administrator wail.spb.ru:/home/wail.spb.ru:::/var/mail/wail wail@nevoservice.ispvds.com:password-hash:1050:1032:Administrator wail.spb.ru:/home/wail.spb.ru:::/var/mail/wail
A few lines from my /var/log/dovecot/info file:
dovecot: Oct 10 02:03:11 Info: auth(default): client in: AUTH 1
PLAIN service=POP3 lip=82.146.50.34 rip=82.146.63.23
resp=AHdhaWwAVGxNSFRuUlI2
dovecot: Oct 10 02:03:11 Info: auth(default): client out: OK 1
user=wail
dovecot: Oct 10 02:03:11 Info: auth(default): master in: REQUEST
3 53919 1
dovecot: Oct 10 02:03:11 Info: auth(default): master out: USER 3
wail uid=1050 gid=1032 home=/home/wail.spb.ru
mail=/var/mail/wail
dovecot: Oct 10 02:03:11 Info: pop3(wail): Effective uid=1050, gid=1032
dovecot: Oct 10 02:03:11 Info: pop3(wail): maildir autodetect:
stat(/var/mail/wail/cur) failed: Not a directory
dovecot: Oct 10 02:03:11 Info: pop3(wail): mbox autodetect:
data=/var/mail/wail
dovecot: Oct 10 02:03:11 Info: pop3(wail): mbox autodetect: INBOX file:
yes (/var/mail/wail)
dovecot: Oct 10 02:03:11 Info: pop3(wail): mbox: data=/var/mail/wail
dovecot: Oct 10 02:03:11 Info: pop3(wail): mbox: root exists
(/home/wail.spb.ru/mail)
dovecot: Oct 10 02:03:11 Info: pop3(wail): mbox:
root=/home/wail.spb.ru/mail, index=/home/wail.spb.ru/mail,
inbox=/var/mail/wail
dovecot: Oct 10 02:03:11 Info: pop3-login: Login: user=<wail>,
method=PLAIN, rip=82.146.63.23, lip=82.146.50.34
dovecot: Oct 10 02:03:13 Info: pop3(wail): Logout. top=0/0, retr=0/
del=0/3, size=5372
dovecot: Oct 10 02:03:20 Info: auth(default): client in: AUTH 1
PLAIN service=POP3 lip=82.146.50.34 rip=82.146.63.23
resp=AHdhaWwAVGxNSFRuUlI2
dovecot: Oct 10 02:03:20 Info: auth(default): client out: OK 1
user=wail
dovecot: Oct 10 02:03:20 Info: auth(default): master in: REQUEST
4 53918 1
dovecot: Oct 10 02:03:20 Info: auth(default): master out: USER 4
wail uid=1050 gid=1032 home=/home/wail.spb.ru
mail=/var/mail/wail
dovecot: Oct 10 02:03:20 Info: pop3(wail): Effective uid=1050, gid=1032
dovecot: Oct 10 02:03:20 Info: pop3(wail): maildir autodetect:
stat(/var/mail/wail/cur) failed: Not a directory
dovecot: Oct 10 02:03:20 Info: pop3(wail): mbox autodetect:
data=/var/mail/wail
dovecot: Oct 10 02:03:20 Info: pop3(wail): mbox autodetect: INBOX file:
yes (/var/mail/wail)
dovecot: Oct 10 02:03:20 Info: pop3(wail): mbox: data=/var/mail/wail
dovecot: Oct 10 02:03:20 Info: pop3(wail): mbox: root exists
(/home/wail.spb.ru/mail)
dovecot: Oct 10 02:03:20 Info: pop3(wail): mbox:
root=/home/wail.spb.ru/mail, index=/home/wail.spb.ru/mail,
inbox=/var/mail/wail
dovecot: Oct 10 02:03:20 Info: pop3-login: Login: user=<wail>,
method=PLAIN, rip=82.146.63.23, lip=82.146.50.34
dovecot: Oct 10 02:03:21 Info: pop3(wail): Logout. top=0/0, retr=0/
del=0/3, size=5372
dovecot: Oct 10 02:03:28 Info: pop3-login: Authenticate PLAIN failed:
Unsupported authentication mechanism.: method=PLAIN, rip=82.146.63.23,
lip=82.146.50.34
dovecot: Oct 10 02:03:30 Info: pop3-login: Aborted login: method=PLAIN,
rip=82.146.63.23, lip=82.146.50.34
We see here two successfull logins with PLAIN and then suddenly PLAIN becomes unsupported.
I run dovecot 1.0.alpha3 on FreeBSD 4.11, it was installed from ports and then I edited dovecot.conf (and created dovecot.passwd).
Any help would be really appreciated.
Sergey Redin.
On Mon, 2005-10-10 at 07:21 +0900, Sergey Redin wrote:
dovecot: Oct 10 02:03:28 Info: pop3-login: Authenticate PLAIN failed: Unsupported authentication mechanism.: method=PLAIN, rip=82.146.63.23, lip=82.146.50.34
We see here two successfull logins with PLAIN and then suddenly PLAIN becomes unsupported.
Strange. I tried to look at possible reasons for that in code, but didn't really see anything. When pop3-login process starts, it first connects to dovecot-auth using UNIX socket. dovecot-auth tells what mechanisms are available. I think the only way the above error could happen is if dovecot-auth didn't return the mechanism list. You don't happen to have multiple dovecot-auth processes running at the same time for some reason? Also maybe this patch will show a different error message? I'll commit it to CVS too: diff -u -r1.13 auth-server-connection.c --- src/lib-auth/auth-server-connection.c 14 Aug 2005 20:39:22 -0000 1.13 +++ src/lib-auth/auth-server-connection.c 28 Oct 2005 17:08:45 -0000 @@ -107,6 +107,11 @@ conn->available_auth_mechs_count = conn->auth_mechs_buf->used / sizeof(struct auth_mech_desc); + if (conn->available_auth_mechs_count == 0) { + i_error("BUG: Authentication server returned no mechanisms"); + return FALSE; + } + conn->handshake_received = TRUE; conn->client->conn_waiting_handshake_count--; update_available_auth_mechs(conn);
participants (2)
-
Sergey Redin
-
Timo Sirainen