Email Spam Tester

Home › 集成 › 指南 › Amazon SES

指南 · 无需连接

测试 Amazon SES 邮件

SES 会原样发送你提交的内容,自身几乎不添加任何内容。只要你的账户已脱离沙盒,就很容易测试。这也意味着报告发现的大多数问题都需要你来修复。

指南 · Amazon SES

测试来自 Amazon SES 的邮件

一个地址,一封邮件,有效期一小时。无需账户或 API 密钥。

获取测试地址

第 1 步

验证域名

Easy DKIM:三个 CNAME。如果还希望 SPF 对齐,请使用自定义 MAIL FROM 子域。

第 2 步

向测试地址发送一封真实邮件

在具有生产访问权限的 Region 中运行 aws sesv2 send-email。一个地址,一封邮件,一小时。

第 3 步

查看报告

预期 SPF 会对 amazonses.com 验证通过,但显示为未对齐,DMARC 则通过 DKIM 验证。退订邮件头需要你自己添加。

先检查沙盒状态,因为这决定了邮件能否发送。新的 SES 账户在每个 Region 中默认都处于沙盒内。在沙盒中,SES 只能向已验证的地址、已验证的域名和它自己的邮箱模拟器投递邮件。此外,每 24 小时最多发送 200 封邮件,每秒最多发送 1 封。

验证 Email Spam Tester 地址无法绕过此限制。SES 会向收件人发送一封包含链接的邮件来验证地址,而我们的地址只接收一封邮件,随后就会关闭,因此这封验证邮件会直接耗尽该地址。实际使用时,你需要在发件所用的 Region 中申请生产访问权限。AWS 承诺在 96 小时内对该申请作出初步回复。

由于沙盒状态按 Region 分别设置,即使账户在 eu-west-1 中已进入生产环境,在 us-east-1 中仍可能处于沙盒内。身份验证也按 Region 分别设置,每个 Region 都有各自的 DKIM 记录。

获取地址并发送一封邮件

打开 email-spam-tester.com,复制页面显示的地址。无需账户或 API 密钥,地址格式为 test- 加二十个字符,域名为 t.email-spam-tester.com。该地址有效期为一小时,并且只能接收一封邮件,因此请先准备好发送命令,再获取地址。

最简单的发送方式是使用 CLI。以下命令改编自 AWS 在 SES 租户页面提供的示例,移除了租户和配置集参数:

aws sesv2 send-email \
  --from-email-address "sender@yourdomain.com" \
  --destination "ToAddresses=test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com" \
  --content "Simple={Subject={Data='Test Subject',Charset=utf-8},Body={Text={Data='Test email body',Charset=utf-8}}}"

即使在生产环境中,From 也必须是已验证的身份。像这样的纯文本正文足以测试身份验证和 IP,但几乎无法测试邮件内容。要获得实际判断结果,请发送你的应用实际发送的邮件,包括 HTML 部分和邮件头。还要使用相同的代码路径,无论是 boto3 的 send_email、SMTP 库还是其他方式。如果生产环境发送邮件时使用配置集,也请在这里添加 --configuration-set-name,让测试使用相同的设置。

收件箱测试可以接入同一条命令。将其各提供商的收件箱地址与测试地址一起放入 ToAddresses,并将其标记放入 Subject 数据。一次调用即可生成两份报告,第二份报告会列出邮件在 Gmail、Outlook、Yahoo 和其他提供商中进入的文件夹。这些收件箱同样未经验证,因此也需要生产环境访问权限。

也可以通过控制台发送。打开 Configuration > Identities,点击对应身份并选择 Send test email。如果要粘贴包含自定义邮件头的完整 MIME 邮件,请选择 Raw。AWS 将控制台描述为通常仅用于发送测试邮件的工具,并且文档中没有说明会为邮件添加测试前缀或进行其他更改。在沙盒中,Custom recipient 字段必须填写已验证的地址,这又回到了上面的问题。

报告中的新 SES 身份是什么样的

来自报告 · 身份验证

  • SPF通过未对齐MAIL FROM 是 amazonses.com 的子域名,而不是你的域名的子域名。
  • DKIM通过已对齐Easy DKIM 使用你域名上的 2048 位密钥为每封邮件签名。
  • DMARC通过发布 DMARC 记录后,通过对齐的 DKIM 签名验证。

默认的 SES 身份:SPF 验证通过,但验证的是 amazonses.com。自定义 MAIL FROM 可以让它与你的域名对齐。

DKIM。 Easy DKIM 是域名身份的默认设置,它使用 2048 位密钥为每封邮件签名。设置时需要创建三条名为 token._domainkey.yourdomain.com 的 CNAME 记录,并让它们指向 token.dkim.<region>.amazonses.com。如果 DKIM 检查失败,先检查两点:DNS 是否已完成传播(AWS 最多允许 72 小时),以及你的 DNS 托管服务商是否在记录名称后又附加了域名,创建出了 token._domainkey.yourdomain.com.yourdomain.com。使用 BYODKIM 时,你改为在自己的选择器上发布一条 TXT 记录。在两者之间切换时,SES 可能发送完全没有签名的邮件,报告会将其标记为缺少 DKIM。DKIM 检查工具使用该令牌作为选择器。

SPF 和 Return-Path。 默认情况下,SES 使用 amazonses.com 的子域名作为 MAIL FROM。SPF 验证通过,但验证的是 amazonses.com,因此报告会显示 SPF 未与你的 From 对齐。DKIM 已对齐时,这只会扣少量分数(满分 100 分时扣 2 分,而不是 5 分),DMARC 仍然会通过 DKIM 验证。要同时对齐 SPF,请设置自定义 MAIL FROM 子域名,并只添加一条 MX 记录 10 feedback-smtp.<region>.amazonses.com 和一条 TXT 记录 v=spf1 include:amazonses.com ~all。不要选择用于接收邮件的子域名,也不要在 DMARC 记录中加入 aspf=s,因为 AWS 表示,在严格的 SPF 策略下,SES 无法实现 SPF 对齐。

DMARC。 SES 不会替你发布 DMARC 记录。AWS 提供的示例是 v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com。如果目前没有人阅读你的 DMARC 报告,建议从 p=none 开始,之后再收紧策略。DMARC 检查工具会显示你当前的配置,DMARC fail介绍了常见的配置问题。

这些是示例值。请从你的账户中复制实际值。

名称类型值用途复制
token._domainkey.yourdomain.comCNAMEtoken.dkim.<region>.amazonses.comEasy DKIM。共需三条,每个令牌对应一条。
mail.yourdomain.comMX10 feedback-smtp.<region>.amazonses.com自定义 MAIL FROM。只需一条 MX 记录,放在不接收邮件的子域名上。
mail.yourdomain.comTXTv=spf1 include:amazonses.com ~all自定义 MAIL FROM 的 SPF 记录,使 SPF 与你的 From 对齐。
_dmarc.yourdomain.comTXTv=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.comDMARC,这是 AWS 提供的示例。如果目前没有人阅读报告,请从 p=none 开始,并且不要加入 aspf=s。

List-Unsubscribe。 只有在发送邮件时,将 ListManagementOptions 指向联系人列表和主题,SES 才会添加 List-Unsubscribe 和 List-Unsubscribe-Post。即使如此,这也仅适用于单个收件人的邮件,并且只能使用 Easy DKIM,SES 还会覆盖你自行设置的所有退订邮件头。其他所有邮件在发送时都不会包含退订邮件头。对于新闻简报,这意味着 List-Unsubscribe 检查和一键退订检查都会失败,除非你自行添加这些邮件头。自 2024 年 3 月起,v2 API 支持在不使用原始 MIME 的情况下添加自定义邮件头。以下两个邮件头改编自 AWS 的一键退订博客文章:

"Headers": [
  { "Name": "List-Unsubscribe",
    "Value": "<https://yourdomain.com/unsub?address=x&topic=x>, <mailto:unsubscribe@yourdomain.com>" },
  { "Name": "List-Unsubscribe-Post",
    "Value": "List-Unsubscribe=One-Click" }
]

随后,你的端点必须处理该 POST 请求。没有列表邮件头的密码重置邮件和收据属于另一种情况,对于这类邮件,报告会将群发发件人检查组标记为已跳过。有关该邮件头的更多信息,请参阅我们的 List-Unsubscribe 页面。

IP 和黑名单

新账户使用与其他 SES 用户共享的 IP 发送邮件。AWS 建议继续使用共享 IP,除非你的发送量大且稳定。报告会查询发送 IP 是否被列入 21 个黑名单。对于共享地址,命中记录属于整个 IP 池。专用 IP 分为 Standard 和 Managed 两种。Standard 需要你手动预热,Managed 则由 SES 负责预热,此时黑名单记录与你自己的发送行为相关。你可以将在 Headers 选项卡中找到的任何 IP 直接放入黑名单检查工具中查询。

AWS 也会监控你的账户。其执行常见问题说明,你应使用确实能接收邮件的真实地址或模拟器进行测试,以免虚构的收件人导致退信率升高。当退信率达到 5% 或投诉率达到 0.1% 时,AWS 会将账户置于审核状态。

底部的修复方案最多列出八项更改。适用时,每项更改都会提供可复制的 DNS 记录。每项修复旁的分数是其所涉及检查项当前扣除的分数。模型会选择并说明修复方法,但不会估算价格。如果你不理解某个检查项的名称,可以查看文档,其中解释了全部 42 个检查项。

常见问题

可以从 SES sandbox 发送测试吗?

不能使用我们的地址进行测试。在 sandbox 中,SES 只向已验证的收件人投递邮件,而验证我们的地址会用掉该地址仅能接收的一封邮件。请为该 Region 申请生产访问权限,同时使用免费的 DKIM、SPF 和 DMARC 检查工具检查你的记录。

SES mailbox simulator 会提供相同的信息吗?

不会。它只会告诉你 SES 如何处理退信、投诉或投递,并且按正常发送计费。它不会分析你的邮件标头、身份验证或内容。

应该在根域名的 SPF 记录中加入 SES 吗?

接收方会根据 MAIL FROM 域名检查 SPF。默认情况下,该域名是 amazonses.com 的子域名,也可以是你的自定义 MAIL FROM 子域名。SES 的 SPF 记录应该配置在该子域名上。根据 MAIL FROM 页面,根域名不需要进行任何配置。

其他平台的指南

所有集成和指南 →

立即测试邮件

一个地址,一封邮件,有效期一小时。无需账户。各项检查完成后,报告会自动生成。

获取测试地址