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


49

这是有关设置SPF记录规范问题

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

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

  1. 输入可能为该域发送或中继邮件的任何其他域
  2. 输入CIDR格式的任何IP地址,用于该域发起或中继邮件的网络块
  3. 输入可以为该域发送或中继邮件的任何其他主机
  4. 知道SPF的MTA应该如何严格?

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

Answers:


68

SPF记录详细信息,允许哪些服务器为您的域发送邮件。

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

各个问题确实可以帮助您分解列表。

  1. 询问您的邮件服务器可以中继您邮件的其他;例如,如果您在mail-relay.example.org上具有辅助MX服务器,而该服务器是域的主要邮件服务器(MX记录)example.org,则应输入mx:example.org。在几乎所有情况下(mx),您的SPF记录都应包括您自己域的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(无答案)与~all(qv)一样无用,并且+all是可憎的。

~all是简单的选择;它告诉人们您列出了一组有权发送您邮件的系统,但是您并没有承诺该列表是详尽无遗的,因此来自您域的来自其他系统的邮件可能仍然合法。我敦促你不要那样做。这不仅使SPF变得毫无意义,而且SF上的某些邮件管理员故意将其SPF接收者配置为将其~all视为垃圾邮件发送者的标志。 如果你不想做-all,那就不用担心SPF了

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

谷歌是众所周知提醒

发布使用-all而不是〜all的SPF记录可能会导致传递问题。

是的,可能会;这就是SPF的重点。我们无法确定为什么Google会提供此建议,但是我强烈怀疑这是为了防止不知道自己的电子邮件确切来源的系统管理员自己造成传送问题。 如果您不知道所有电子邮件的来源,请不要使用SPF。如果要使用SPF,请使用列出所有来自SPF的地方,并告诉世界您对该列表充满信心-all

请注意,这些都没有绑定到收件人的服务器上。您宣传SPF记录的事实绝不会迫使其他任何人兑现它。任何给定邮件服务器的管理员都可以选择接受还是拒绝电子邮件。我认为SPF所做的是允许您对声称来自您的域的电子邮件承担任何其他责任,但不是。任何邮件管理员向您抱怨,如果您的域没有检查您广告中的SPF记录,而您的域却向他们发送了垃圾邮件,那本来告诉他们应该拒绝该电子邮件的,则可以在他们的耳中轻而易举地发送出去。


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

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

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


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

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

SPF主要是一种防止乔装工作的技术,但某些人似乎已经开始使用它来检测垃圾邮件。其中一些可能确实对您根本没有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是一件好事,如果您当前的邮件结构允许,则应该公布一条记录,但是要给出一个关于整个互联网有效的权威答案,这是非常困难的,有关人们如何使用为某人设计的DNS记录特定目的,当他们决定将其用于其他目的时。我可以肯定地说的是,如果您确实以的政策宣传SPF记录,-all但是却弄错了,很多人将永远看不到您的邮件。

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


感谢彻底而简单的答案(我显然需要)。您正确地指出我大部分时间都处于黑暗中,戴着邮局局长的帽子没事。一个后续问题:由于我们正在谈论的是一个很小的操作(总共大约有10-15个电子邮件帐户)-并且不发送大量邮件-这是我们暂时无法生存的事情,或者可能最终出现在很多垃圾邮件文件夹中?当我们进行群发邮件时,我们使用诸如mailchimp等服务
vulgarbulgar 2012年

〜all有两点好处:您所描述的1.“并非完全正确”场景。它使您能够在拉动最终触发器之前,以真实的方式进行所有设置,包括真实的测试。垃圾邮件分数。如果您确实无法控制所有邮件出口点,那么〜all都可以帮助与您的记录相匹配的系统提供垃圾邮件评分(当然:它们也可能损害那些软失败系统的垃圾邮件评分)。2.
Joel Coel 2013年

他们还可能损害收件人系统的分数,该系统的管理员将其~all视为整个域中的垃圾邮件指示符,而在SF中至少有一个。
MadHatter

2
@MadHatter对Edit2的一个特别评论:当前的SPF规范说您必须使用TXTSPF同时使用这两个(相同),提议的即将到来的SPF规范被放弃,SPF因为使用率低于预期,并且主要只是导致互操作性问题。考虑到这一点,似乎不建议只抬头看SPF
哈坎·林奎斯特

3
感谢事实,我大声嘲笑“ +所有人都是可憎的。”
jerclarke '16

3

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

如果您使用的是第三方(例如gmail)发送电子邮件,则必须包括如下这样的spf记录:include:_sspf.google.com(ajax向导似乎对此并不了解)。

对于“如何严格”,如果不确定,请保留“软失败”(〜all),否则,一旦配置干净,就可以使用“拒绝”(-all)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.