结合多个SPF记录,如何决定应使用哪种限定符?

时间:2018-11-30 02:28:33

标签: dns spam-prevention spf

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

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

我当前的记录如下:

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

Google's SPF的记录是:

  • include:_spf.google.com ~all

Mailchimp's SPF的记录是:

  • include:servers.mcsv.net ?all

Mailgun's 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和服务器发送电子邮件。

1 个答案:

答案 0 :(得分:2)

您当前的记录没有意义。规则是从左到右评估的,因此您的默认(all)机制应始终排在最后。

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

MailChimp的记录是愚蠢的( quelle Surprise ); ?all等同于根本没有SPF记录,但在这种情况下没有区别。

文学IP机制最快,因为它们不需要DNS查找即可进行检查,因此将它们放在第一位被认为是有礼貌的。

您不需要+,因为这是默认的限定词。

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

请勿使用+all;由于它给所有来源一个积极的pass结果,因此比没有SPF记录还要糟糕,这是非常不好的。 ?all与没有SPF相同,因此您也不应使用它。

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

如果您使用的是DMARC,我建议您使用此记录;如果您不使用DMARC,则我建议您使用此记录,但是-all

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

无论最终结果如何,请在Scott Kitterman's validator上进行检查。