SPF 记录设置

什么是 SPF

    SPF 是 Sender Policy Framework(发件人策略框架)的缩写,SPF 是一种通过 IP 地址认证电子邮件发件人身份的技术,核心作用是防止他人伪造你的域名发送邮件,是反邮件伪造的重要解决方案。

工作原理:

    当你为自己的域名配置好 SPF 记录后,这条记录会明确告知所有接收邮件的服务器:哪些 IP 地址是被我授权,可以使用我的域名发送邮件的

当接收方服务器收到一封声称来自你域名的邮件时,会自动执行以下验证:

  1. 提取邮件中的发件人域名(例如 example.com);
  2. 查询该域名的 SPF 记录,获取被授权的 IP 列表;
  3. 检查发送这封邮件的服务器 IP 地址,是否在 SPF 记录的授权列表中。

验证结果直接决定邮件的处理方式:

  1. 若发送 IP 在授权列表中,接收方会判定这是“合法邮件”,正常接收;
  2. 若发送 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