如果 Amazon SES 电子邮件的 SPF 对齐或 DKIM 对齐的 DMARC 验证失败,该怎么办?
上次更新日期:2022 年 7 月 14 日
我使用 Amazon Simple Email Service(Amazon SES)发送的电子邮件的发件人策略框架(SPF)对齐或域名密钥标识的邮件(DKIM)对齐的基于域的消息认证、报告和一致性(DMARC)验证失败。如何修复此问题?
简短描述
DMARC 是一种电子邮件身份验证协议,它使用 SPF 和 DKIM 检测电子邮件欺骗。要想符合 DMARC,您的消息必须通过 SPF 或 DKIM 或此两者的验证。
对于 SPF 对齐或 DKIM 对齐的 DMARC 验证,电子邮件标头中的主要组件包括:
- 显示为消息收件人的发件人地址
- 表示消息来源的邮件发件人或信封发件人地址
- DKIM 签名中的 d= 域
DMARC 通过将邮件发件人或信封发件人域与发件人域匹配来检查 SPF 对齐。必须满足以下对齐之一:
- 严格对齐:邮件发件人或信封发件人域与发件人域相同。
- 宽松对齐:邮件发件人或信封发件人域是发件人域的子域。
DMARC 通过将 DKIM 签名中的 d= 域和发件人域匹配来检查 DKIM 对齐。必须满足以下对齐之一:
- 严格对齐:d= 域与“发件人”域相同。
- 宽松对齐:d= 域是“发件人”域的子域。
解决方法
要通过 DMARC 验证,您的电子邮件必须符合 SPF 身份验证或 DKIM 身份验证。
在您的 DMARC 记录中使用 SPF 或 DKIM 的宽松对齐
对 SPF 或 DKIM 使用宽松对齐可帮助您的电子邮件通过 DMARC 验证。
要确定您的域的 SPF 和 DKIM 的 DMARC 对齐,请运行以下命令:
nslookup -type=TXT _dmarc.example.com
此命令会返回与以下内容类似的 DMARC 记录:
"v=DMARC1;p=quarantine;pct=25;rua=mailto:hello@example.com"
对于 SPF,如果记录不包含 aspf 字符串(如前面的示例中所示)或者记录包含字符串 aspf=r,则您的域将使用宽松对齐。如果记录包含字符串 aspf=s,则您的域将使用严格对齐。
对于 DKIM,如果记录不包含 adkim 字符串或者记录包含字符串 adkim=r,则您的域将使用宽松对齐。如果记录包含字符串 adkim=s,则您的域将使用严格的对齐。
从严格对齐更改为宽松对齐必须由系统管理员执行。
通过 SPF 符合 DMARC
要获取您的 SPF 记录,请运行以下命令:
nslookup -type=TXT example.com
此命令会返回与以下类似的 SPF 记录:
"v=spf1 include:amazonses.com ~all"
要确保您的消息通过 SPF 符合 DMARC,请检查以下各项:
1. 您的消息必须通过 SPF 检查。这意味着,您的域 SPF 记录必须包含“include:amazonses.com”,从而授权 Amazon SES 代表您的域发送电子邮件。
2. 电子邮件标头的发件人地址中的域必须与发件服务器向收件服务器指定的邮件发件人或信封发件人域对齐。
当您使用 Amazon SES 发送电子邮件时,邮件发件人或信封发件人域默认为 amazonses.com,发件人域为您验证的域。这些值没有通过 SPF 对齐和 DMARC 验证。
要解决此问题,您必须设置自定义“邮件发件人”域,以使邮件发件人值为验证域的子域。例如,如果经过验证的域(发件人域)为 example.com,则您可以将自定义邮件发件人域设置为 mail.example.com。这些值已通过 SPF 对齐和 DMARC 验证。
注意:使用 Amazon SES,您可以将 SPF 记录添加为自定义邮件发件人子域的一部分。有关说明,请参阅配置邮件发件人域。
通过 DKIM 符合 DMARC
当您在 Amazon SES 中使用 Easy DKIM 时,您将获得三个 CNAME 记录。要检查相应的 DKIM 记录,请在每个 CNAME 上运行以下命令:
nslookup -type=CNAME example1._domainkey.example.com
该命令会返回 DKIM 记录:
example1.dkim.amazonses.com.
要确保您的消息通过 DKIM 符合 DMARC,请检查以下各项:
1. 消息必须具有有效的 DKIM 签名。
2. 电子邮件标头中的发件人地址必须与 DKIM 签名中的 d= 域对齐。
最佳实践是设置 Easy DKIM,因为此功能可使您通过 DKIM 同时符合两个 DMARC 验证要求。您还可以选择手动签署电子邮件,但 Amazon SES 不会验证您构建的 DKIM 签名。