每个参数的含义如下表所示:
参数描述v=spf1SPF 的版本。如果使用 Sender ID 的话,这个字段就应该是 v=spf2pre定义匹配时的返回值。可能的返回值包括: 返回值描述+缺省值。在测试完成的时候表示通过。-表示测试失败。这个值通常是 -all,表示没有其他任何匹配发生。~表示软失败,通常表示测试没有完成。?表示不置可否。这个值也通常在测试没有完成的时候使用。type定义使用的确认测试的类型。 可能的值包括: 候选值描述include包含一个给定的域名的测试以 include:domain 的形式书写。all终止测试序列。比如,如果选项是 -all,那么到达这条记录也就意味着测试失败了。但是如果无法确定,可以使用"?all"来表示,这样,测试将被接受。ip4使用 IPv4 进行验证。这个可以以 ip4:ipv4 或 ip4:ipv4/cidr 的形式使用。建议使用这个参数,以减少域名服务器的负荷。ip6使用 IPv6 进行验证。a使用一个域名进行验证。这将引起对域名服务器进行一次 A RR 查询。可以按照 a:domain, a:domain/cidr 或 a/cidr 的形式来使用。mx使用 DNS MX RR 进行验证。MX RR 定义了收信的 MTA,这可能和发信的 MTA 是不同的,这种情况基于 mx 的测试将会失败。 可以用 mx:domain, mx:domain/cidr 或 mx/cidr 这些形式进行 mx 验证。ptr使用域名服务器的 PTR RR 进行验证。这时,SPF 使用 PTR RR 和反向图进行查询。如果返回的主机名位于同一个域名之内,就验证通过了。这个参数的写法是 ptr:domainexist验证域名的存在性。可以写成 exist:domain 的形式。ext定义对 type 的可选扩展。如果没有这个字段,那么仅使用单个记录进行问询。mod这是最后的类型指示,作为记录的一个修正值。 修正值描述redirect重定向查询,使用给出的域名的 SPF 记录。以 redirect=domain 的方式使用。exp这条记录必须是最后一条,允许给出一条定制的失败消息。 IN TXT "v=spf1 mx -all exp=getlost.example.com" getlost IN TXT "You are not authorized to send mail for the domain" 嘿!我是 ISP ISP 实施 SPF 可能对于他们处于漫游状态(roaming)的用户带来一些麻烦,当这些用户习惯使用 POP-before-Relay 这样的方式处理邮件,而不是 SASL SMTP 的时候问题就会出现。 嗯,如果你是一个被垃圾邮件、地址欺骗所困扰的 ISP 的话,你就必须考虑你的邮件策略、开始使用 SPF 了。 这里是你可以考虑的几个步骤。 首先设置你的 MTA 使用 SASL,比如,你可以在端口 25 和 587 使用它。 告诉你的用户你已经使用了这个策略(spf.pobox.com 给出了一个通知的例子,参见参考文献)。 给你的用户一个宽限期,也就是说,把你的 SPF 记录加入到域名服务器之中,但使用“软失败”(~all)而不是“失败”(-all)。 这样,你就保护了你的服务器、你的客户和整个世界免受垃圾邮件之类的困扰了。 SPF 的官方站点上有很多信息,还等什么呢? 有什么需要担心的? SPF 是一个对于欺骗的完美保护。但它有一个局限:传统的邮件转发方式不再有效了。你不能仅仅从你的 MTA 接受邮件并简单地重新发送它了。你必须重写发送地址。常见的 MTA 的补丁可以在 SPF 的网站找到。换句话说,如果你把 SPF 记录加入到了域名服务器,你就必须更新你的 MTA 来进行发送地址改写,即使你还没有对 SPF 记录进行检查。 结论 你可能觉得 SPF 的实施有点难以理解。不过这确实不算复杂,而且还有一个不错的向导来帮你完成这个转换(参见参考文献)。 如果你被垃圾邮件所困扰的话,SPF 将可以帮助你,保护你的域名免受伪造邮件地址的影响,你所要做的仅仅是在域名服务器上添加一行文本并配置你的电子邮件服务器而已。 SPF 的优点有很多。不过,像我对一些人所说的,这不是一夜之间就可以达到的,SPF 的好处将通过日积月累来表现出来,当其他人都使用它的时候就能明显地看到了。 我也提到了 Sender ID,这和 SPF 有关,但我没有去解释它。可能你已经知道原因了,微软的策略一向如此---软件专利。在参考文献中,你可以看到 openspf.org 对于 Sender ID 的立场声明。 我仅仅希望给你一个 SPF 的简短说明。如果你对此感兴趣,想要了解更多信息的话,你可以看看参考文献,本文的内容就来自于此。 解决MT发送邮件通知给GMail遇到的SPF校验问题 blog系统有一个很有用的功能就是邮件发送留言通知:但是发送到GMail邮箱的通知信十有八九都会被标记为垃圾邮件。原因就是SPF:Sender Policy Framework (SPF) 要做发送人校验,而MT设置的发信人是留言者的邮件地址,而退信地址是MT系统所在服务器的邮箱。 Received-SPF: neutral (google.com: 60.195.249.163 is neither permitted nor denied by domain of apache@localhost.localdomain) 我的WEB服务器上没有任何邮件系统。所以无法通过SPF校验,有严格的SPF校验这也是GMail相对Spam比较少的原因。 如何解决呢: 1 增加邮件系统,设置MX记录等,需要学不少东西; 2 简单的就是先发到不支持SPF校验的邮件系统上,然后再转发给GMail,这时候的退信地址已经转发邮箱了: Received-SPF: pass (google.com: domain of #####@yeah.net designates 60.12.227.137 as permitted sender) 什么是SPF? SPF 是发送方策略框架 (Sender Policy Framework) 的缩写,正在逐步成为一个防伪标准,来防止伪造邮件地址。 您的域管理员或托管公司仅需在域名系统 (DNS) 中发布 SPF 记录。这些简单的文本记录标识了经过授权的电子邮件发送服务器(通过列出这些服务器的 IP 地址)。电子邮件接收系统会检查邮件是否来自经过正确授权的电子邮件发送服务器。检查步骤如下,发送人向接收方发送一封电子邮件后,邮件接收服务器接收电子邮件并执行如下操作: • 检查哪一个域声称发送了该邮件并检查该域的 SPF 记录的 DNS。 • 确定发送服务器的 IP 地址是否与 SPF 记录中的某个已发布 IP 地址相匹配。 • 对电子邮件进行打分:如果 IP 地址匹配,则邮件通过身份验证并获得一个正分。如果 IP 地址不匹配,则邮件无法通过身份验证并获得一个负分。然后,对现有的防垃圾邮件筛选策略和启发式筛选应用这些结果。 如何给邮件服务器增加SPF设置,请参考chicheng的文章: 《为你的mail server增加SPF记录》 什么是SPF 就是Sender Policy Framework。SPF可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。当你定义了你的domain name的SPF记录之后,接收邮件方会根据你的SPF记录来确定连接过来的IP地址是否被包含在SPF记录里面,如果在,则认为是一封正确的邮件,否则则认为是一封伪造的邮件。关于更详细的信息请参考RFC4408(http://www.ietf.org/rfc/rfc4408.txt ) 如何增加SPF记录 非常简单,在DNS里面添加TXT记录即可。登陆http://www.openspf.org/wizard.html 在里面输入你的域名,点击Begin,然后会自动得到你域名的一些相关信息。 a 你域名的A记录,一般选择yes,因为他有可能发出邮件。 mx 一般也是yes,MX服务器会有退信等。 ptr 选择no,官方建议的。 a: 有没有其他的二级域名?比如:bbs.extmail.org和www不在一台server上,则填入bbs.extmail.org。否则清空。 mx: 一般不会再有其他的mx记录了。 ip4: 你还有没有其他的ip发信?可能你的smtp服务器是独立出来的,那么就填入你的IP地址或者网段。 include: 如果有可能通过一个isp来发信,这个有自己的SPF记录,则填入这个isp的域名,比如:sina.com ~all: 意思是除了上面的,其他的都不认可。当然是yes了。 好了,点击Continue..... 自动生成了一条SPF记录,比如extmail.org的是 v=spf1 a mx ~all 并且在下面告诉你如何在你的bind里面添加一条 extmail.org. IN TXT "v=spf1 a mx ~all" 加入你的bind,然后ndc reload即可。 检查一下: dig -t txt extmail.org
转载于:https://www.cnblogs.com/zoro-zero/p/7543532.html