SPF 记录允许您将其他域的 SPF 记录包含在您自己的记录中。例如,example.com
您可以include:_spf.google.com
在其 SPF 记录中包含 的所有 SPF 规则_spf.google.com
。
所包含规则的mx
和 普通a
(没有)部分会发生什么情况?:hostname
example.com
将mx
被解析为 MX 记录_spf.google.com
或example.com
?
(是的,我知道没有 MX 记录_spf.google.com
,但我只是想举一个明显的include:
例子,但针对的是存在 MX 记录的情况)
答案1
首先,为了澄清一下include
,RFC 4408 第 5.2 节规定:
仅使用所引用的 SPF 记录的评估结果,而不是好像所引用的 SPF 记录实际上包含在第一个中。
至于d 记录MX
中的 RR是否include
指的是您的MX
,还是d 域MX
的include
,我很高兴地承认OpenSPF 的协议页面对这个问题毫无帮助,因为他们的示例对源记录和包含的记录使用了相同的域。但是 RFC 写得(非常)清楚一些(同样在 s5.2 中):
“包含”机制触发 check_host() 的递归评估。 域规范按照第 8 节进行扩展。然后使用结果字符串作为 <domain> 来评估 check_host()。<ip> 和 <sender> 参数与 check_host() 的当前评估保持相同。
mx
我已将我理解为在 d 域上下文中评估和类似记录的部分突出显示include
。但由于没有什么比真实数据更好,我在我的一个家庭域中定义了以下子域(waide.me.uk
,感谢临时借用!):
foo IN TXT "v=spf1 include:bar.waide.me.uk -all"
foo IN A 10.5.5.5
bar IN TXT "v=spf1 mx -all"
bar IN MX 5 baz.bar
baz.bar IN A 78.46.204.154
当我使用贝弗里奇测试仪(openspf.org 建议),它表示来自[email protected]
的邮件78.46.204.154
是 SPF 通行证。请注意,没有提到该地址任何地方在foo.waide.me.uk
那里是记录MX
中的参考,但bar.waide.me.uk
included
foo.waide.me.uk
没有 MX。如果d 记录MX
中的include
没有在 d 域的上下文中进行评估include
(bar.waide.me.uk
),则根本无法解析。
并且为了完整起见,当我include
从foo.waide.me.uk
SPF 记录中删除时,正如我们现在所预料的那样,Beveridge 会报告失败。