Defaults.Exposed › 修复 › SPF(发件人策略框架)
如何修复 SPF(发件人策略框架)
SPF 是写在你域名设置里的一行规则,用来声明哪些邮件服务有权以你公司的名义发邮件。没有它,全世界任何人都能冒充你发邮件——而你自己发出的正经邮件,反而更容易被丢进客户的垃圾箱。
对您业务的关键影响: 任何人都能冒充你的公司给你的客户、员工和供应商发邮件——伪造发票、改收款账户,无所不能。与此同时,你真正发出的报价和发票却更容易被当成垃圾邮件,生意就这样悄无声息地黄了。
这会让您付出什么代价
- 骗子用一封看似来自你的邮件,给你客户发去一张写着他自己银行账户的发票,客户付了款。几周后客户来问货怎么还没到,你才发现——而这笔损失砸的是你的名声,甚至可能是你的责任。
- 你的报价、发票和回复悄悄落进客户的垃圾箱,因为大型邮件服务商无法确认这些邮件真的出自你手。生意冷掉了,你却始终不知道原因。
- 骗子冒充老板或财务给员工发邮件,要求紧急付款或买礼品卡——邮件看上去确实来自你的域名,于是真有人照办了。
- 一个大客户在审核时检查你的域名,发现没有任何发件人保护,要么直接把你刷掉,要么逼你先修好才肯签约——结果你丢了单子,或被拖延数周。
- 你以为有 SPF 记录就万事大吉了——但它设成了「软失败」,背后没有任何强制执行,或者它早就悄悄失效了,伪造邮件照样畅通无阻。
为什么它重要。 伪造邮件的「发件人」地址轻而易举,攻击者一分钱都不用花。SPF 是最便宜、最快让你的域名更难被冒充、并让你的正经邮件不落入垃圾箱的方法。Gmail 和 Yahoo 现在会主动把未通过身份验证的域名邮件丢进垃圾箱甚至直接拒收,所以这早已不是可选项——它是邮件能否被送达的基本门槛。
一句话说清楚
眼下,除非你正确配置了 SPF,否则全世界任何人都能发出看似来自你公司的邮件。他们可以给你的客户发假发票,给你的员工发假付款请求,假冒你给供应商发信——而这些邮件看起来都像真的,因为你的域名上没有任何东西能证明它们是假的。
SPF(发件人策略框架)就是解药。它是写在你域名设置里的一行文字,列出实际有权以你名义发邮件的邮件服务。收件的邮件服务商——Gmail、Outlook,所有人——在判断一封邮件是真是假之前,都会先查这份清单。没有清单,或清单太弱,他们就无从判断。
本页讲两件必须同时做对的事:究竟有没有 SPF 记录,以及它是否严格到足以真正发挥作用。
这会让你付出什么代价
下面是缺失或孱弱的 SPF 记录在现实中一点点蚕食你的金钱与信任的日常方式。我们从不点名任何真实企业——这些都是我们在数据里反复看到的套路。
- 改收款账户的发票。 罪犯给你的某位客户发去一封看上去与你一模一样的邮件,附上一张做得很像的发票,上面却是他自己的银行账户。你的客户付了款。你第一次听说,是客户来催货时。现在你面对的是一个愤怒的客户、一笔进了罪犯口袋的钱,以及一场关于谁来承担损失的艰难对话。
- 冒充老板/财务的骗局。 有人「冒充」老板给你的记账员发邮件:「帮个忙——这笔款能在今天下班前打出去吗?」 因为邮件确实看上去来自你的域名,谁的警觉都没被触发。钱就这么流出去了。
- 隐形的送达率税。 你的报价和发票开始落进客户的垃圾箱,因为 Gmail 和 Yahoo 无法确认它们真的出自你手。你收不到退信,也看不到任何报错——生意就这么悄无声息地凉了。你在流失业务,却连它正在发生都看不见。
- 丢掉的合同。 一个更大的客户在引入流程中对你的域名做了基础检查,发现没有发件人身份验证,把你标为风险。好的情况是你在死线压力下手忙脚乱地修补;坏的情况是他们选了通过检查的竞争对手。
- 毒化品牌的浪潮。 你的域名被用于针对公众的钓鱼活动。那些上过当的人从此不信任任何带你名字的邮件——于是连你正经的优惠和续费通知也被无视或被举报。
贯穿所有这些的一条线:攻击者一分钱不花,而代价和骂名都由你的公司来扛。
它到底是什么
当一封邮件抵达时,收件邮件服务器只想知道一件事:这封邮件真的来自它所声称的那个人吗? SPF 回答了这个问题的一部分。
你在域名的 DNS 设置里发布一行简短的文字——一条「TXT 记录」——列出获准代你发信的邮件服务。大致长这样:
v=spf1 include:_spf.google.com include:sendgrid.net -all
用大白话说就是:「我们真正的邮件来自 Google 的服务器和 SendGrid 的服务器——其他任何冒充我们的邮件,一律拒收。」
对你的评分而言,关键有两点:
-
记录存在吗? 这是大头(在所有单项邮件检查中权重最高)。没有记录,收件方就没有清单可对照,冒充门户大开。这里还藏着一个隐蔽的失败模式:如果你的域名有两条或更多SPF 记录,规则规定它们全部无效——所以你实际上等于完全没有 SPF,尽管表面看上去有。
-
策略够严格吗? 记录可以存在,却毫无牙齿。结尾——那个「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」行合并到一条记录里。常见平台对应如下:
- Google Workspace:
include:_spf.google.com - Microsoft 365:
include:spf.protection.outlook.com - SendGrid:
include:sendgrid.net - Mailchimp:
include:servers.mcsv.net - Zoho:
include:zoho.eu(或对应地区的域名)
合并后的记录长这样:
v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:sendgrid.net -all
按服务商分,在哪里添加:
- Cloudflare: DNS → Records → Add record → 类型选
TXT,Name 填@,Content 填上面的值。 - Microsoft 365 / Google 管理后台: 它们会在设置向导里给出要用的确切 include 字符串;把它复制进你 DNS 主机的 TXT 记录。
- GoDaddy / 大多数主机商: DNS 管理 → 添加 →
TXT,Host/Name 填@,Value 填这条记录。
第 3 步——先稳妥,再强制。 在你确认发件方清单完整之前,先用 ~all(软失败)发布,这样不会误伤任何合法邮件。一旦确认你所有正经邮件仍然畅通,再收紧到 -all(硬失败)——或者更好,保留 ~all 并加上 p=reject 的 DMARC 策略,这是推荐的现代组合。
第 4 步——确保你只有一条记录。 如果已经存在一条旧的 SPF 记录,就编辑它,而不是再加一条。两条 v=spf1 记录会互相抵消,让你毫无保护。
第 5 步——盯紧查询次数。 如果你发件方很多,可能会冲破 10 次查询的上限。一旦如此,就合并精简——有些服务商提供「SPF 扁平化」,或者干脆删掉你不再使用的发件方。
第 6 步——重新检测你的域名,确认它现在已通过:记录存在,策略严格。
常见错误
- 两条 SPF 记录。 最常见的隐形失败。加一条新记录而不是编辑已有的那条,会让两条都失效。必须有且仅有一条。
- 止步于
~all就以为完事了。 背后没有 DMARC 的软失败是孱弱的中间地带——看着像配好了,实际几乎不保护你。要么进到-all,要么用~all搭配 DMARCp=reject。 - 漏掉某个发件方。 在列全你的开票应用、CRM 或邮件营销工具之前就收紧到
-all,会开始拦截你自己的合法邮件。先把所有东西列出来。 - 冲破 10 次查询上限。 每个
include:都可能连带触发更多查询。太多了,记录就被当作失效。保持精简。 - 使用
+all。 这明确授权整个互联网都能冒充你发信。比没有记录还糟。永远别发布它。
它在哪里发挥作用
SPF 是地基,但它只是三层中的一层。DKIM 加上一个加密签名,证明邮件没被篡改;DMARC 是把 SPF 和 DKIM 串起来的指令,告诉收件方对验证失败的邮件实际该怎么处理——包括拦截对你客户所看到的那个可见「发件人」名称的冒充。先把 SPF 做对(它是最快的胜利,权重也最大),再补上 DKIM 和 DMARC,彻底关上这扇门。这三项修复都是免费的。
在您的托管服务商上完成设置
热门服务商的分步指引:
- 在 GoDaddy 上设置 SPF
- 在 Namecheap 上设置 SPF
- 在 Cloudflare 上设置 SPF
- 在 Google Workspace 上设置 SPF
- 在 Microsoft 365 上设置 SPF
- 在 Squarespace 上设置 SPF
- 在 Wix 上设置 SPF
- 在 AWS Route 53 上设置 SPF
- 在 Hostinger 上设置 SPF
- 在 Porkbun 上设置 SPF
- 在 IONOS 上设置 SPF
- 在 Bluehost 上设置 SPF
常见问题
我不懂技术——这个我自己能搞定吗?
你不需要弄懂细节。这个改动就是往你的域名设置里加一两行字,由管理你网站的人或你的 IT 服务商来做。把下面的「如何修复」一节交给他们就行——通常几分钟搞定,而且是免费的。我们只收取长期监控它是否保持正确的费用。
我们已经有 SPF 记录了——这不就够了吗?
不一定。有记录只是上半场;把它设置得足够严格才是下半场。一条以「~all」(软失败)结尾、背后又没有 DMARC 的记录,等于在告诉收件服务器「这可能是假的,但还是收下吧」——保护几乎为零。两条 SPF 记录,或一条查询次数过多的记录,会被判定为失效,看上去存在却毫无保护。两个环节都得对。
修复这个会不会不小心搞坏我自己的邮件?
如果记录漏掉了某个合法的发件方就有可能——比如以你名义发邮件的开票应用或邮件营销工具。这正是为什么稳妥的做法是:先把所有以你名义发邮件的服务全部列出来,先用宽松的「~all」发布,确认没有遗漏后,再收紧到硬失败。按这个顺序来就不会出问题。
「~all」和「-all」有什么区别,我们该用哪个?
「-all」(硬失败)告诉收件方拒收任何不在你清单上的邮件——最强的设置。「~all」(软失败)则说「大概不合法,但还是先收下」。如今的最佳实践推荐用「~all」配合 DMARC 策略为「reject」——这一对组合既能提供与「-all」相同的保护,又不会有转发邮件被退回的风险。单独用「~all」、背后没有 DMARC 强制执行,才是要避免的弱配置。
SPF 单靠自己就能阻止所有邮件伪造吗?
不能——它是必不可少的第一层,但不是全部答案。SPF 声明哪些服务器可以替你发邮件,但它不告诉收件方在邮件验证失败时该怎么做,也管不到用户看到的那个可见「发件人」名称。要彻底锁死冒充,你还需要 DKIM 和 DMARC。SPF 是最快、收益最高的第一步,所以从这里开始,再补上另外两个。
多久会生效,会不会要花钱?
DNS 改动通常几分钟到几小时内生效。修复本身永远免费——只是在你的 DNS 服务商那里改个设置而已。如果有人告诉你加一条 SPF 记录需要购买付费产品,那是错的。