SPF是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。例如:

 
  
  1. dig TXT 21cn.com 
  2.   21cn.com. 27970 IN TXT "v=spf1 ip4:202.105.45.0/24 ip4:61.140.60.0/24 ip4:202.123.79.206 ip4:220.232.167.218 ip4:221.192.129.0/24 ip4:59.36.102.0/24 -all" 

  按照SPF的格式在DNS记录中增加一条TXT类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件。
SPF是跟DNS相关的一项技术,它的内容写在DNS的txt类型的记录里面。mx记录的作用是给寄信者指明某个域名的邮件服务器有哪些。SPF的作用跟mx相反,它向收信者表明,哪些邮件服务器是经过某个域名认可会发送邮件的。
由定义可以看出,SPF的作用主要是反垃圾邮件,主要针对那些发信人伪造域名的垃圾邮件。

   添加SPF记录的方法:
    这方法很简单,只要我们的DNS供应商提供的管理界面中可以添加SPF记录就可以设置了(不是所有的供应商会提供这设置,我的域名是在godaddy.com上注册的,可以设置SPF记录)。设置时,添加一个SPF记录,然后输入域名,如果是本域,可用@来表示。然后在VALUE中输入如“v=spf1 ip4:67.202.107.106 -all”的值。 这值分三部分:
   (1)v=spf1 说明是一个SPF的v1记录
   (2)ip4:67.202.107.106 说明邮件会从此声明IPv4地址发出。它可以是一个IP,或一个IP段。如果有多个IP或多个IP段的话,可以声明多个ip4记录(如“ip4:1.0.1.0/24 ip4:1.0.2.0/24″),每个ip4记录间用空格分隔。另外,除了用IPv4外,还可以有如下选择:
       1) ip6: 使用 IPv6 进行验证。
       2) a: 使用一个域名进行验证。这将引起对域名服务器进行一次 A RR 查询。可以按照 a:domain, a:domain/cidr 或 a/cidr 的形式来使用。
       3) mx: 使用 DNS MX RR 进行验证。MX RR 定义了收信的 MTA,这可能和发信的 MTA 是不同的,这种情况基于 mx 的测试将会失败。 可以用 mx:domain, mx:domain/cidr 或 mx/cidr 这些形式进行 mx 验证。
       4) ptr: 使用域名服务器的 PTR RR 进行验证。这时,SPF 使用 PTR RR 和反向图进行查询。如果返回的主机名位于同一个域名之内,就验证通过了。这个参数的写法是 ptr:domain
       5) exist: 验证域名的存在性。可以写成 exist:domain 的形式。
       6) ext: 定义对 type 的可选扩展。如果没有这个字段,那么仅使用单个记录进行问询。
       7) 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”
(3)-all 定义匹配时的返回值,可有如下选择:
   1) + 缺省值。在测试完成的时候表示通过。
   2) – 表示测试失败。这个值通常是 -all,表示没有其他任何匹配发生。
   3) ~ 表示软失败,通常表示测试没有完成。
   4) ? 表示不置可否。这个值也通常在测试没有完成的时候使用。
所以“v=spf1 ip4:67.202.107.106 -all”的意思是这个域只有67.202.107.106这个IP可以发邮件出来,其他IP的都是非法的。