DKIM 检测工具
验证 DKIM 签名与邮件认证
常用选择器:
本页提供关于 DKIM 记录验证的原创、经人工审校的内容,涵盖选择器查询、公钥格式、密钥长度建议,以及 DKIM 验证失败的最常见原因。
DKIM(域名密钥识别邮件)是一种邮件认证方式,使用加密签名验证邮件在传输过程中未被篡改,并确认其确实由该域名的授权邮件服务器发送。
DKIM 的工作原理:
- 您的邮件服务器为每封外发邮件生成加密签名
- 签名使用私钥生成并添加到邮件头中
- 您在 DNS 记录中发布对应的公钥
- 收件邮件服务器使用公钥验证签名
- 如果签名有效,邮件即被视为真实且未被修改
DKIM 记录组成:
- 选择器:DKIM 密钥的唯一标识(例如 default、google)
- 域名:拥有该 DKIM 密钥的域名
- 公钥:用于签名验证的加密公钥
- 密钥类型:使用的算法(通常为 RSA)
- 版本:DKIM 版本(始终为 DKIM1)
DKIM 的好处:
- 防止邮件被篡改,确保消息完整性
- 帮助建立发件人身份与信誉
- 提升邮件投递率,降低被归类为垃圾邮件的概率
- 实施 DMARC 的必要组成部分
- 为已发送邮件提供不可否认性
最佳实践:
- 使用邮件服务商提供的选择器,并及时更新记录。
- 定期轮换 DKIM 密钥以提升安全性。
- 配置变更后及时测试签名是否有效。
第 1 步:生成 DKIM 密钥
使用您的邮件服务器或 DKIM 密钥生成工具生成一对公钥/私钥。
OpenSSL 命令(Linux/Mac):
第 2 步:创建 DNS 记录
在 DNS 中添加包含选择器和公钥的 TXT 记录。
DNS 记录格式
DKIM 记录示例
第 3 步:配置邮件服务器
配置您的邮件服务器,使用私钥为外发邮件签名。
常用邮件服务器
- • Postfix: 使用 OpenDKIM 或 rspamd
- • Exim: 内置 DKIM 支持
- • Sendmail: 使用 dkim-milter
- • Exchange: 内置 DKIM 签名
找不到 DKIM 记录
对 selector._domainkey.domain 的 DNS 查询无结果。
解决方案:核对选择器名称,并确保 DNS 记录已正确发布。
公钥格式无效
DNS 记录中的公钥格式错误或包含无效字符。
解决方案:重新生成公钥,并确保 base64 编码正确且无换行。
密钥长度过短
使用短于 2048 位的 RSA 密钥被认为不安全。
解决方案:生成新的 2048 位或 4096 位 RSA 密钥以提升安全性。
签名验证失败
收件邮件服务器无法通过 DKIM 签名验证。
解决方案:检查公私钥是否匹配,核对邮件服务器配置,并测试规范化设置。
选择器错误或密钥缺失
在预期的选择器位置找不到公钥。
解决方案:向邮件服务商确认选择器,并发布正确的 TXT 记录。
密钥不匹配
公钥与邮件服务器签名使用的私钥不一致。
解决方案:发布与邮件服务器所用私钥对应的公钥。
转发导致邮件头被修改
邮件被转发后邮件头发生变化,签名验证可能失败。
解决方案:使用 ARC 或宽松规范化,在转发过程中保留认证结果。
DKIM 测试工具:
发送测试邮件
向测试地址发送邮件,检查邮件头中的 DKIM-Signature
Mail-Tester.com
向测试地址发送邮件,获取全面的 DKIM 分析
Gmail 邮件头
在 Gmail 中查看「显示原始内容」以查看 DKIM 验证结果
命令行
使用 dig 或 nslookup 验证 DNS 记录是否已发布
什么是 DKIM 选择器?
选择器是一个唯一标识,允许同一域名拥有多个 DKIM 密钥。它用于 DNS 记录名称(selector._domainkey.domain.com)和 DKIM 签名邮件头中。
可以为多个域名使用同一个 DKIM 密钥吗?
技术上可行,但出于安全考虑不建议这样做。每个域名应拥有自己独立的 DKIM 密钥对,以保持适当的隔离与安全性。
应该多久轮换一次 DKIM 密钥?
建议每年轮换一次,或出现安全问题时轮换。轮换时先发布新密钥,再更新邮件服务器配置,最后在宽限期后删除旧密钥。
DKIM 验证失败会怎样?
DKIM 失败并不意味着邮件一定被拒绝。收件服务器可能仍会投递邮件,但将其标记为可疑。最终处理取决于收件方的 DMARC 策略。
每个子域都需要 DKIM 吗?
只有发送邮件的子域需要 DKIM 记录。每个发送子域应有自己的 DKIM 配置,因为 DKIM 记录不会从父域继承。
一个域名可以有多条 DKIM 记录吗?
可以。使用不同选择器可以拥有多条 DKIM 记录,这适用于密钥轮换、不同邮件服务器或需要独立 DKIM 密钥的第三方邮件服务。
DKIM 代表什么?
域名密钥识别邮件(DomainKeys Identified Mail)——一种使用数字签名的邮件认证方式。
DKIM 公钥发布在哪里?
发布在 DNS 的 TXT 记录中,位置为 selector._domainkey.yourdomain。
DKIM 会加密邮件吗?
不会。DKIM 通过签名证明邮件完整性与真实性,并不加密邮件内容。
