我最近按照 linode.com 上的说明设置了一个邮件服务器(https://library.linode.com/email/postfix/postfix2.9.6-dovecot2.0.19-mysql),只不过我使用的是postgreSQL而不是mySQL。
除了我无法从邮件客户端(Mac Mail)向外部地址发送电子邮件外,服务器的所有功能均正常运行。当我尝试向外部地址发送消息时,postfix 出现以下错误:
NOQUEUE: reject: RCPT from comcast.net[174.51.xxx.xx]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[10.0.0.15]>
(请注意,我删除了发件人的 IP 地址)
我已将其配置为使用 dovecot 作为身份验证机制。在 dovecot 日志中我得到:
Oct 23 16:44:31 auth: Debug: client in: AUTH 2 PLAIN service=smtp nologin lip=50.116.xx.xx rip=174.51.xxx.xx secured resp=<hidden>
Oct 23 16:44:31 auth: Debug: sql([email protected],174.51.xxx.xx): query: SELECT email as user, password FROM virtual_users WHERE email='[email protected]';
Oct 23 16:44:31 auth: Debug: client out: OK 2 [email protected]
因此,看起来 dovecot 批准了用户名和密码,但 postfix 仍将其视为已被拒绝。有人知道发生了什么吗?或者我可以进一步调试吗?
谢谢!
答案1
我可以通过将 postfix main.cf 配置更改为以下内容来解决我的问题:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
defer_unauth_destination
而不是使用smtpd_recipient_resrictions
事实证明,在 postfix 2.10.0 之后,smtpd_relay_restrictions
应该使用 而不是smtpd_recipient_restrictions
. (smtpd_recipient_restrictions
现在应该仅用于垃圾邮件限制)。
更多信息: http://de.postfix.org/ftpmirror/official/postfix-2.10.0.RELEASE_NOTES