什么是 SPF 记录,如何配置它们?

vul*_*gar 54 domain-name-system email spf

这是一个关于设置SPF 记录规范问题

我有一个办公室,有许多计算机共享一个外部 IP(我不确定地址是静态的还是动态的)。每台计算机都使用 Outlook 通过 IMAP 连接到我们的邮件服务器。电子邮件由这些计算机发送和接收,一些用户也在他们的手机上发送和接收电子邮件。

我正在使用http://wizard.easyspf.com/生成 SPF 记录,但我不确定向导中的某些字段,特别是:

  1. 输入可以为此域发送或中继邮件的任何其他域
  2. 为该域发起或中继邮件的网络块输入 CIDR 格式的任何 IP 地址
  3. 输入可以为此域发送或中继邮件的任何其他主机
  4. 具有 SPF 意识的 MTA 应该如何严格处理这个问题?

前几个问题我相当确定...希望我提供了足够的信息。

Mad*_*ter 73

SPF 记录详细说明哪些服务器可以为您的域发送邮件。

问题 1-3 确实总结了 SPF 的全部要点:您应该列出所有有权发送来自您的域的邮件的服务器的地址。
如果此时您没有详尽的列表,则设置 SPF 记录通常不是一个好主意。此外,一个域只能有一个 SPF 记录,因此您需要将所有信息合并到一个记录中。

个别问题确实有助于为您分解清单。

  1. 向您询问其他域,其邮件服务器可能会中继来自您的邮件;如果您在 mail-relay.example.org 上有一个辅助 MX 服务器,并且它是域的主邮件服务器(MX 记录)example.org,那么您应该输入mx:example.org. 在几乎所有情况下,您的 SPF 记录都应包括您自己域的 MX 记录 ( mx)。
  2. 询问您的 ip netblocks。如果您的服务器位于 1.2.3.0/28,并且您的办公地址空间是 6.7.8.0/22,请输入ip4:1.2.3.0/28 ip4:6.7.8.0/22. IPv6 空间应添加为例如ip6:2a01:9900:0:4::/64.
  3. 如果(例如)您在其他人的办公室也有一台必须允许从您的域发送邮件的机器,请输入它,例如a:mail.remote.example.com

你的手机用户有问题。如果他们通过使用例如 SMTP AUTH 连接到您的邮件服务器并通过该服务器发送来发送电子邮件,那么您已经通过在 (2) 中列出邮件服务器的地址来处理它们。如果他们仅通过连接到任何邮件服务器的3G / HSDPA供应商的产品,那么你不能做SPF有意义的,直到你重新设计你的电子邮件基础设施,使您发送电子邮件从你打控制每点从电子邮件声称是互联网。

问题 4 有点不同,它询问收件人应该如何处理声称来自您的域但不是来自上面列出的系统之一的电子邮件。有几种法律回应,但唯一有趣的是~all(软失败)和-all(硬失败)。 ?all(no answer) 和~all(qv)一样没用,+all是可憎的。

~all是简单的选择;它告诉人们您列出了一堆有权向您发送邮件的系统,但您并未承诺该列表是详尽无遗的,因此来自您域的来自其他系统的邮件可能仍然是合法的。我劝你不要那样做。这不仅使 SPF 完全没有意义,而且 SF 上的一些邮件管理员故意将他们的 SPF 接收器配置~all为垃圾邮件发送者的标志。 如果你不打算这样做-all,根本不要理会SPF

-all是有用的选择;它告诉人们您已经列出了允许向您发送电子邮件的系统,并且没有其他系统有权这样做,因此他们可以拒绝来自您的 SPF 记录中未列出的系统的电子邮件。这是 SPF 的重点,但在激活它之前,您必须确保已列出所有有权向您发送或中继邮件的主机

谷歌是众所周知提醒

发布使用 -all 而不是 ~all 的 SPF 记录可能会导致交付问题。

嗯,是的,它可能;这就是 SPF 的全部意义所在。我们无法确定为什么 google 会给出这个建议,但我强烈怀疑这是为了防止系统管理员不知道他们的电子邮件究竟来自哪里而导致他们自己出现传送问题。 如果您不知道所有电子邮件的来源,请不要使用 SPF。如果您打算使用 SPF,请列出它的所有来源,并用-all.

请注意,这些都不会绑定到收件人的服务器上;您宣传 SPF 记录的事实绝不会迫使其他任何人遵守它。他们选择接受或拒绝什么电子邮件取决于任何给定邮件服务器的管理员。我认为 SPF 所做的是让您免除对声称来自您的域但并非来自您域的电子邮件的任何进一步责任。任何来找您的邮件管理员抱怨您的域正在向他们发送垃圾邮件,而他们却没有费心检查您宣传的 SPF 记录,这些记录会告诉他们应该拒绝电子邮件,他们可以公平地将跳蚤送走。


由于此答案已规范化,因此我最好对include和说几句话redirect。后者更简单;如果您的 SPF 记录,例如example.com,说redirect=example.org,则example.org的 SPF 记录将替换您自己的记录。example.org这些查找中也会替换您的域(例如,如果example.org的记录包含该mx机制,则MX查找应该在 上完成example.org,而不是在您自己的域上)。

include被广泛误解,正如标准的作者所指出的'include'这个名字选择不当”。如果您的 SPF 记录includeexample.orgs 的记录,那么example.org收件人应该检查 s 的记录,看它是否提供了任何理由(包括+all)接受您的电子邮件。如果是这样,您的邮件应该会通过。如果没有,收件人应继续处理您的 SPF 记录,直到登陆您的all机制。因此,在d 记录中-all,或者实际上任何其他使用allexcept对处理结果没有影响。+allinclude

有关 SPF 记录的更多信息,http://www.openspf.org是一个很好的资源。


请不要误会,但如果您的 SPF 记录有误,您可以阻止大部分互联网接收您的电子邮件,直到您修复它。您的问题,建议你可能不完全太子港既成事实与你在做什么,如果是这样的话,那么你可能要考虑寻求专业人士帮助你做一些事情,你停止发送电子邮件到非常多的人面前。

编辑:感谢您的客气话,非常感谢。

SPF 主要是一种防止joe-jobbing的技术,但有些人似乎已经开始使用它来尝试检测垃圾邮件。其中一些可能确实为您根本没有 SPF 记录或过于a:3.4.5.6/2 a:77.5.6.7/2 a:133.56.67.78/2 a:203.54.32.1/2宽泛的记录(例如,相当偷偷地等同于+all)赋予负值,但这取决于他们,您对此无能为力。

我个人认为 SPF 是一件好事,如果您当前的邮件结构允许,您应该发布一条记录,但是很难给出一个对整个互联网都有效的权威答案,说明人们如何使用专为特定目的,当他们决定将其用于不同目的时。我可以肯定地说,如果您确实使用 政策为 SPF 记录做广告-all,并且您弄错了,那么很多人将永远不会看到您的邮件。

编辑 2:根据评论删除,并使答案保持最新。

  • 谢谢你的真相,我对“+all 是可憎的”大声笑了起来。 (3认同)
  • @MadHatter 对 Edit2 的评论:[current SPF spec](http://tools.ietf.org/html/rfc4408#section-3.1.1) 说你必须使用`TXT` 或`SPF`应该使用两者(相同),建议的 [即将推出的 SPF 规范](http://tools.ietf.org/html/draft-ietf-spfbis-4408bis-21#section-3.1) 放弃了 `SPF`低于预期,主要是导致互操作性问题。考虑到这一点,只查找“SPF”似乎是不明智的。 (2认同)

Oli*_*r S 5

对您的设置而言重要的是最终将电子邮件发送到 Internet 的服务器的配置。您说您通过 SMTP 发送电子邮件。因此,就 IP 地址而言,重要的是您的 SMTP 服务器的配置(问题 2)

如果您使用第三方(例如 gmail)发送电子邮件,则必须像这样包含他们的 spf 记录:include:_spf.google.com(ajax 向导似乎不知道这一点)。

对于“多么严格”,如果您不确定,请保留“软失败”( ~all ),否则一旦您的配置干净,“拒绝”( -all )就是要走的路。