技术解析 · 附来源的解答
什么是 DKIM 选择器?
DKIM 选择器是一个唯一字符串,用于在域名的 DNS 记录中标识某个特定公钥。它允许发件人在同一域名下使用多个 DKIM 密钥,从而实现密钥轮换,并能同时使用不同的签名服务而不产生 DNS 记录冲突。
工作机制
选择器在 DNS 查询中起到指针的作用。收件服务器在邮件头中看到 DKIM 签名时,会在签名中查找选择器的值,然后构造针对 selector._domainkey.example.com 记录的 DNS 查询。这样,收件方就能取回验证该邮件加密签名所需的确切公钥。
对发件人的重要性
选择器对运维连续性至关重要。借助选择器,发件人可以定期轮换密钥以保持安全,而不会导致身份验证失败。如果某个密钥泄露,可以部署新的选择器,同时逐步淘汰旧的选择器。这可以避免中断,并确保在切换期间合法邮件仍能通过身份验证检查。
常见运维错误
一个常见错误是签名服务器使用的选择器与 DNS 记录中发布的选择器不一致。如果签名工具使用 selector1,而 DNS 记录发布在 selector2 下,验证就会失败。另一个常见错误是没把握好 DNS 传播时间:在 DNS 记录传播到全球所有解析器之前,就已经开始使用新选择器发送邮件。
具体示例
如果一家公司使用两种不同的服务,可能会为新闻通讯工具使用 selector-marketing,为应用通知使用 selector-transact。对应的 DNS 记录就是 marketing._domainkey.example.com 和 transact._domainkey.example.com。您可以使用 https://sendhq.cc/tools 上的免费工具检查这些记录,确保公钥已正确发布。
密钥轮换策略
最佳实践是生成新的密钥对,并以新的选择器名称发布。新选择器传播完成后,再更新发信服务器,改用新密钥签名。旧选择器记录会保留一小段时间,让收件方能够验证切换前刚刚发出的邮件,然后再安全删除。
团队常问的问题
一个域名可以有多个 DKIM 选择器吗?
可以。域名可以配置多个选择器,以支持不同的发信服务,或实现无缝的密钥轮换。
选择器在邮件中的什么位置?
选择器位于邮件的 DKIM-Signature 邮件头中,具体在 s= 标签里。
更改选择器会影响 SPF 吗?
不会。DKIM 选择器与 SPF 记录相互独立,不会影响 SPF 的配置或验证。
如果 DNS 中缺少选择器会怎样?
收件服务器将无法找到公钥,导致 DKIM 结果为 permerror 或 fail。
一手资料
- RFC 6376:DomainKeys 识别邮件(DKIM) — RFC Editor
- Cloudflare DNS 文档 — Cloudflare