我在 Debian 上有一个 Postfix 邮件服务器。我的一个客户刚刚通知我,他们无法向我发送电子邮件,看来他们的邮件服务器有问题。我想向他们反馈实际问题,但我无法弄清楚。这是在退回的电子邮件中:
The address to which the message has not yet been delivered is:
[email protected]
Delay reason: SMTP error from remote mail server after RCPT
TO::
host dog.myhostname.com [{server_ip}]: 450 4.7.1
:
Recipient address rejected: SPF-Result=server.thehostingserver.co.uk:
'SERVFAIL' error on DNS 'TXT' lookup of 'server.thehostingserver.co.uk'
检查/var/log/mail.log
文件后,我发现以下几行与退回的电子邮件一致:
Dec 6 10:32:16 dog postfix/smtpd[366]: connect from unknown[37.26.106.210]
Dec 6 10:32:16 dog postfix/smtpd[366]: setting up TLS connection from unknown[37.26.106.210]
Dec 6 10:32:16 dog postfix/smtpd[366]: Anonymous TLS connection established from unknown[37.26.106.210]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
Dec 6 10:32:18 dog postfix/policy-spf[421]: Policy action=DEFER_IF_PERMIT SPF-Result=server.thehostingserver.co.uk: 'SERVFAIL' error on DNS 'TXT' lookup of 'server.thehostingserver.co.uk'
Dec 6 10:32:18 dog postfix/smtpd[366]: NOQUEUE: reject: RCPT from unknown[37.26.106.210]: 450 4.7.1 <[email protected]>: Recipient address rejected: SPF-Result=server.thehostingserver.co.uk: 'SERVFAIL' error on DNS 'TXT' lookup of 'server.thehostingserver.co.uk'; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<server.thehostingserver.co.uk>
我有点难以理解这一点。
1) 为什么显示“来自未知的连接”?此 IP 显然解析为server.oovavoohosting.co.uk
。(请注意,其他传入连接确实会正确显示其主机名)
# nslookup 37.26.106.210
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
210.106.26.37.in-addr.arpa name = server.oovavoohosting.co.uk.
Authoritative answers can be found from:
106.26.37.in-addr.arpa nameserver = ns1.racksrv.com.
106.26.37.in-addr.arpa nameserver = ns2.racksrv.com.
ns1.racksrv.com internet address = 37.26.104.214
ns2.racksrv.com internet address = 37.26.105.214
2) 如果上述 IP 解析为server.oovavoohosting.co.uk
,它从哪里获取主机名server.thehostingserver.co.uk
?我可以看到这个主机名不存在,这就是它返回 的原因SERVFAIL
,我只是不知道它来自哪里。
答案1
1)unknown
日志中的 表示 IP 的反向名称(server.oovavoohosting.co.uk
)没有转发解析到原始 IP 地址。
2) 远程服务器似乎将自己介绍为server.thehostingserver.co.uk
。查看日志,我看到了helo=server.thehostingserver.co.uk
,我将其解释为服务器在 SMTP 问候中使用的内容。
我查了资料才知道为什么 SPF 测试要用到这个在维基百科上看来这现在是一项强制性测试:
对于错误消息和其他自动回复中使用的空返回路径,必须进行 HELO 身份的 SPF 检查。
对于伪造的 HELO 身份,结果 NONE 不会有帮助,但对于有效的主机名,SPF 还可以保护 HELO 身份。此 SPF 功能始终作为接收方的选项得到支持,后来的 SPF 草案(包括最终规范)建议始终检查 HELO。
总之,一台连接到您的邮件服务器的服务器,并说
HELO server.thehostingserver.co.uk
在问候语中。然后,您的服务器查找 SPF 记录,如果未找到此服务器的 DNS 条目,则拒绝该邮件。