我怎样才能拥有超过 255 个字符的 SPF 记录?

dua*_*ane 16 domain-name-system spf

因此,我一直认为单个 SPF 条目必须适合 255 个字符,或者使用include运算符将多个条目链接在一起形成一个链。但是,RFC 4408 3.1.3。特别指出在评估之前必须连接多个字符串 - 因此,IN TXT "v=spf1" " 1.2.3.4 -all"必须与IN TXT "v=spf1 1.2.3.4 -all". 值得注意的是,这允许任意大的 SPF 记录,并include成为包含其他人管理的 SPF 记录的工具。

这是对规范的正确解释吗?更重要的是,当前的邮件服务器会尊重这种多字符串类型的 TXT 记录吗?

pat*_* o. 20

是的,您正在正确解释它。我最近处理了这个问题。

这篇文章对我很有帮助:

我可以拥有超过 255 个字符的 TXT 或 SPF 记录吗?

这个概念在实践中的一个显着例子是截至 2016 年 2 月 25 日 cisco.com 的 SPF 记录:

> ;; QUESTION SECTION: ;cisco.com.                     IN      TXT
> 
> ;; ANSWER SECTION: cisco.com.              12775   IN      TXT    
> "926723159-3188410" cisco.com.              12775   IN      TXT    
> "v=spf1 ip4:173.37.147.224/27 ip4:173.37.142.64/26
> ip4:173.38.212.128/27 ip4:173.38.203.0/24 ip4:64.100.0.0/14
> ip4:72.163.7.160/27 ip4:72.163.197.0/24 ip4:144.254.0.0/16
> ip4:66.187.208.0/20 ip4:173.37.86.0/24" " ip4:64.104.206.0/24
> ip4:64.104.15.96/27 ip4:64.102.19.192/26 ip4:144.254.15.96/27
> ip4:173.36.137.128/26 ip4:173.36.130.0/24 mx:res.cisco.com
> mx:sco.cisco.com ~all" cisco.com.              12775   IN      TXT    
> "MS=ms65960035"
Run Code Online (Sandbox Code Playgroud)

正如您已经指出的那样,只需确保您考虑了记录中的空格。

另外,请记住,您需要根据SPF RFC将记录中的 DNS 查找次数限制为 10 :

SPF 实现必须将进行 DNS 查找的机制和修饰符的数量限制为每次 SPF 检查最多 10 个,包括由使用“包含”机制或“重定向”修饰符引起的任何查找。如果在检查过程中超过了这个数字,必须返回 PermError。

  • 至少截至 2019 年 2 月 27 日,思科不再对 SPF 使用多字符串 TXT 记录,而是通过 include 语句使用 SPF 记录链接。对于那些感兴趣的人,这里解释了记录链接:https://help.blacknight.com/hc/en-us/articles/212512389-Creating-large-SPF-records-with-many-entries。 (2认同)