SPF
记录详解
一
句型
在一条
SPF
记录中
,
按照排列的先后顺序
,
对所给出的机制进行验证
.
如果在
SPF
记录中
,
没有
机制或修改符
,
默认结果是中性
(
Neutral);
如果域没有
SPF
记录
,
结果是
:
”
无
”
(None);
如果在
DNS
解析期间
,
有一个临时错误
,
会报
”
临时错误
”
(TempError)(
以前的规划中称作
”
错误
”
(error));
如果
SPF
记录句型错误
,
比如写法错误或者使用了未知句型
,
会报
”
永久错误
”
(PermError)(
以前称
作
”
unknown
”
)
1
机制
1.1
机制表示
1.1.1 all
这个机制总是匹配的
,
通常用在记录的结尾
.
例
:
“
v=spf1 mx
–
all
”
允许所有该域的
MX
邮件服务器发送邮件
,
禁止所有其他的
.
“
v=spf1
–
all
”
该域根本不能发送邮件
“
v=spf1 +all
”
任何服务器都可以发送邮件
1.1.2 ip4
“
v=spf1 ip4:192.168.0.1/16
–
all
”
允许
192.168.0.1
到
192.168.255.255
的服务器发送邮件
“
v=spf1 ip4:192.168.0.1
–
all
”
允许
192.168.0.1
发送邮件
,
与
“
v=spf1 ip4:192.168.0.1/32
–
all
”
同意
1.1.3 ip6
单个
IP,
于
ip4
不同
,/128
为默认前缀
例
:
"v=spf1 ip6:1080::8:800:200C:417A/96 -all"
允许
1080::8:800:0000:0000
和
1080::8:800:FFFF:FFFF
之间的主机发送
"v=spf1 ip6:1080::8:800:68.0.3.1/96 -all"
允许
1080::8:800:0000:0000
和
1080::8:800:FFFF:FFFF
之间的主机发送
1.1.4 a
例
:
假设当前域为
example.com
"v=spf1 a -all"
当前域被使用
"v=spf1 a:example.com -all"
当前域被使用
Equivalent if the current-domain is example.com.
"v=spf1 a:mailers.example.com -all"
指定
mailers.example.com
的主机
IP
可以外发邮件
"v=spf1
a/24
a:offsite.example.com/24
-all"
如果
example.com
解析到
192.0.2.1,
那么全部的
C
类地址
192.0.2.0/24
将作为可外发
邮件的
IP
地址
;
同样
,
如果
offsite.example.com
有多个
A
记
录地址
,
每一个
IP
地址也会被扩展到
CIDR
子网
,
作为可外发邮件
IP
地址
.
1.1.5 mx
所有域的
MX
记录对应的
A
记录
,
按照
MX
记录的优先级进行验证
.
如果发送
IP
在这些记录
中
,
则机制匹配
.
如果域未指定
,
默认为当前域
.
A
记录需要精确匹配发送邮件的
IP
地址
.
如果有
CIDR
前缀
,
则需要逐个对应
IP
地址验证
.
例
:
v=spf1 mx mx:deferrals.domain.com -all"