PermError SPF 永久错误:超过 2 的无效查找限制

bht*_*oan 15 domain-name-system spf

我正在尝试在服务器上设置 SPF - 邮件工作正常并根据 mxtoolbox 和其他在线检查进行验证,但是当我使用http://www.kitterman.com/spf/validate.html检查时,出现错误:

PermError SPF Permanent Error: Void lookup limit of 2 exceeded
Run Code Online (Sandbox Code Playgroud)

我知道有 10 次查找的限制,但以前从未见过此错误。

SPF 记录是:

v=spf1 a mx ip4:IP1 ip4:IP2 ip6:IP3 include:spf-a.outlook.com 
include:spf-b.outlook.com include:spf-c.outlook.com 
include:spf.messaging.microsoft.com include:_spf.zdsys.com 
include:spf.mail.intercom.io -all 
Run Code Online (Sandbox Code Playgroud)

void 查找限制指的是什么?

Mic*_*ton 15

无效查找限制是在 RFC 7208引入的,指的是返回空响应(没有答案的 NOERROR)或 NXDOMAIN 响应的 DNS 查找。这是与 10 DNS 查找总计数不同的计数。

第 11.1 节末尾所述,在某些情况下,限制 DNS 查询返回肯定答案 (RCODE 0) 且答案计数为 0 或“名称错误”的“术语”数量可能很有用”(RCODE 3)回答。这些有时统称为“无效查找”。SPF 实现应该将“无效查找”限制为两个。实现可以选择使这样的限制可配置。在这种情况下,建议使用默认值 2。超过限制会产生“permerror”结果。

这旨在帮助防止错误或恶意的 SPF 记录导致基于 DNS 的拒绝服务攻击。

在您的情况下,有问题的部分似乎是:

include:spf.messaging.microsoft.com
Run Code Online (Sandbox Code Playgroud)

它的SPF记录是:

v=spf1 ptr:protection.outlook.com ptr:messaging.microsoft.com ptr:o365filtering.com -all
Run Code Online (Sandbox Code Playgroud)

如果查找所有这三个记录,则返回没有记录的 NOERROR 或 NXDOMAIN。

由于三个记录没有返回任何内容,您超出了无效查找限制 2,并且 SPF 记录失败。

  • 我发现至少在“python-spf”实现的情况下,执行的查找取决于正在验证的 IP 地址,因此不返回记录的查询数量会有所不同。由于域所有者无法控制需要验证哪些 IP 地址,因此 SPF 记录中的任何“a”或“mx”规范必须仅指向双栈名称,以防止虚假错误。 (2认同)