Dovecot IMAP 身份验证失败

den*_*gsn 2 debian imap dovecot

每当我尝试连接到我的 Dovecot IMAP 服务器时,它都会给我一条消息,表明身份验证失败。此消息来自/var/log/mail.log文件:

Feb  7 15:22:17 celestine dovecot: imap-login: Disconnected (auth failed, 1 attempts in 2 secs): user=<celestine>, method=PLAIN, rip=::1, lip=::1, TLS, session=<QsPvvtbx5AAAAAAAAAAAAAAAAAAAAAAB>
Run Code Online (Sandbox Code Playgroud)

我尝试连接 Roundcube 网络邮件程序,在 IMAP 日志中它显示以下内容:

[07-Feb-2014 15:22:15 -0500]: [A4F2] S: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
[07-Feb-2014 15:22:15 -0500]: [A4F2] C: A0001 ID ("name" "Roundcube" "version" "0.9.5" "php" "5.4.4-14+deb7u7" "os" "Linux" "command" "/")
[07-Feb-2014 15:22:15 -0500]: [A4F2] S: * ID NIL
[07-Feb-2014 15:22:15 -0500]: [A4F2] S: A0001 OK ID completed.
[07-Feb-2014 15:22:15 -0500]: [A4F2] C: A0002 AUTHENTICATE PLAIN AGNlbGVzdGluZQAxMDA5OTU=
[07-Feb-2014 15:22:17 -0500]: [A4F2] S: A0002 NO [AUTHENTICATIONFAILED] Authentication failed.
Run Code Online (Sandbox Code Playgroud)

如果我尝试连接另一个程序,它也无法工作。

我启用了 SSL,因此我的 IMAP 服务器在端口 993 上运行。以下是我的/etc/dovecot/dovecot.conf

disable_plaintext_auth = no
mail_privileged_group = mail
mail_location = mbox:~/mail:INBOX=/var/mail/%u
userdb {
  driver = passwd
}
passdb {
  driver = passwd
}

protocols = "imap"

protocol imap {
  mail_plugins = " autocreate"
}
plugin {
  autocreate = Trash
  autocreate2 = Sent
  autosubscribe = Trash
  autosubscribe2 = Sent
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}

ssl = required
ssl_cert = </etc/ssl/localcerts/mail.pem
ssl_key = </etc/ssl/localcerts/mail.key
Run Code Online (Sandbox Code Playgroud)

我正在使用安装了 Postfix 的 Debian Squeeze。

小智 7

首先,我假设用户celestine(密码100995)在您的系统中设置正确(只需检查登录是否成功,没有进一步的错误/警告)。

根据您的 dovecot.conf,您使用带有passwd 的查找数据库设置了服务器身份验证过程。这很好作为用户数据库,但是使用 passwd 作为密码数据库,您无法在 Debian 上获取用户的密码,如官方 Dovecot 文档中所述:

hxxp://wiki2.dovecot.org/AuthDatabase/Passwd :

最常用作用户数据库。现在许多系统都使用影子密码,因此它通常不能用作密码数据库。

你可以解决这个问题

passdb {
  driver = shadow
}
Run Code Online (Sandbox Code Playgroud)

另一种可能性是将 passdb 与Passwd-file一起使用,但我建议您使用 PAM设置 Dovecot 身份验证系统。

祝你好运,麦戈丁