结合多个SPF记录,如何决定应该使用什么限定符?

Ryf*_*lex 2 dns spf spam-prevention

我不确定在尝试合并 SPF 记录时应该使用什么限定符。

我知道在 StackOverflow 上还有很多其他关于 SPF 记录正确的问题,但我找不到一个问题可以清楚地解释为什么当各种服务建议使用不同的限定符时应该使用某个限定符。

我目前的记录看起来像:

v=spf1 +a +mx +ip4:111.222.333.444 include:_spf.google.com ~all include:servers.mcsv.net ?all include:mailgun.org ~all

Google 的 SPF记录是:

  • include:_spf.google.com ~all

Mailchimp 的 SPF记录是:

  • include:servers.mcsv.net ?all

Mailgun 的 SPF记录是:

  • include:mailgun.org ~all

我应该如何决定什么资格用出来的+all-all~all?all

以下哪一项是正确的?

  1. v=spf1 +a +mx +ip4:111.222.333.444 include:_spf.google.com include:servers.mcsv.net include:mailgun.org ~all
  2. v=spf1 +a +mx +ip4:111.222.333.444 include:_spf.google.com include:servers.mcsv.net include:mailgun.org ?all
  3. v=spf1 +a +mx +ip4:111.222.333.444 include:_spf.google.com include:servers.mcsv.net include:mailgun.org +all
  4. v=spf1 +a +mx +ip4:111.222.333.444 include:_spf.google.com include:servers.mcsv.net include:mailgun.org -all

MX & A

同样的问题去运用+a+mx我需要包括那些呢?

+呢?

我是否需要在之前包含 + +a+mx以及+ip4

请记住,我们通过 Mailchimp、MailGun、Google 和服务器发送电子邮件。

Syn*_*hro 5

你目前的记录没有意义。规则是从左到右评估的,所以你的默认 (all ) 机制应该始终放在最后。

当您include创建外部 SPF 记录时,任何all它包含的操作都会被有效地忽略(因为它会被您自己的后续指令覆盖)。

MailChimp 的记录是愚蠢的(令人惊讶);?all相当于根本没有 SPF 记录,但在这种情况下没有区别。

文字 IP 机制是最快的,因为它们不需要 DNS 查找来检查,因此将它们放在首位被认为是礼貌的。

您不需要+在机制前面,因为这是默认限定符。

a机制的意思是“允许A此主机的记录返回的IP ”。类似地,mx意思是“允许从也是该域的邮件交换器(邮件服务器)的任何 IP 发送”。如果这些是真的,请添加它们。我建议把这些放在任何之前include机制因为它们只需要一次 DNS 查找,而且它们很可能已经被接收器缓存了。

你永远不应该使用+all; 它非常糟糕,因为它为所有来源提供了积极的pass结果,这比没有 SPF 记录更糟糕。?all与没有 SPF 相同,因此您也不应该使用它。

如果您还使用 DMARC,则应使用~all; 如果不是,请使用-all. 原因是 SPF 规则在 DMARC 之前进行评估,并且-all会在 DMARC 有机会做它的事情之前导致立即终止。然后可以将 DMARC 配置为拒绝任何获得 a 的内容softfail,并且其报告机制可以执行其应执行的操作。

如果您使用 DMARC,我会推荐此记录,如果您不使用,我会推荐此记录-all

v=spf1 ip4:111.222.333.444 a mx include:_spf.google.com include:servers.mcsv.net include:mailgun.org ~all
Run Code Online (Sandbox Code Playgroud)

无论你最终得到什么,都可以在Scott Kitterman 的验证器上查看。