邮件送达率与 DNS

DKIM 选择器:配置、验证与密钥轮换指南

作者:Alexey Bulygin
DKIM 选择器与 DNS 公钥查询关系示意

你通常只有在邮件认证失败、Gmail 将邮件归入垃圾邮件,或供应商要求发布特殊记录时,才会注意到DKIM 选择器,例如 tm1._domainkey.example.com 这样的 TXT 记录。这看起来只是小标签,但配置错误可能导致 DKIM 失败;若没有成功且对齐的 SPF,DMARC 也可能失败,从而影响投递。

同一域名使用多个发送服务时,问题更复杂。邮箱主机、营销工具和 CRM 各自使用不同密钥。不了解选择器,就难以判断签名由谁负责、应该轮换哪条 DNS 记录,以及为什么某条邮件流通过而另一条失败。整体配置可先参考商务邮箱指南。

把选择器视为查找 DKIM 密钥的标识。理解它与 DNS 的对应关系后,配置和排查就能按步骤进行。

什么是 DKIM 选择器?

DKIM 选择器是签名中的标签,告诉接收服务器从 DNS 获取哪个公钥。它让同一域名同时发布多个密钥,用于不同系统、邮件流或密钥轮换。

选择器不是密钥本身,而是查询提示。它出现在 DKIM-Signature 邮件头的 s= 标签中,签名域名则在 d= 中。接收方将两者组合成 selector._domainkey.example.com 这样的查询,从 TXT 记录获取公钥。

RFC 6376明确规定,验证方使用 d= 的域名和 s= 的选择器寻找公钥记录。选择器缺失或错误,会影响该签名的验证。

邮件包含 d=example.coms=tm1 时,接收方查询 tm1._domainkey.example.com

DKIM 选择器具体有什么作用?

它告诉接收方,某封邮件应使用哪个 DKIM 公钥,便于同一域名使用多个密钥而不发生名称冲突。

主要有三个运维用途。

  1. 区分发送服务。客服平台和事务邮件应用可以使用不同选择器。
  2. 支持密钥轮换。先发布新选择器,再切换签名,等旧邮件处理完毕后停用旧密钥。
  3. 限制影响范围。一家供应商的密钥泄露或被撤销,不一定需要修改其他发送服务。

因此,维护规范的系统常使用多个DKIM 记录,每条配有独立选择器,并像其他凭据一样管理,而不是永远共用同一个密钥。

术语含义示例重要性
选择器DKIM 签名中的查询标签tm1指定要查询的记录
签名域名d= 标签中的域名example.com定义 DKIM 的域名身份
DNS 主机名选择器加 ._domainkey 再加域名tm1._domainkey.example.com公钥所在位置
公钥记录DNS 返回的 TXT 记录v=DKIM1; p=...供接收方验证签名

在哪里找到 DKIM 选择器?

可以在邮件头或发送供应商的 DNS 说明中找到。真实邮件中,它是 DKIM-Signature 的 s= 值。

打开已收到邮件的原始邮件头,搜索 DKIM-Signature:,关注两个标签:

  • d= 显示签名域名。
  • s= 显示 DKIM 选择器。
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=tm1;
 c=relaxed/relaxed; h=from:to:subject:date:message-id;
 bh=...; b=...

本例选择器是 tm1,需要检查的 DNS 记录为:

tm1._domainkey.example.com TXT

设置新发送服务时,供应商通常提供选择器名称,以及 TXT 值或 CNAME 目标。TrekMail 描述的域名流程会显示必需记录并在面板中检查状态。有关必需 DNS 记录检查 DNS 状态的文档可帮助填写准确字段。

如何在 DNS 中发布选择器?

selector._domainkey.yourdomain.com 创建 DNS 记录。通常是含 DKIM 公钥的 TXT,也有供应商使用 CNAME 指向其托管密钥。

两种常见模式如下。

基于 TXT 的 DKIM:

Host: tm1._domainkey
Type: TXT
Value: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ...

基于 CNAME 的 DKIM:

Host: tm1._domainkey
Type: CNAME
Value: tm1.example-com.dkim.vendor.net.

供应商指定选择器时,不要自行改名。若要求 s1,就发布 s1._domainkey。若 TrekMail 为实际使用的发送路线显示 dkim._domainkey,应准确使用该主机名和值。Nano 使用外部发送服务时可参考自定义 SMTP(BYO),但真正签名的供应商配置才是依据。

如何测试选择器是否正常?

先确认 DNS 记录可解析,再检查真实邮件是否使用相同选择器并通过 DKIM 验证。

首先直接查询 DNS:

dig +short TXT tm1._domainkey.example.com
nslookup -type=TXT tm1._domainkey.example.com

空响应可能表示记录缺失、主机名错误、缓存未更新或其他 DNS 问题,单凭这一结果无法确定原因。

然后发送实际邮件,检查邮件头:

Authentication-Results: mx.google.com;
 dkim=pass header.i=@example.com header.s=tm1 header.b=...
 spf=pass smtp.mailfrom=example.com;
 dmarc=pass header.from=example.com

应检查:

  • dkim=pass
  • header.s=tm1 与已发布选择器一致
  • header.i 并非 DMARC 的 DKIM 对齐依据;应检查 d= 是否与 From 域名对齐

经常转发邮件时,也可阅读邮件转发。转发可能让 SPF 失败;如果签名覆盖的数据未被破坏,有效且对齐的 DKIM 可能维持 DMARC 通过,但不保证投递。

为什么选择器对应的验证会失败?

常见原因包括 DNS 主机名错误、密钥值损坏、实际签名使用另一选择器,或中继在签名后修改了邮件。

生产环境常见以下情况。

  1. DNS 主机名错误:发布了 _domainkey.tm1,而非 tm1._domainkey
  2. 域名错误:签名使用 d=mg.example.com,选择器却发布在 example.com 下。
  3. DNS 区域不一致:记录存在于非权威服务器,权威服务器却没有。
  4. 密钥被截断:DNS 面板粘贴时缩短了 TXT 值。
  5. 旧选择器仍在使用:密钥已经轮换,发送系统却继续用旧名称签名。
  6. 签名后内容变化:转发服务或网关修改了受保护的邮件头或正文。

Google 发件文档说明,不满足认证要求的邮件可能被限速或阻止。Google 也提到转发容易影响 SPF。因此,正确选择器很重要,但只是完整签名验证的一部分。

如何为选择器命名?

名称宜简单、明确,并与运维用途相关。好的名称能让团队迅速识别密钥负责人,减少故障时翻查多个管理面板的时间。

defaultkey1test 可以工作,但长期看缺少背景信息。更明确的示例:

  • tm1 用于 TrekMail 托管发送
  • ses2026q1 用于 Amazon SES 密钥轮换
  • crm1 用于 CRM 平台
  • mktg2026a 用于营销邮件

若供应商允许自定义名称,可用名称说明密钥归属和启用时间。管理多个域名时,这有助于审计,尤其是在多域名邮箱托管场景中。

如何降低选择器轮换风险?

在新选择器下发布新密钥,切换签名,等待旧邮件不再依赖原密钥,最后再移除旧记录。

除非供应商明确要求,否则不要直接覆盖活跃密钥。更谨慎的流程:

  1. 创建新选择器,例如从 tm1 切换到 tm2
  2. 发布新的 DNS 记录。
  3. 等待并验证 DNS 更新。
  4. 将发送系统切换至新选择器。
  5. 发送测试邮件,确认新选择器的 dkim=pass
  6. 在合适的过渡期内保留旧记录。
  7. 确认没有系统继续使用旧密钥,且此前邮件不再需要它后,才移除记录。

多个出站系统共存时尤其要如此。旧方式是长期共用一个密钥,依赖每个人记住配置;新方式为各发送系统分配独立选择器,计划轮换,并缩小变更影响。

TrekMail 如何处理选择器?

TrekMail 描述了 DNS 配置值和状态检查,以及付费套餐的托管发送和 Nano 的 BYO SMTP。它们有助于减少主机名和 DNS 状态判断的猜测,但实际功能应以当前套餐为准。

邮箱托管方面,所描述的功能包括统一域名面板、共享存储、通过邀请开通、转发和内置 IMAP 迁移。出站邮件另有两种模式:

  • 付费套餐可使用 TrekMail 托管 SMTP,据描述用你的域名 DKIM 密钥签名。
  • Nano 使用 BYO SMTP,活跃选择器和签名行为由外部发送供应商控制。

外部供应商负责签名时,通常采用其 DNS 说明中的选择器;TrekMail 托管 SMTP 负责签名时,采用面板显示的对应记录。文中 Starter 起价为每月 $3.50,付费套餐提供 14 天试用并要求信用卡,Nano 被描述为免费且没有试用期。请在TrekMail 价格页核实当前条件,以及不按用户收费的固定费用模式。

DKIM 选择器故障排查清单

按固定顺序排查:确认邮件头选择器,检查准确主机名上的 DNS 记录,确认发送系统使用它,并检查传输过程是否损坏签名内容。

  1. 查看实际邮件,记下 s=d=
  2. 直接在 DNS 查询 selector._domainkey.domain
  3. 检查权威服务器,而不只看注册商界面。
  4. 确认供应商要求 TXT 还是 CNAME。
  5. 比较 From 域名与签名域名,检查 DMARC 对齐。
  6. 若邮件在转发、网关或邮件列表软件中变化,重新测试。

如果直发邮件通过而转发邮件失败,原因可能是转发方破坏签名,而非选择器。Google 的转发说明也提到这种情况。可同时阅读将域名邮件转发到 Gmail

总结:关于选择器应记住什么?

DKIM 选择器告诉接收方,应从 DNS 获取哪个公钥。记住这一对应关系,大部分 DKIM 排查会更清晰。

正确选择器、正确 DNS 主机名和对应签名配置是必要条件,却不保证 DKIM 验证或投递成功。先查邮件头,再查 DNS,最后查传输中的内容变化。按发送系统分开选择器,用新名称轮换而不是直接覆盖。TrekMail 描述的多域名服务包括托管、DNS 检查、迁移工具和不按用户收费的固定价格,使用前请核实当前条件。

分享这篇文章

我们使用运行和保护 TrekMail 所必需的技术。确认后还会允许《Cookie 政策》中所述的有限分析和广告衡量。

登录 TrekMail

访问您的控制面板、邮箱和 DNS。

12 个字符 两次密码一致

重置邮件已发送

如果该邮箱对应已有账户,我们已发送密码重置说明。

继续即表示您同意 TrekMail 的 服务条款隐私政策.