我的公司使用 Office 365 来收发电子邮件,但我们也从我们的某个服务器的 IP 地址发送电子邮件。我的 TXT 记录是:
v=spf1 ip4:XXX.XX.XX.XXX include:spf.protection.outlook.com -all
(XXX.XX.XX.XXX 是我们发送邮件的服务器 IP 地址)
然而,当我们发送到某些外部电子邮件时,我们会收到退回邮件,内容如下:
There was a SMTP communication problem with the recipient's email server. Please contact your system administrator.
<srvexch.network.local #5.5.0 smtp;550 SPF check failed. Sender not authorized>
但我们并非从所有外部电子邮件中都获得该信息,只能从部分外部电子邮件中获取。
我是新手,我的 txt 记录中是否有某些内容可能会导致退回?
答案1
您的 SPF 记录看起来不错,但我们无法知道您是否确实从记录中列出的 IP 地址发送电子邮件(您需要提供标头和未混淆的 SPF TXT 记录)。您可以查看退回邮件的标头并自行进行比较。
include 指令正确解析:spf.protection.outlook.com。3600 IN TXT“v=spf1 include:spf-a.outlook.com include:spf-b.outlook.com include:spf-c.outlook.com include:spf.messaging.microsoft.com -all”
这可能只是特定收件人 MTA 的一个暂时性问题。
如果您继续遇到问题,您可以考虑将最终的 SPF 匹配更改为 ~all(软失败),但如果您的 SPF 记录正确且维护良好,则 -all 是更好的选择。
答案2
页总是有助于故障排除。Mark 是对的,需要从标头确认原始地址。此外,您分享的 SPF 有一个 ip4 和一个包含,这是实际情况吗?365 的一个陷阱是他们的“包含”会响应额外的 dns 查找,实际上大约 7 或 8 个。
SPF RFC 规定每条记录的 DNS 查询次数不得超过 10 次(?)。因此,您的域名为 [#1]、spf.protection.outlook.com [#2],其响应为 spf-a.outlook.com[#3]、spf-b.outlook.com[#4]、spf-c [#5],messaging.micro... 还有 3 个 [#6,7,8,]。因此,到目前为止,我们最多进行了 8 次查询。您的域名还有其他包含项吗?他们还有其他查询吗?这个问题一直困扰着我们,直到我们将多个邮件源合并到一个中继服务中。
答案3
你试过了吗include:outlook.com
?该 URL 看起来不适合发送。
查看文档,大部分都是说使用 outlook.com。