我使用 Amazon Simple Email Service(Amazon SES)发送的电子邮件未通过发件人策略框架(SPF)对齐或域名密钥标识的邮件(DKIM)对齐的基于域的邮件身份验证、报告和符合性(DMARC)验证。如何解决此问题?
简短描述
DMARC 是一种电子邮件身份验证协议,其使用 SPF 和 DKIM 来检测电子邮件欺骗。为了符合 DMARC,邮件必须通过 SPF 和/或 DKIM 进行身份验证。
对于 SPF 对齐或 DKIM 对齐的 DMARC 验证,电子邮件标头中的关键组成部分是:
- 向邮件收件人显示的 From 地址
- 指明邮件来源地的 Mail From 或 Envelope From 地址
- DKIM 签名中的 d= 域
DMARC 通过将 Mail From 或Envelope From 域与 From 域匹配来检查 SPF 对齐。必须满足下列对齐之一:
- **严格对齐:**Mail From 或 Envelope From 域与 From 域相同。
- **宽松对齐:**Mail From 或 Envelope From 域是 From 域的子域。
DMARC 通过匹配 DKIM 签名中的 d= 域和 From 域来检查 DKIM 对齐。必须满足下列对齐之一:
- **严格对齐:**d= 域与 From 域相同。
- **宽松对齐:**d= 域是 From 域的子域。
解决方案
要通过 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. 电子邮件标头的 From 地址中的域必须与发送邮件服务器向接收邮件服务器指定的 Mail From 或 Envelope From 域一致。
在使用 Amazon SES 发送电子邮件时,Mail From 或 Envelope From 域默认为 amazonses.com,而 From 域是您验证的域。这些值未通过 SPF 对齐和 DMARC 验证。
要解决此问题,必须设置自定义 MAIL FROM 域,以使 Mail From 值成为已验证域的子域。例如,如果已验证域(From 域)是 example.com,则可以将自定义 Mail From 域设置为 mail.example.com。这些值会通过 SPF 对齐和 DMARC 验证。
**注意:**使用 Amazon SES,将 SPF 记录添加为自定义 Mail From 子域的一部分。有关说明,请参阅 Configuring the MAIL FROM domain。
通过 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. 电子邮件标头中的 From 地址必须与 DKIM 签名中的 d= 域一致。
最好是设置 Easy DKIM,因为此功能允许您通过 DKIM 满足这两个 DMARC 验证要求。您也可以选择手动签署电子邮件,但是 Amazon SES 不会验证您构建的 DKIM 签名。