Defaults.Exposed

Defaults.Exposed修复 › SPF(发件人策略框架)

如何修复 SPF(发件人策略框架)

SPF 是写在你域名设置里的一行规则,用来声明哪些邮件服务有权以你公司的名义发邮件。没有它,全世界任何人都能冒充你发邮件——而你自己发出的正经邮件,反而更容易被丢进客户的垃圾箱。

对您业务的关键影响: 任何人都能冒充你的公司给你的客户、员工和供应商发邮件——伪造发票、改收款账户,无所不能。与此同时,你真正发出的报价和发票却更容易被当成垃圾邮件,生意就这样悄无声息地黄了。

这会让您付出什么代价

为什么它重要。 伪造邮件的「发件人」地址轻而易举,攻击者一分钱都不用花。SPF 是最便宜、最快让你的域名更难被冒充、并让你的正经邮件不落入垃圾箱的方法。Gmail 和 Yahoo 现在会主动把未通过身份验证的域名邮件丢进垃圾箱甚至直接拒收,所以这早已不是可选项——它是邮件能否被送达的基本门槛。

一句话说清楚

眼下,除非你正确配置了 SPF,否则全世界任何人都能发出看似来自你公司的邮件。他们可以给你的客户发假发票,给你的员工发假付款请求,假冒你给供应商发信——而这些邮件看起来都像真的,因为你的域名上没有任何东西能证明它们是假的。

SPF(发件人策略框架)就是解药。它是写在你域名设置里的一行文字,列出实际有权以你名义发邮件的邮件服务。收件的邮件服务商——Gmail、Outlook,所有人——在判断一封邮件是真是假之前,都会先查这份清单。没有清单,或清单太弱,他们就无从判断。

本页讲两件必须同时做对的事:究竟有没有 SPF 记录,以及它是否严格到足以真正发挥作用

这会让你付出什么代价

下面是缺失或孱弱的 SPF 记录在现实中一点点蚕食你的金钱与信任的日常方式。我们从不点名任何真实企业——这些都是我们在数据里反复看到的套路。

贯穿所有这些的一条线:攻击者一分钱不花,而代价和骂名都由你的公司来扛。

它到底是什么

当一封邮件抵达时,收件邮件服务器只想知道一件事:这封邮件真的来自它所声称的那个人吗? SPF 回答了这个问题的一部分。

你在域名的 DNS 设置里发布一行简短的文字——一条「TXT 记录」——列出获准代你发信的邮件服务。大致长这样:

v=spf1 include:_spf.google.com include:sendgrid.net -all

用大白话说就是:「我们真正的邮件来自 Google 的服务器和 SendGrid 的服务器——其他任何冒充我们的邮件,一律拒收。」

对你的评分而言,关键有两点:

  1. 记录存在吗? 这是大头(在所有单项邮件检查中权重最高)。没有记录,收件方就没有清单可对照,冒充门户大开。这里还藏着一个隐蔽的失败模式:如果你的域名有两条或更多SPF 记录,规则规定它们全部无效——所以你实际上等于完全没有 SPF,尽管表面看上去有。

  2. 策略够严格吗? 记录可以存在,却毫无牙齿。结尾——那个「all」机制——就是给收件方的指令:

    • -all(硬失败)——拒收清单之外的一切。最强。满分。
    • ~all(软失败)+ DMARC 设为 reject——如今推荐的现代配置。保护力等同硬失败,又没有合法转发邮件被退回的风险。满分。
    • ~all + DMARC 设为 quarantine——可接受,略弱;把 DMARC 改成 reject 才能获得完整保护。
    • 单独的 ~all(无 DMARC 强制执行)——弱。它的意思是「大概是假的,但还是收下吧」。伪造邮件照样能进。这正是许多企业自以为受到保护却落入的陷阱。
    • ?all(中立)——不提供任何保护。
    • +all——主动作死:它告诉全世界任何人都可以冒充你发信。永远别用。

还有一个隐形的失败:SPF 被评估时,最多只允许触发 10 次 DNS 查询。堆叠太多 include: 条目就会超出这个上限,此时收件方会把整条记录当作失效——你又回到了毫无保护的状态。对那些使用大量营销和 SaaS 工具的企业来说,这是个常见而隐蔽的问题。

「好」长什么样: 有且仅有一条 SPF 记录,列出所有合法以你名义发信的服务,以 -all 结尾(或用 ~all 搭配 p=reject 的 DMARC),并且舒舒服服地保持在 10 次查询的上限以内。

如何修复(免费,约 10 分钟)

把这一节交给管理你域名或网站的人——并请注意修复是免费的。 这是改一个 DNS 设置,不是要你买什么产品。我们只对长期监控它是否保持正确收费,而不对这次改动收费。

第 1 步——列出所有以你名义发邮件的服务。 这是大家最容易出错的地方。把它们全写下来:你的邮箱服务商(Google Workspace、Microsoft 365 等),加上任何邮件营销工具、CRM、客服系统、电商平台、开票/会计应用和预订系统。如果某个服务带着你的名字发信,你却把它忘了,那么当你收紧策略时,SPF 就会拦下它的邮件。

第 2 步——在你的根域名发布一条 TXT 记录。 把你所有发件方的「include」行合并到一条记录里。常见平台对应如下:

合并后的记录长这样:

v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:sendgrid.net -all

按服务商分,在哪里添加:

第 3 步——先稳妥,再强制。 在你确认发件方清单完整之前,先用 ~all(软失败)发布,这样不会误伤任何合法邮件。一旦确认你所有正经邮件仍然畅通,再收紧到 -all(硬失败)——或者更好,保留 ~all 并加上 p=reject 的 DMARC 策略,这是推荐的现代组合。

第 4 步——确保你只有一条记录。 如果已经存在一条旧的 SPF 记录,就编辑它,而不是再加一条。两条 v=spf1 记录会互相抵消,让你毫无保护。

第 5 步——盯紧查询次数。 如果你发件方很多,可能会冲破 10 次查询的上限。一旦如此,就合并精简——有些服务商提供「SPF 扁平化」,或者干脆删掉你不再使用的发件方。

第 6 步——重新检测你的域名,确认它现在已通过:记录存在,策略严格。

常见错误

它在哪里发挥作用

SPF 是地基,但它只是三层中的一层。DKIM 加上一个加密签名,证明邮件没被篡改;DMARC 是把 SPF 和 DKIM 串起来的指令,告诉收件方对验证失败的邮件实际该怎么处理——包括拦截对你客户所看到的那个可见「发件人」名称的冒充。先把 SPF 做对(它是最快的胜利,权重也最大),再补上 DKIM 和 DMARC,彻底关上这扇门。这三项修复都是免费的。

在您的托管服务商上完成设置

热门服务商的分步指引:

常见问题

我不懂技术——这个我自己能搞定吗?

你不需要弄懂细节。这个改动就是往你的域名设置里加一两行字,由管理你网站的人或你的 IT 服务商来做。把下面的「如何修复」一节交给他们就行——通常几分钟搞定,而且是免费的。我们只收取长期监控它是否保持正确的费用。

我们已经有 SPF 记录了——这不就够了吗?

不一定。有记录只是上半场;把它设置得足够严格才是下半场。一条以「~all」(软失败)结尾、背后又没有 DMARC 的记录,等于在告诉收件服务器「这可能是假的,但还是收下吧」——保护几乎为零。两条 SPF 记录,或一条查询次数过多的记录,会被判定为失效,看上去存在却毫无保护。两个环节都得对。

修复这个会不会不小心搞坏我自己的邮件?

如果记录漏掉了某个合法的发件方就有可能——比如以你名义发邮件的开票应用或邮件营销工具。这正是为什么稳妥的做法是:先把所有以你名义发邮件的服务全部列出来,先用宽松的「~all」发布,确认没有遗漏后,再收紧到硬失败。按这个顺序来就不会出问题。

「~all」和「-all」有什么区别,我们该用哪个?

「-all」(硬失败)告诉收件方拒收任何不在你清单上的邮件——最强的设置。「~all」(软失败)则说「大概不合法,但还是先收下」。如今的最佳实践推荐用「~all」配合 DMARC 策略为「reject」——这一对组合既能提供与「-all」相同的保护,又不会有转发邮件被退回的风险。单独用「~all」、背后没有 DMARC 强制执行,才是要避免的弱配置。

SPF 单靠自己就能阻止所有邮件伪造吗?

不能——它是必不可少的第一层,但不是全部答案。SPF 声明哪些服务器可以替你发邮件,但它不告诉收件方在邮件验证失败时该怎么做,也管不到用户看到的那个可见「发件人」名称。要彻底锁死冒充,你还需要 DKIM 和 DMARC。SPF 是最快、收益最高的第一步,所以从这里开始,再补上另外两个。

多久会生效,会不会要花钱?

DNS 改动通常几分钟到几小时内生效。修复本身永远免费——只是在你的 DNS 服务商那里改个设置而已。如果有人告诉你加一条 SPF 记录需要购买付费产品,那是错的。