在 SPF 记录中,该-all
选项的意思是“我只将在此处明确列出的机器/域列入白名单,并且没有其他服务器可以为该域发送电子邮件。”
include:
那么,当一个人在 SPF 记录中使用选项来包含第二个 SPF 记录时,这意味着什么?次要的SPF 记录有-all
什么作用?
答案1
包含机制将触发对包含记录的递归评估。如果此评估失败(例如,包含记录中的 -all),则包含机制的结果将被视为“不匹配”。因此,实际上,包含的 SPF 记录中的 -all 机制(或任何其他带有 - 限定符的机制)对主记录的评估没有任何影响。
有关包含机制如何影响主记录评估的完整概述,请参阅 RFC 7208 第 5.2 节中的表格(https://www.rfc-editor.org/rfc/rfc7208#section-5.2)
答案2
要通过 SPF 检查,发送 IP 地址必须通过至少一种机制。包含机制使用包含的 SPF 记录测试传入 IP 地址并“返回”结果。
使用你的例子:
a.example.com IN TXT "v=spf1 include:b.example.com +all"
b.example.com IN TXT "v=spf1 -all"
被包含的记录将返回失败,因为它只包含一个-all
机制。但是,第一条记录将通过,因为它有一个+all
机制。
使用更详细的例子:
a.example.com IN TXT "v=spf1 ip4:1.2.3.4 mx include:spf.example.org -all"
a.example.com IN MX 0 mailserver.example.com
mailserver.example.com IN A 1.2.3.5
spf.example.org IN TXT "v=spf1 ip4:4.3.0.0/16 -all"
我将按照记录中指定的顺序写下每个机制的结果。因此,结果的格式如下:
- a.example.com:
[ip4] [mx] [include] [-all]
- spf.example.org:
[ip4] [-all]
使用以下发件人地址:
1.2.3.4
- spf.example.org->
fail fail
- a.example.com ->
pass fail fail fail
最终结果将是pass
,因为至少有一项检查通过
1.2.3.5
- spf.example.org->
fail fail
- a.example.com ->
fail pass fail fail
最终结果将是pass
,因为至少有一项检查通过
4.3.10.20
- spf.example.org->
pass fail
- a.example.com ->
fail fail pass fail
最终结果将是pass
,因为至少有一项检查通过
总结:包含机制将单独评估,并将结果传回包含它的记录的评估。如果没有匹配的机制,则记录评估失败。由于您以 结尾的示例+all
,它将始终匹配并因此通过。
答案3
在处理完所有包含内容后,对-all
末尾的进行解释。
其目的是传达如何处理未通过列出的资源发送的电子邮件。
-all
意味着将它们视为伪造品而予以丢弃,而~all
意味着它们可能仍然合法,应以更多的怀疑态度对待。