Postfix 对于“中继访问被拒绝”返回临时错误代码 (4xx) 而不是永久错误代码 (5xx),这导致 MX 不断重试:
日志:
postfix/smtpd[14279]: connect from unknown[10.244.x.x]
postfix/smtpd[14279]: NOQUEUE: reject: RCPT from unknown[10.244.x.x]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mx.somewhere.com>
postfix/smtpd[14279]: disconnect from unknown[10.244.x.x]
相关配置:
smtpd_recipient_restrictions =
reject_unauth_destination
reject_unknown_reverse_client_hostname,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_invalid_hostname,
reject_rbl_client zen.spamhaus.org,
permit
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual
我希望 Postfix 回复 554 错误,这样远程服务器就不会重试那些永远不会起作用的操作。
答案1
数字响应代码reject_unauth_destination
由参数定义relay_domains_reject_code
,但这是默认的。554已经。因此我怀疑reject_unauth_destination
您的服务器上从未触发过。请检查(略新)的当前配置值smtpd_relay_restrictions
参数输入:
postconf smtpd_relay_restrictions
这些中继限制已检查前您的收件人限制,其默认为:
permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
此默认设置defer_unauth_destination
将发送非- 永久错误代码。如果是这种情况,只需更改配置并将reject_unauth_destination置于中继限制之下。您现在可以将其从收件人限制中删除:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
smtpd_recipient_restrictions =
reject_unknown_reverse_client_hostname
reject_invalid_helo_hostname
reject_non_fqdn_helo_hostname
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unknown_sender_domain
reject_unknown_recipient_domain
reject_rbl_client zen.spamhaus.org
permit
我还删除了它,因为这是您已经指定的值reject_invalid_hostname
的旧名称(Postfix <2.3) 。reject_invalid_helo_hostname
您可以在此处找到所有限制列表的说明、检查限制的顺序以及何时跳过限制:Postfix SMTP 中继和访问控制
答案2
Hostname 似乎没有您的 SMTP 可以解析的指定服务器中的 DNS 记录。因此,SMTP 会根据 Postfix 的 SMTP 配置“reject_unknown_reverse_client_hostname”阻止它。
因此,请尝试添加您要从 SMTP 服务器中继电子邮件的主机的 DNS 条目。
否则,尝试删除与检查 FQDN 相关的参数,或者可能还需要检查域相关的内容。