什么是SPF记录?
这里的SPF是指Sender Policy Framework。翻译过来就是发信者策略架构,比较拗口,一般都直接称为SPF。在域名管理系统中对域名作一条以SPF格式为准的txt记录即为SPF记录。
SPF记录有什么用?
SPF是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的全部IP地址。例如: dig TXT domain.com
domain.com. 27970 IN TXT "v=spf1 ip4:218.16.118.186 -all"
按照SPF的格式在DNS记录中增长一条TXT类型的记录,将提升该域名的信誉度,同时能够防止垃圾邮件伪造该域的发件人发送垃圾邮件。
SPF是跟DNS相关的一项技术,它的内容写在DNS的txt类型的记录里面。mx记录的做用是给寄信者指明某个域名的邮件服务器有哪些。SPF的做用跟mx相反,它向收信者代表,哪些邮件服务器是通过某个域名承认会发送邮件的。
由定义能够看出,SPF的做用主要是反垃圾邮件,主要针对那些发信人伪造域名的垃圾邮件。。
如何查询SPF记录?
当前市场上不少邮件系统和供应商都已经开始支持SPF,好比163.com,那么该如何获得163.com的SPF值呢?在CMD环境中,键入:
nslookup
set type=txt
163.com
就会获得如下的结果:
163.com text =
"v=spf1 ip4:220.181.12.0/22 ip4:202.108.9.128/25 ip4:202.108.5.0/24 ~all"
163.com nameserver = ns3.nease.net
163.com nameserver = ns.nease.net
ns.nease.net internet address = 202.106.185.75
ns3.nease.net internet address = 220.181.28.3
其中: "v=spf1 ip4:220.181.12.0/22 ip4:202.108.9.128/25 ip4:202.108.5.0/24 ~all"就是163.com的SPF值。
这个数据中说明了163.com有效合法服务器都有哪些!
如何增长SPF记录
很是简单,在DNS里面添加TXT记录便可。登录http://www.openspf.org/在里面输入你的域名,点击Begin,而后会自动获得你域名的一些相关信息。
a 你域名的A记录,通常选择yes,由于他有可能发出邮件。
mx 通常也是yes,MX服务器会有退信等。
ptr 选择no,官方建议的。服务器
a: 有没有其余的二级域名?好比:mail.abc.com和www不在一台server上,则填入mail.abc.com。不然清空。
mx: 通常不会再有其余的mx记录了。
ip4: 你还有没有其余的ip发信?可能你的smtp服务器是独立出来的,那么就填入你的IP地址或者网段。
include: 若是有可能经过一个isp来发信,这个有本身的SPF记录,则填入这个isp的域名,好比:hichina.com
~all: 意思是除了上面的,其余的都不承认。固然是yes了。架构
好了,点击Continue…..
自动生成了一条SPF记录,好比abc.com的是
v=spf1 a mx ~all
而且在下面告诉你如何在你的bind里面添加一条
abc.com. IN TXT “v=spf1 a mx ~all”dom
加入你的bind,而后ndc reload便可。
检查一下:
dig -t txt extmail.orgide
若是您的域名是由万网的dns服务器进行解析的,万网的网页上没有设置TXT记录的地方,可是若是你的DNS主server是在Hichina的,能够在diy.hichina.com上设置。设置完毕后您便可以经过使用spf策略进行垃圾邮件验证了。测试
SPF 的 TXT 记录
SPF 记录包含在一个 TXT 记录之中,格式以下:spa
v=spf1 [[pre] type [ext] ] ... [mod]
每一个参数的含义以下表所示:
参数 |
描述 |
v=spf1 |
SPF 的版本。若是使用 Sender ID 的话,这个字段就应该是 v=spf2 |
pre |
定义匹配时的返回值。 可能的返回值包括:
返回值 |
描述 |
+ |
缺省值。在测试完成的时候表示经过。 |
- |
表示测试失败。这个值一般是 -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:domain |
exist |
验证域名的存在性。 能够写成 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" |
|