从 Ubuntu 10.04 升级到 12.04.1 后,Postfix“AUTH-LOGIN”不再提供 smtp 身份验证

从 Ubuntu 10.04 升级到 12.04.1 后,Postfix“AUTH-LOGIN”不再提供 smtp 身份验证

在将 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 中。

相关内容