什么是 SPF?
SPF (Sender Policy Framework) 是在 RFC 7208 中定义的电子邮件认证协议。它的工作原理是在您的域名下发布一条 DNS TXT 记录,列出所有允许从该域名“发送”邮件的 IP 地址或主机名。当接收邮件服务器收到一封声称来自您的邮件时,它会查询您的 DNS 以验证发送服务器的 IP 是否在您的批准列表中。
如果没有 SPF,任何人都可以伪造电子邮件的返回路径(envelope From),使其看起来像是来自您的域名——这是网络钓鱼和垃圾邮件活动中常用的技术。
为什么需要 SPF?
1防止欺骗
阻止不良行为者伪造您的域名作为发送地址
2提高送达率
接收服务器会信任经过授权的发送者,从而降低垃圾邮件评分
3DMARC 必需项
SPF 是 DMARC 依赖的两种对齐机制之一
4声誉保护
未经授权的发送者无法损害您域名的发送声誉
SPF 工作原理 — 步骤详解
在 `_your-domain.com` 发布一条 TXT 记录,列出授权的 IP 和包含项(includes)。
您的邮件服务器发送一封电子邮件;信封“From”地址带有您的域名。
接收服务器提取发送 IP 和信封 From 域名。
它查询您的 DNS 以获取 SPF 记录,并检查发送 IP 是否在列表中。
结果为 `pass`、`fail`、`softfail`、`neutral` 或 `permerror` — 用于垃圾邮件过滤决策。
SPF 记录语法
v=spf1 ip4:203.0.113.10 include:_spf.google.com include:sendgrid.net -all机制分解
v=spf1— 版本标识,始终排在第一位ip4:— 授权一个 IPv4 地址/范围ip6:— 授权一个 IPv6 地址/范围include:— 继承另一个域名的 SPF 记录a— 授权域名的 A 记录 IPmx— 授权域名的 MX 服务器redirect=— 委托给另一个域名的完整 SPF 记录限定符(每个机制的前缀)
+ (默认)通过 (Pass) — 已授权-失败 (Fail) — 拒绝未经授权的发送者~软失败 (SoftFail) — 标记为可疑,但不拒绝?中性 (Neutral) — 不作判定常见的 SPF 失败及修复方法
DNS 查询次数过多
通过将 includes 替换为原始 IP 来“扁平化”您的 SPF 记录,或使用 SPF 扁平化服务
缺少发送服务
将服务的 include: 标签(例如 Mailchimp, Zendesk)添加到您的 SPF 记录中
存在多条 SPF 记录
只允许有一条带有 v=spf1 的 TXT 记录 — 请将它们合并为一条记录
转发的电子邮件
SPF 在转发时会失效,因为转发服务器的 IP 不在您的列表中 — DKIM 可以解决这个问题
常见问题解答
SPF 记录列出了所有被授权代表您的域名发送邮件的 IP 地址和域名。它能有效防止钓鱼攻击。
为了防止对 DNS 服务器的攻击,SPF 规定查询上限为 10 次。超过此限将导致认证失败(PermError)。可通过合并记录或使用 IP 地址来避免。
'~all'(软失败)表示邮件可接收但标为可疑;'-all'(失败)则指示服务器直接拒绝未授权邮件。
常见于语法错误、存在多条记录或超过了 10 次查询限制。
不可以。一个域名必须只能有一条以 'v=spf1' 开头的记录,多条记录会导致认证自动失效。
不直接保护。SPF 验证的是 Return-Path。要保护显示的“发件人”地址,您需要 DMARC。