SPF记录具体用法

SPF,发件人框架策略SPF是Sender Policy Framework(发件人框架策略)的缩写,从技术上防止别人盗用你的域名发送垃圾邮件,因为可以定义如果发送邮件的主机没有在SPF记录中时,邮件接收方可以拒收,减少域名邮箱被滥用,同时减少垃圾邮件的可能性。进而,我们的域名在邮件接收方那边被归为垃圾邮件的可能性也将减小,我们自己博客程序等发送出去的邮件,可尽量免于被接收方归类为垃圾邮件。

当然,每个邮件接收方都有自己的垃圾邮件处理机制,即使定义了SPF记录,也会有可能被认为是垃圾邮件,比如Google,会把自己系统发送的邮件归为垃圾邮件。换句话说,定义了SPF记录可以免于域名被滥用来发送垃圾邮件,不能保证正常发送的邮件不被标记为垃圾邮件。

创建SPF记录其实还是蛮简单的,就是给域名创建一条TXT记录,把需要从这个域名后缀发送邮件的机器都列出来即可,比如本博客使用的SPF记录

v=spf1 a:ezloo.com mx:ezloo.com include:_spf.google.com ip4:120.26.102.36 -all

SPF,发件人框架策略

详细用法

A机制

  • a
  • a/<prefix-length>
  • a:<domain>
  • a:<domain>/<prefix-length>

定义允许该域名A记录对应的机器发送邮件,如果不定义域名,那么就是本域名,同时也可以通过prefix-length定义IP段。

MX机制

  • mx
  • mx/<prefix-length>
  • mx:<domain>
  • mx:<domain>/<prefix-length>

MX机制与A机制类似,定义允许MX记录所对应的机器发送邮件。

IP4机制

  • ip4:<ip4-address>
  • ip4:<ip4-network>/<prefix-length>

定义允许该IP地址(段)发送邮件。

IP6机制

  • ip6:<ip6-address>
  • ip6:<ip6-network>/<prefix-length>

IP6机制与IP4机制类似。

include机制

include:<domain>

如果某一个域名定义了SFP记录,那么可以include该域名,就允许该域名下的SFP记录中的机器发送邮件。比如本站的SPF记录中有一条include:_spf.google.com,我们可以通过工具查询到_spf.google.com这个域名绑定的SFP记录为:v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all 。

做include的时候要注意,确保该域名下面有SPF记录,没有SPF记录的话,lookup的查询结果会是永久错误,一些邮件接收方会拒收从这类的邮件。

all机制

允许所有主机发送邮件。

前缀

  • "+" 通过,指定的主机允许发送邮件,收件方接收邮件。
  • "-" 失败,指定的主机不允许发送邮件,收件方拒收邮件。
  • "~" 软失败,指定的主机不允许发送邮件,但是出于过度阶段,收件方会接收邮件,但是会做标记。
  • "?" 中立,SPF记录详尽,但是不能确认其有效性,接收方接收邮件。

如果不指定前缀,默认是"+",通过,比如a就等于+a。

写在最后

SPF记录中的所有机制是有先后顺序的。

如果完全没有定义SFP记录,那么收件方也会接收邮件。

参考资料

OpenSPF:http://www.openspf.org/

SPF测试工具:

SPF记录规范:http://www.openspf.org/SPF_Record_Syntax

1 Comment

  1. 说实话,这个还真没去注意,国内的域名,也比较少被盗用拿去发垃圾邮件,我目前收到的垃圾邮件,大部分都是网易、QQ等邮箱发送的。