我想更新和简化我的域的 SPF 记录。不幸的是,http://www.openspf.org/SPF_Record_Syntax不清楚。
我的域使用一个 MX 中继进行接收和发送。SPF 规则就这么简单v=spf1 mx -all
。这将禁止从任何其他来源发送邮件。
我遇到的问题是一个用户使用它的提供者(belgacom.be)进行外发邮件中继。提供者当前的 SPF 规则如下:v=spf1 mx include:ispmail.spf.secure-mail.be include:bgc.spf.secure-mail.be include:bgcpartners.spf.secure-mail.be ~all
我很想将我的 SPF 规则定义为v=spf1 mx include:belgacom.be -all
,但不清楚~all
包含的 SPF 规则中的 SPF 规则会做什么。belgacom.be 的规则包含的规则也有一个~all
. 包含的规则中的会~all
被视为匹配并且我-all
会被忽略吗?
编辑:找到测试工具http://www.kitterman.com/spf/validate.html。通过添加include:belgacom.be
我得到Permanent Error SPF Permanent Error: Too many DNS lookups
. 包含的问题~all
仍然悬而未决。
SPF 中的
include
机制有点用词不当,因为它实际上并未将引用记录的内容包含到主记录中。相反,引用的记录被单独评估,其
pass
/fail
结果被重新解释为include
amatch
或 anot match
(不再pass
/fail
!)。(有关所有情况,请参阅SPF 规范部分中的转换表。)
include
因此,就像其他机制一样,它是可选的限定符前缀(默认
+
),include
它决定了当机制匹配时它的实际含义。简单的非
include
示例:ip4:192.0.2.1
(aka+ip4:192.0.2.1
) 表示如果客户端的 IPv4 地址是192.0.2.1
,那么结果是pass
。-ip:192.0.2.1
表示如果客户端的 IPv4 地址是192.0.2.1
,那么结果是fail
。include
例子:include:foo.example.com
(aka+include:foo.example.com
) 表示如果 SPF 记录的评估foo.example.com
结果为pass
,这意味着include
是匹配的,因此根据 this 的限定符设置结果include
,因此pass
。-include:foo.example.com
表示如果 SPF 记录的评估foo.example.com
结果为pass
,这意味着包含是匹配的,因此根据 this 的限定符设置结果include
,因此fail
.