是否可以在 SPF 中一起 使用关键字 a、mx 和 include?

是否可以在 SPF 中一起 使用关键字 a、mx 和 include?

是否可以在同一个 SPF 记录中使用它们?例如:

值 TXT:v=spf1 mx a ptr ip4:46.16.60.0/23 a:cdmon.com mx:mail.solarmora.com include:srv.cat ~all

答案1

是的,你可以将所有这些关键字组合起来,只要确保不超过最大查找限制10 个地址记录查找https://www.rfc-editor.org/rfc/rfc7208#section-4.6.4

  • a 和 ptr 关键字导致一次查找
    • ptr 关键字已被弃用,不应再使用
  • mx 关键字导致的查找次数与 MX 记录返回的域一样多
  • 关键字include包括引用的 SPF 记录,即:
$ dig srv.cat TXT +short
"v=spf1 a a:include"

但由于域不存在,因此a:include会导致错误。include

答案2

从技术上讲,可以混合使用任何机制,但除ip4ip6机制之外的任何机制都会导致额外的 DNS 查找,并且 DNS 查询的总体限制为 10 次(RFC 7208, 4.6.4)。每条消息a都会引发一次额外查找,每条消息都会引发mx几次额外查找,具体取决于其背后的 MX 服务器数量。此外,include可能存在链式机制,这些机制也计入限制。

您应该仔细考虑哪些服务器真正从域发送电子邮件作为信封发件人并将您的 SPF 记录限制为仅包含所需的服务器。由于您的 SPF 记录现在已经整理好,因此您似乎不具备这方面的知识,并尝试添加所有内容以“以防万一”。该策略以 结尾~all,这使得其他所有内容仅软失败。这不能有效地防止滥用;请考虑使用-all

还,不使用ptrRFC 7208, 5.5):

注意:此机制速度慢,在 DNS 错误的情况下不如其他机制可靠,并且会给 .arpa 名称服务器带来很大负担。如果使用,必须为域的主机设置适当的 PTR 记录,并且该ptr机制应该是最后检查的机制之一。经过多年的 SPF 部署经验,人们得出结论,它是不必要的,应该使用更可靠的替代方案。然而,它仍然作为 SPF 协议的一部分使用,因此兼容的check_host() 实现必须支持它。

相关内容