Defaults.Exposed › 设置 › SPF
如何在 AWS Route 53 上配置 SPF
在你的 Route 53 托管区域中添加一条 SPF 记录,让邮箱服务商能分辨出你的真实邮件和伪造邮件。
这件事对你的生意意味着什么
SPF(发件人策略框架,Sender Policy Framework)是你域名 DNS 里的一条简短声明,列出哪些邮件服务器有权以你的名义发信。当有人收到一封声称来自你的邮件时,他们的邮件服务商会去核对这份名单。如果发信服务器不在名单上,这封邮件就会显得可疑——要么被丢进垃圾箱,要么直接被拦截。
说白了:SPF 让别人更难以邮件方式冒充你的生意,同时帮助你真正发出的邮件进到收件箱、而不是垃圾邮件文件夹。它只是一条记录,免费,几分钟就能搞定。
开始之前:你的 DNS 真的是由 Route 53 托管的吗?
这是大多数人会弄错的一步。一条 DNS 记录只有在由 Route 53 来应答你域名的 DNS 查询时才会起作用。
Route 53 是 DNS 托管商,不是邮箱服务商——它负责应答 DNS,但不运行你的收件箱。这里有两点很关键:
- 托管区域必须是当前生效的那个。 在 Route 53 控制台中打开 Hosted zones(托管区域),选中你的域名。记下该区域显示的四个 NS(域名服务器)值。
- 你域名的域名服务器必须指向这些值。 如果你是通过 Route 53 注册的域名(在 **Registered domains(已注册域名)**下),通常已经对齐好了。但如果你是在别处注册的,或者同一域名有不止一个托管区域,那么当前生效的域名服务器可能指向了完全不同的地方——而你在这里加的任何东西都不起作用。请到你的注册商处核对域名服务器,确保它们与这个托管区域里的四个 NS 值一致。如果不一致,请改到你 DNS 实际所在的地方去添加 SPF 记录。
先弄清一件事:是谁在替你发邮件?
SPF 必须列出每一个替你域名发信的服务。常见的有 Google Workspace、Microsoft 365,或托管你邮箱的任何服务商。每一家都会公布一个供你填进 SPF 记录的值(通常类似 Google 的 include:_spf.google.com,或 Microsoft 365 的 include:spf.protection.outlook.com)。请到你邮件服务商自己的帮助页面去查确切的值——这正是你必须填对的部分。
如果你通过 Amazon SES(亚马逊自己的邮件发送服务)发信,请注意:SES 默认使用另一套机制,对 SES 而言 SPF 是可选的——但如果你在 SES 中设置了自定义的 MAIL FROM 域,请按照 SES 针对该域的确切说明操作。SES 是与 Route 53 相互独立的服务;Route 53 只负责存储 DNS 记录。
Route 53 分步操作
- 登录 AWS 控制台,打开 Route 53。
- 在左侧菜单中选择 Hosted zones(托管区域),然后点击你域名的名称。
- 点击 Create record(创建记录)。
- 如果你看到带路由策略选项的向导,请切换到简单表单(找 Quick create record(快速创建记录))——SPF 不需要任何高级路由。
- 把 Record name(记录名称)字段留空。空名称表示「域名本身」。控制台会在该字段旁显示你的域名,所以你无需重新输入。
- 把 **Record type(记录类型)**设为 TXT。
- 在 **Value(值)**字段中填入你的 SPF 文本,并用双引号包起来:
"v=spf1 include:_spf.google.com ~all"把include:部分替换成你实际邮件服务商告诉你的那个(些)值。在 Route 53 中,外层的引号是必需的——详见下方的坑。 - TTL 保持默认即可(300 秒没问题)。
- 点击 Create records(创建记录)。
Route 53 上人们常踩的坑
- TXT 值必须加双引号。 与一些会替你加引号的 DNS 托管商不同,Route 53 要求你自己输入引号。请填
"v=spf1 ... ~all",而不是v=spf1 ... ~all。漏掉引号是 Route 53 上最常见的单一错误。 - 根域名的记录名称要留空。 名称留空表示域名本身。如果你在 Name 字段里填了完整域名,Route 53 会再追加一遍区域名,你会得到
yourdomain.com.yourdomain.com——一条永远不会被核对到的记录。 - 每个域名只能有一条 SPF 记录。 你不能有两条
v=spf1的 TXT 记录——邮件服务商会判定为损坏。如果根域已经存在一条 TXT 记录,请编辑它来加入新服务,而不要再建第二条 SPF 记录。 - 选对托管区域、选对账户。 如果你有多个托管区域(或多个 AWS 账户),很容易改错。请确保你正在编辑的区域,其 NS 值与你当前生效的域名服务器一致。
~all与-all的区别。~all(软失败)表示「未列出的都可疑」;-all(硬失败)表示「拒收任何未列出的」。在你确认一切都能正常发信之前先用~all,等确定名单完整后再收紧为-all。- 改动不是即时的。 DNS 更新在全网扩散可能需要几分钟到几个小时不等。
验证是否生效
保存记录并稍等片刻让它生效后,用本站的免费检测来核对。它会用通俗的语言告诉你 SPF 记录是否存在、格式是否正确。
完成了? 免费检查您的域名 以确认设置已生效——并查看您在全部 34 项检查中的完整评级。