目前垃圾邮件多如牛毛,与之对应的防止方法层出不穷,黑名单,白名单,关键字过滤,特征分析,专门网站提供特征,还有这个SPF。

这个SPF是啥呢,全称为 Sender Policy Framework

是DNS记录配合的一个协议。

目前的DNS服务器大多不支持SPF记录,我还没看见那个DNS服务支持的,那么为了解决这个问题,都是使用该域的txt记录。

SPF记录定义了几种方式

+ 通过

- 拒绝

~ 软拒绝

? 不置可否,也就是不做判断


来看一个例子

synkbit.com     text =

        "v=spf1 +a +mx +a:vps1038566.cp.hosting-srv.net -all"

spf1 是版本1 ,如果使用 Sender ID 的话,这个字段就应该是 v=spf2,那个东西是微软搞出来的。+a 是a记录通过,这里是指synkbit.com这个域名的a记录所对应的IP地址,下面是+mx,是synkbit.com这个域名的mx记录,所对应的IP地址,+a:vps1038566.cp.hosting-srv.net,就是直接指定一个域名vps1038566.cp.hosting-srv.net所对应的IP地址,从这些地址发出来的信才是合法的,然后是最后一句-all,-是拒绝,-all就是拒绝所有的,就和我们做防火墙策略的时候,前面都是许可,最后跟一条拒绝所有一样。但是-all后面还是可以跟东西的,exp,如果出现必须是最后一项,

exp=getlost.example.com,exp指定的域名,是为了给拒绝提供一个拒绝信息,这个信息就从getlost.example.com域名的DNS的text记录里找,所以做完了exp记录还没完,需要添加getlost的txt记录,比如"You are not authorized to send mail for the domain",明白告诉被拒绝的对象,是什么原因拒绝收你的信。

过滤选项可以是a记录,mx记录,这些是依赖DNS的,当然可以直接指定IP地址,ip4:192.168.1.1,当然是支持prefix的,ip4:192.168.1.0/24,也支持IPv6,ipv6:111::11,当然也支持prefix。

还有测试项目include,比如v=spf1 include:spf1.hichina.mail.aliyun.com -all,这就是像一个别名一样,配置的内容到spf1.hichina.mail.aliyun.com去找,再去查询DNS的txt的spf1.hichina.mail.aliyun.com 记录,一般出现在虚拟共有主机,独立IP主机不会用。

还有测试项目exists,这个我觉得就是鸡肋,没啥用处,可以写成 exist:domain 的形式,就是看看这个域名是否存在A记录,这似乎对放垃圾邮件没啥用处吧。

还有测试项目ptr,可以写成 ptr:domain 的形式熟悉DNS记录的就知道,这个是非常效率资源的一种方式,官方都不推荐使用,还是算了吧。

还有redirect,格式为redirect=<domain>,将用给定域名的 SPF 记录替换当前记录,真不知道有了前面那么多选择,这个还有啥用处。

官方地址:http://www.openspf.org/

RFC4408协议 http://www.openspf.org/RFC_4408