什么是 SPF
SPF 是 Sender Policy Framework(发件人策略框架)的缩写,SPF 是一种通过 IP 地址认证电子邮件发件人身份的技术,核心作用是防止他人伪造你的域名发送邮件,是反邮件伪造的重要解决方案。
工作原理:
当你为自己的域名配置好 SPF 记录后,这条记录会明确告知所有接收邮件的服务器:哪些 IP 地址是被我授权,可以使用我的域名发送邮件的
当接收方服务器收到一封声称来自你域名的邮件时,会自动执行以下验证:
- 提取邮件中的发件人域名(例如
example.com);
- 查询该域名的 SPF 记录,获取被授权的 IP 列表;
- 检查发送这封邮件的服务器 IP 地址,是否在 SPF 记录的授权列表中。
验证结果直接决定邮件的处理方式:
- 若发送 IP 在授权列表中,接收方会判定这是“合法邮件”,正常接收;
- 若发送 IP 不在授权列表中,接收方则会认定这是“伪造邮件”,通常会拒绝接收或标记为垃圾邮件。
简单来说,SPF 就像给你的域名加了一道“门禁”,只有在名单上的 IP 才能用你的域名发邮件,从而从源头减少域名被滥用的风险。
同时也可以提高邮件系统发送外域邮件的成功率。
一般设置
我们架设的邮件系统就使用一台邮件服务器,在 DNS 指向里设置一条下面的 TXT 记录(SPF 记录)就可以了,可以参考下面的阿里云设置截图。
具体操作是:在域名服务商的域名控制面板里加一条类型是 TXT 的记录:
v=spf1 a mx ~all
或者用比较严格的
v=spf1 a mx -all
如果除了邮件服务器,网站也可能直接发邮件(假设ip是 218.13.20.15),也可能通过中继服务器发邮件(假设ip是 210.120.1.20), TXT 可以设置为:
v=spf1 a mx ip4:218.93.120.45 ip4:210.120.1.20 ~all
注意有的域名服务商不支持设置 TXT 记录, 只能和联系域名服务商平台客服。
操作系统命令行检查 SPF 指向是否生效
nslookup -q=txt winmail.net
【
请将 winmail.net 改成你的域名 】
下面是阿里云(万网)域名控制台里设置 TXT 记录的说明:
A: TXT
B: 设置顶级域名直接留空,系统会自动变成 @;如果使用的域名系统不允许为空,就输入 @
C: 默认
D: v=spf1 a mx ~all
E: 不能设置
TTL: 默认 10分钟
关于 SPF 更详细的信息请参考:
SPF标准(英文):
http://www.ietf.org/rfc/rfc4408.txt
SPF 记录百度百科:
http://baike.baidu.com/view/1372988.htm
什么是 DNS SPF 记录?
Cloudflare
SPF 在线检查(英文):
https://www.kitterman.com/spf/validate.html
可以发封任意内容的邮件到
check-auth@verifier.port25.com
会收到针对发件人系统 SPF 设置检测结果邮件
进一步还可以设置 DMARC 记录,请参考
如何设置 DMARC