如果从您网域发出的邮件出现以下情况,请按照本文中的步骤进行问题排查:
- 未通过 DKIM 身份验证
- 遭到了邮件接收服务器的拒绝
- 发送到了收件人的“垃圾邮件”文件夹
您可以按照本文中的步骤找出并解决很多 DKIM 问题。
- 验证 DKIM 是否已正确设置
- 验证邮件是否通过 DKIM 身份验证
- 在域名提供商处验证 DKIM 是否正确
- 检查邮件转发
- 验证域名提供商 TXT 记录字符数限制
- 检查 DKIM 签名的数量
- 检查您的电子邮件发送做法
- 如果有服务器拒绝带有 DKIM 签名的邮件,请与相应服务器的管理员联系
验证 DKIM 是否已正确设置
请按照设置 DKIM 中的步骤操作,验证 DKIM 是否已正确设置。
验证邮件是否通过 DKIM 身份验证
您可以查看电子邮件中的邮件标头,了解从您网域发送的邮件是否通过了 DKIM 身份验证检查。
推荐执行的步骤:
- 检查从您网域发送的邮件的标头,确认邮件是否通过了 DKIM。
- 如果邮件未通过 DKIM 身份验证,请尝试向其他收件人(例如,个人 Gmail 电子邮件地址)发送邮件。这有助于排除接收服务器的问题。
- 在 Gmail 中打开邮件,点击显示原始邮件,然后在原始邮件中查看 DKIM 状态。详细了解如何在 Gmail 中查看邮件标头。
- 在 Google 管理员工具箱 Messageheader 工具中输入邮件标头,然后查看 DKIM 状态。
另请参阅检查 Gmail 邮件是否通过身份验证。
在域名提供商处验证 DKIM 密钥是否正确
大多数 DKIM TXT 记录最多可包含 255 个字符。由于 TXT 记录存在 255 个字符的限制,您无法以单个文本字符串的形式输入 2048 位密钥。您的 DKIM 密钥可能会被截断,或者 DKIM 记录可能会以错乱顺序发送。
推荐执行的步骤:
- 如果您无法以单个文本字符串的形式输入整个 DKIM TXT 记录值,请按照验证域名提供商 TXT 记录字符数限制中的步骤操作。
- 将提供商的 DKIM TXT 记录值与管理控制台中的值作比较,并验证 DKIM 密钥是否正确:
- 通过管理控制台获取 DKIM TXT 记录值,例如 google._domainkey。
- 转到 Google 管理员工具箱中的 Dig 工具。
- 点击 TXT。
- 输入您在第 1 步中获取的 DKIM TXT 记录值,接着输入一个句点 (.) 和您的域名。例如,如果您的域名为 example.com,DKIM TXT 记录值为 google._domainkey,请输入:google._domainkey.example.com。
- 将结果与管理控制台中的值作比较。如果结果已包含所有密钥字符且均按正确顺序排列,则 DKIM 密钥可以分成 2 个部分。
检查邮件转发
即使您网域的 DKIM 设置正确,转发的邮件也可能无法通过 DKIM 检查。这可能是邮件服务器转发邮件的方式所致。
适用于电子邮件发件人的推荐步骤:
- 确保邮件在传输过程中未遭更改。找到 Authentication-results: 标头。如果 dkim 条目旁边的文本是 body hash did not verify,则表示消息已在传输过程中被修改。
- 如果您使用出站网关,请确保它在发送外发邮件之前不会对其进行修改。例如,部分出站网关会在每封外发邮件底部添加页脚。这可能会导致 DKIM 失败,因为邮件内容在发送后发生了变化。
适用于电子邮件收件人的建议步骤:
- 使用电子邮件日志搜索来验证邮件是否曾经过转发。如果将邮件举报为垃圾邮件的用户并非原收件人,则邮件很可能经过了转发。
- 联系转发邮件的服务,了解他们能否更改转发邮件的方式。
另请参阅向 Gmail 转发电子邮件的最佳做法。
验证域名提供商 TXT 记录字符数限制
如果您在输入 DKIM 值时出错,可能是因为您的域名提供商限制了 DNS TXT 记录中允许的字符数。
推荐执行的步骤:
如果您使用的是 2048 位 DKIM 密钥,则无法在 DNS 记录(255 个字符上限)中以单个文本字符串的形式输入该密钥。而应按以下步骤操作:
- 将密钥字符拆分成多个文本字符串。
- 将每个字符串放在英文引号中。
- 在域名提供商的“TXT record Value”(TXT 记录值)字段中逐一输入字符串。
例如,您可以将一个长 DKIM 密钥拆分为两个文本字符串,并将每个字符串放在英文引号中:
"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAraC3pqvqTkAfXhUn7Kn3JUNMwDkZ65ftwXH58anno/bElnTDAd/idk8kWpslrQIMsvVKAe+mvmBEnpXzJL+0LgTNVTQctUujyilWvcONRd/z37I34y6WUIbFn4ytkzkdoVmeTt32f5LxegfYP4P/"
"w7QGN1mOcnE2Qd5SKIZv3Ia1p9d6uCaVGI8brE/7zM5c/zMthVPE2WZKA28+QomQDH7ludLGhXGxpc7kZZCoB5lQiP0o07Ful33fcED73BS9Bt1SNhnrs5v7oq1pIab0LEtHsFHAZmGJDjybPA7OWWaV3L814r/JfU2NK1eNu9xYJwA8YW7WosL45CSkyp4QeQIDAQAB"
您也可以尝试:
- 生成 DKIM 密钥对时,选择使用 1024 位密钥。
- 请与您的域名托管服务商联系,以了解是否支持超出 255 个字符数的 TXT 记录。如果支持,您可以按照生成 DKIM 密钥对中的步骤,使用 2048 位 DKIM 密钥更新 DNS 记录。
我们建议您在域名提供商处添加的 TXT 记录不要超过 49 条,因为这是大多数域名提供商支持的数量上限。
检查 DKIM 签名的数量
邮件可以使用多个 DKIM 签名进行签名。不过,Gmail 只会检查 Authentication-Results: 邮件标头中列出的前 5 个签名。Gmail 会按照签名在标头中的显示顺序进行检查。如果身份验证签名不是标头中列出的前 5 个签名之一,则邮件将无法通过 DKIM 身份验证。这也可能会导致邮件无法通过 DMARC 检查。
如需验证 Gmail 针对任何邮件检查的签名,请查看邮件中的 Authentication-Results: 标头。如需了解检查 Gmail 邮件标头的详细步骤,请参阅通过完整标头追踪电子邮件。
检查您的电子邮件发送做法
如果 DKIM 设置正确,但邮件被发送到垃圾邮件文件夹,则可能是 DKIM 以外的原因所致。
建议执行的步骤:
- 确保您向 Gmail 用户发送电子邮件时遵循了推荐的指南,特别是在发送大量电子邮件时。
如果有服务器拒绝带有 DKIM 签名的邮件,请与相应服务器的管理员联系
即使 DKIM 设置正确,邮件接收服务器仍可能会拒绝来自您网域的邮件,或将邮件发送至收件人的垃圾邮件文件夹。
推荐执行的步骤:
- 请与拒绝邮件的服务器的管理员联系。
- 设置 DMARC,以便接收关于 DKIM 身份验证结果的报告。请参阅设置 DMARC。
- 如果您使用 Google Workspace 以外的电子邮件系统设置 DKIM,请勿在外发邮件中使用 DKIM 长度标记 (l=)。使用此标记的消息容易遭到滥用。如需了解详情,请参阅 RFC 6376 的第 8.2 节。
“Google”、Google Workspace 以及相关标志和徽标是 Google LLC 的商标。其他所有公司名和产品名是其各自相关公司的商标。