本文目录
什么是 SPF?
SPF(Sender Policy Framework,发件人策略框架)是一种电子邮件身份验证方法,用于指定哪些邮件服务器有权代表你的域名发送邮件。它以 DNS TXT 记录的形式发布,接收方邮件服务器会对其进行检查,以核实收到的邮件是否来自获批的来源。
如果没有 SPF 记录,任何人都可以冒充你的域名发送邮件。SPF 为域名所有者提供了一种途径,用来声明哪些 IP 地址和服务是合法的发件方,从而帮助接收方识别并过滤伪造的邮件。
SPF 记录的工作原理
SPF 记录是一条以 v=spf1 开头的单条 DNS TXT 记录,后面跟着定义授权发件方的各种机制。接收方服务器会从左到右依次评估这些机制,并应用相应的结果限定符(pass、fail、softfail 或 neutral)。
- 机制——include:(引用另一个域名的 SPF)、ip4:/ip6:(允许特定 IP)、a(允许域名的 A 记录)、mx(允许域名的邮件服务器)、all(兜底匹配)
- 限定符——+(pass,默认值)、-(fail/拒绝)、~(softfail,接收但标记)、?(neutral)。末尾的 all 机制通常使用 -all(硬失败)或 ~all(软失败)
- DNS 查询上限——SPF 评估最多允许 10 次 DNS 查询。每个 include:、a、mx、ptr 和 redirect 都算作一次查询;超过此上限会导致永久性错误
免费试用 —— 无需注册
生成你的 SPF 记录 →何时应配置 SPF
每个提供邮件服务的域名都需要一条配置得当的 SPF 记录,以确保可靠投递并防止滥用。
- 邮件送达率——如果没有 SPF,你的邮件更容易被投进垃圾邮件文件夹,因为接收方无法核实你的发送授权
- 多服务配置——现代企业会使用多个邮件服务(Google Workspace、SendGrid、Mailchimp);SPF 可将所有授权发件方整合进一条记录
- 反垃圾邮件合规——主流邮件提供商都将 SPF 列为批量发件人要求的一部分;对于每天发送 5000 封以上邮件的发件人,Google 和 Yahoo 强制要求配置 SPF
常见问题
如果我的 SPF 记录超过 10 次 DNS 查询会怎样?
如果 SPF 评估需要超过 10 次 DNS 查询,就会产生永久性错误(permerror),许多接收方会将其视为 SPF 失败。要解决这个问题,可以将 include: 引用替换为其解析出的 IP 地址来“扁平化”你的 SPF 记录,或使用能自动维护这些 IP 的 SPF 扁平化服务。
我应该在 SPF 记录末尾用 -all 还是 ~all?
首次设置 SPF 时请使用 ~all(softfail),它会标记未授权的邮件但不予拒绝。在确认所有合法发件方都已包含在内后,再切换到 -all(硬失败),以指示接收方拒绝未授权的邮件。若与 DMARC 结合使用,即便是 ~all 也能提供强有力的保护。
一个域名可以有多条 SPF 记录吗?
不行。SPF 规范要求每个域名有且仅有一条 SPF TXT 记录。多条 SPF 记录会导致永久性错误,接收方可能会将它们全部忽略。如果你需要授权多个服务,应使用多个 include: 机制将它们合并到一条记录中(不超过 10 次查询的上限)。