在将 Ubuntu dist 从 10.04 升级到 12.04 之后,我的虚拟用户 postfix / dovecot 安装仅提供“PLAIN” SMTP 身份验证机制。
它曾经提供 PLAIN + LOGIN 机制,并且我尝试了所有方法来恢复 LOGIN 机制,但就是不行。
如果没有“LOGIN”版本,许多基于 MS 的客户端(Windows Live、Outlook Express)将无法再使用 SMTP Auth 发送邮件。我不得不将它们的 IP 地址放入我的“mynetworks”列表中。
我甚至尝试使用 12.04.1 从头开始设置 postfix+dovecot+virtual users smtp 服务器,认为这与升级有关,但在新系统上除了 AUTH PLAIN 之外什么也无法提供。
是否有人在 12.04 上成功设置了可以正常工作的 postfix + dovecot + 虚拟用户邮件服务器,并且可以正确执行 SMTP Auth?
我当前的 dovecot 配置:http://pastie.org/5651874
和当前的 postfix 配置:http://pastie.org/5651882
。
仅供参考,以下是我尝试过的配置的摘录:
(A):
/etc/dovecot/conf.d/10-auth.conf:
auth_mechanisms = plain login
/etc/dovecot/conf.d/10-master.conf:
service auth {
unix_listener auth-userdb {
}
inet_listener {
port = 12345
}
}
/etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = inet:127.0.0.1:12345
结果是
... warning: SASL: Connect to inet:127.0.0.1:12345 failed: Connection refused
... fatal: no SASL authentication mechanisms
来自我的日志。
。
。
以及(B):
/etc/dovecot/conf.d/10-auth.conf:
auth_mechanisms = plain login
/etc/dovecot/conf.d/10-master.conf:
service auth {
unix_listener auth-userdb {
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
/etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
导致仅提供 PLAIN 机制。
。
adaptr 在他的回答中引用的文档没有针对 Dovecot 2 的 UNIX 套接字样式配置的任何示例,所以我希望有更多经验的人可以在这里指导我。
答案1
嗯,从我发布的配置来看,您从未设置过 Dovecot 的auth_mechanisms = plain login
,因此使用了默认的auth_mechanisms = plain
。尝试更新该设置并重新启动 Dovecot,然后重新检查 的输出doveconf -n
。
您的身份验证套接字设置对我来说似乎是正确的,Postfix 应该能够针对 Dovecot 进行 SASL 身份验证。
答案2
据记载,dovecot 必须宣传适当的机制。
答案3
我在 CentOS 6 上遇到了同样的问题,但问题的原因不同:
具有以下设置:
smtpd_tls_security_level = encrypt
在 main.cf 中剥离
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
来自 telnet 会话期间的 EHLO 输出。将其放入 master.cf 可恢复输出和预期行为:
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
我觉得这个解决方案值得分享,因为我在网上找到的至少三个教程都建议可以将这个设置包含在 main.cf 中。