📚 文章大纲

什么是SPF?

(Sender Policy Framework) 的缩写,一种以 IP 地址 认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案。

接收邮件方会首先检查域名的 SPF 记录,来确定发件人的 IP 地址是否被包含在 SPF 记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。

什么是 DNS SPF 记录?

发送方策略框架(SPF)记录是一种 DNS TXT 记录,其中列出所有所有获得授权从特定域发送电子邮件的服务器。

DNS TXT(“文本”)记录允许管理员将任意文本输入到域名系统(DNS)中。TXT 记录最初是为包含有关域的重要信息而创建的,但后来已经发展为服务其他目的。

最初创建 SPF 是因为电子邮件使用的标准协议——简单邮件传输协议(SMTP)——本身并不验证电子邮件中的“发件人”地址。这意味着,如果没有 SPF 或其他身份验证记录,攻击者可以轻易假冒一个发件人,欺骗收件人采取某种行动或共享信息。

可将 SPF 记录想象为门童管理的客人名单。如果某人不在名单上,门童就不会让其进入。同样,如果 SPF 记录的列表中没有某个发送者的 IP 地址或域,接收方服务器(门童)将不投递哪些电子邮件或将它们标记为垃圾邮件。

有很多基于 DNS 的机制可以帮助电子邮件服务器确认电子邮件是否来自可信来源,SPF 记录只是其中之一。基于域的消息验证、报告与一致性(DMARC)和域名密钥识别邮件(DKIM)是另外两种用于电子邮件验证的机制。

值得注意的是,SPF 曾经有一个专用的 DNS 记录类型。该专用 DNS 记录类型已被弃用,仅使用 TXT 记录。

邮件服务器如何检查 SPF 记录?

邮件服务器检查 SPF 记录的过程比较简单:

  • 服务器 1 发送电子邮件。其 IP 地址是 192.0.2.0,电子邮件使用的返回路径为 email@returnpath.com。(返回地址不同于“发件人”地址,专用于收集和处理退回的消息。)
  • 接收该消息的邮件服务器(服务器 2)读取返回路径的域并搜寻其 SPF 记录。
  • 如果服务器 2 为返回路径的域找到 SPF 记录,就会在 SPF 记录的授权发送方列表中搜索服务器 1 的 IP 地址。如果该 IP 地址包含于 SPF 记录的列表中,则 SPF 检查通过,该电子邮件将得以通过。如果该 IP 地址未包含于 SPF 记录的列表中,则 SPF 检查失败。在这种情况下,该电子邮件将被拒收或标记为垃圾邮件。

SPF 记录是什么样的?

SPF 记录必须遵循一定的标准,以便服务器理解其内容。如下是 SPF 记录核心组成部分的示例:

v=spf1 ip4=192.0.2.0 ip4=192.0.2.1 include:examplesender.email -all

这个例子让服务器知道这是什么类型的记录,声明对这个域被批准的 IP 地址和第三方,并告知服务器如何处理不符合要求的电子邮件。我们分别说明各组成部分是如何实现这一点的:

  • v=spf1 告诉服务器这里包含一条 SPF 记录。每一条 SPF 记录都必须以这个字符串开始。
  • 然后是 SPF 记录的“客人名单”部分,即授权 IP 地址。在本例中,SPF 记录告诉服务器,ip4=192.0.2.0 和 ip4=192.0.2.1 被授权代表该域发送电子邮件。
  • include:examplesender.net 是 “include”(包含)标记的示例,该标记告诉服务器,有哪些第三方组织被授权代表该域发送电子邮件。这个标记表示,被包含域(examplesender.net)的 SPF 记录内容应被检查,其中包含的 IP 地址也应被视为已授权。一条 SPF 记录中可包含多个域,但这个标记仅适用于有效的域。
  • Finally, -all 告诉服务器,SPF 记录中未列出的地址没有被授权发送电子邮件并应被拒绝。
    • 这里的其他可选项包括 ~all:表示未列出的电子邮件将被标记为不安全邮件或垃圾邮件,但仍会被接受;不那么常见的是+all:表示任何服务器都可以代表该域发送电子邮件。

虽然本文中使用的示例相当简单,但 SPF 记录肯定会更加复杂。要确保 SPF 记录有效,需要注意如下几点:

  • 每个域不能关联多条 SPF 记录。
  • 记录必须以 all 部分结束,或包含一个redirect: 部分(表示该 SPF 记录由另一个域托管)。
  • SPF 记录不能包含大写字母。

更多信息请参阅官方 SPF 记录文档

为什么使用 SPF 记录?

域运营者使用 SPF 记录的原因很多:

  • 防范攻击: 如果不对电子邮件进行验证,公司和电子邮件接收人将面临网络钓鱼攻击、垃圾邮件和电子邮件欺骗等风险。有了 SPF 记录,攻击者更难假冒某个域,从而降低了发生以上攻击的可能性。
  • 提高电子邮件的可交付性:对于未发布 SPF 记录的域,所发出的电子邮件可能会被拒收或标记为垃圾邮件。随着时间的推移,被退回或被标记为垃圾邮件的电子邮件会损害域到达用户收件箱的能力,影响与客户、员工和其他实体的通信。
  • DMARC 合规: DMARC 是一个电子邮件验证系统,帮助确保电子邮件仅由授权用户发送。DMARC 策略规定服务器应该如何处理 SPF 和 DKIM 检查失败的邮件。根据 DMARC 策略指示,这些电子邮件将被标记为垃圾邮件、被拒绝或正常发送。域管理员会收到关于其电子邮件活动的报告,以帮助他们调整策略。

Cloudflare 电子邮件安全 DNS 向导可简化设置正确 DNS TXT 记录和阻止垃圾邮件发送者使用域的过程。

如何设置企业邮箱的 SPF?

SPF 是通过域名的 TXT 记录来进行设置的。

为了提升域名邮箱发送外域(qiye.163.com 以外的邮箱)邮件的成功率,一般我们会给自己的域名设置一条 TXT 记录来避免这种情况。

TXT 记录一般是为某个主机名或域名设置的说明。一般情况下我们不用做 TXT 记录,只有当使用企业邮箱时为了提高发送邮件成功率设置 SPF 时,我们会添加 TXT 记录。

记录值为:v=spf1 include:SPF 服务器地址 ~all

  • 如果你用的是网易企业邮箱,那么 SPF 服务器地址是:spf.163.com,那么 TXT 记录值为:
    v=spf1 include:spf.163.com ~all
  • 如果你用的是腾讯企业邮箱,那么 SPF 服务器地址是:spf.mail.qq.com,那么 TXT 记录值为:
    v=spf1 include:spf.mail.qq.com ~all

Hostinger添加SPF DNS记录(阿里云企业邮)

进一步了解电子邮件的 DNS 记录:

添加微信