排查 DKIM 问题

如果您设置了域名密钥识别邮件 (DKIM),但从您网域发出的邮件仍然出现以下情况,请按照本文中的步骤操作:

  • 未通过 DKIM 身份验证
  • 遭到了邮件接收服务器的拒绝
  • 发送到了收件人的“垃圾邮件”文件夹

本页内容

最常见的解决方案

确保您拥有 DKIM 记录

查看您是否拥有 DKIM 记录:

  • 如果您未在使用 Google Workspace,请使用互联网上提供的工具。
  • 如果您正在使用 Google Workspace,请按照本部分中的步骤操作。
  1. 在 Google 管理控制台中,依次点击“菜单”图标 然后 应用 然后 Google Workspace 然后 Gmail

    需要拥有“Gmail 设置”管理员权限

  2. 点击对电子邮件进行身份验证
  3. 所选网域菜单中,选择您要设置 DKIM 的网域。
  4. 如果 DNS 主机名和 TXT 记录值为空,则表示您没有 DKIM 记录。

如需创建新的 DKIM 记录,请参阅生成 DKIM 密钥对。然后,前往为网域添加 DKIM 记录(在本页面上)。

为网域添加 DKIM 记录

创建 DKIM 记录后,您必须将该记录(其中包含 DKIM 密钥)添加到您的网域。

  1. 登录域名托管服务商网站。
  2. 前往用于更新域名 DNS TXT 记录的页面。
  3. 使用您的 DKIM 主机名和推荐值添加或更新 TXT 记录。

请参阅为您的网域添加 DKIM 密钥

修正身份验证错误

如果您在创建 DKIM 记录并将其添加到网域后收到“未进行身份验证”错误,则需要完成设置。

建议执行的步骤:前往对电子邮件进行身份验证页面,然后点击启动身份验证。请参阅启用并验证 DKIM

验证 DKIM 记录值

确保您的 DKIM 记录包含正确的主机名/TXT 记录名称和 TXT 记录值/DKIM 密钥。请参阅为网域添加 DKIM 密钥

成功的标准是什么?

创建 DKIM 记录后,请将该记录添加到您的网域,修正所有身份验证错误,并验证您的 DKIM 记录是否包含正确的值。之后,您的 DKIM 状态应显示为“通过 DKIM 对电子邮件进行身份验证”。设置已完成。

高级问题排查

检查邮件是否通过 DKIM 身份验证

您可以在 Gmail 中查看电子邮件是否通过了 DKIM 身份验证。

建议步骤

  1. 在浏览器中打开 Gmail
  2. 打开要查看其标头的电子邮件。
  3. 点击“回复”图标 旁边的“更多操作”图标 然后 显示原始邮件
    • 系统会在新窗口中显示完整的标头。
  4. 点击复制到剪贴板

其他步骤

在域名提供商处验证 DKIM 密钥

大多数 DKIM TXT 记录最多可包含 255 个字符。由于 TXT 记录存在 255 个字符的限制,您无法以单个文本字符串的形式输入 2048 位密钥。您的 DKIM 密钥可能会被截断,或者 DKIM 记录可能会以错乱顺序发送。

建议步骤

  • 如果您无法以单个文本字符串的形式输入整个 DKIM TXT 记录值,请按照验证 TXT 记录字符数限制中的步骤操作。
  • 将提供商的 DKIM TXT 记录值与管理控制台中的值作比较,并验证 DKIM 密钥是否正确:
    1. 通过管理控制台获取 DKIM TXT 记录值,例如 google._domainkey
    2. 前往 Google 管理员工具箱中的 Dig 工具。
    3. 点击 TXT
    4. 输入您在第 1 步中获取的 DKIM TXT 记录值,接着输入一个句点 (.) 和您的域名。
    5. 将结果与管理控制台中的值作比较。如果结果已包含所有密钥字符且均按正确顺序排列,则 DKIM 密钥可以分成 2 个部分。

检查邮件转发

即使您网域的 DKIM 设置正确,转发的邮件也可能无法通过 DKIM 检查。这可能是邮件服务器转发邮件的方式所致。

适用于电子邮件发件人的推荐步骤

  • 确保邮件在传输过程中未遭更改。找到 Authentication-results: 标头。如果 dkim 条目旁边的文本是 body hash did not verify,则表示消息已在传输过程中被修改。
  • 如果您使用出站网关,请确保它在发送外发邮件之前不会对其进行修改。例如,部分出站网关会在每封外发的消息底部添加页脚。这可能会导致 DKIM 失败,因为邮件内容在发送后发生了变化。

适用于电子邮件收件人的建议步骤

  • 使用电子邮件日志搜索来验证邮件是否曾经过转发。如果将邮件举报为垃圾邮件的用户并非原收件人,则邮件很可能经过了转发。
  • 联系转发邮件的服务,了解他们能否更改转发邮件的方式。

另请参阅向 Gmail 转发电子邮件的最佳做法

验证 TXT 记录字符数限制

如果您在输入 DKIM 值时出错,可能是因为您的域名提供商限制了 DNS TXT 记录中允许的字符数。

建议步骤

如果您使用的是 2048 位 DKIM 密钥,则无法在 DNS 记录(255 个字符数限制)中以单个文本字符串的形式输入该密钥。而应按以下步骤操作:

  1. 将密钥字符拆分成多个文本字符串。
  2. 将每个字符串放在英文引号中。
  3. 在域名提供商的“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 的商标。其他所有公司名和产品名是其各自相关公司的商标。