邮件送达率与 DNS

DKIM 密钥生成器:创建密钥并配置 DNS

作者:Alexey Bulygin
DKIM 密钥对、选择器与 DNS 中的公钥

如果你在寻找DKIM 密钥生成器,通常是因为域名尚未为邮件签名,或者签名无法通过收件方验证。这些问题可能影响投递。没有签名的邮件可能受到更严格的筛选,但 DKIM 失败不一定导致 DMARC 失败:通过验证且域名对齐的 SPF 仍可满足要求。认证配置有误时,密码重置邮件、账单和客户邮件可能进入垃圾邮件或隔离区。

把配置分成几个步骤,处理起来就清楚了。DKIM 密钥生成器创建供发送系统使用的私钥,以及需要发布到 DNS 的对应公钥。接收服务器根据规范化规则验证已签名数据的签名,而不是确认可见发件人所代表的个人身份。

如果你还在搭建整套邮件环境,可以先阅读我们的企业邮箱指南。如果已经使用自有域名收发邮件,本文会介绍DKIM 密钥生成器应提供的内容、密钥长度、选择器及 DNS 发布步骤。

DKIM 密钥生成器到底做什么

DKIM 密钥生成器创建一对加密密钥。私钥留在发送系统中,用于签署外发邮件;公钥以选择器为索引发布到 DNS,供接收服务器验证邮件头中的 DKIM 签名。

这个过程并不神秘。合适的DKIM 密钥生成器应完成三件事:

  1. 生成发送系统能够使用的私钥。
  2. 导出对应的公钥。
  3. 把公钥整理为可在 selector._domainkey.example.com 下发布的 DNS TXT 记录。

真正需要仔细处理的是配置,而不是数学运算。选择器、DNS 主机名、换行方式和发送系统必须对应,实际邮件的签名才能正常验证。

根据 RFC 6376,选择器支持同时发布多个密钥,并有序轮换。RFC 8301 要求 RSA 密钥至少为 1024 位,并建议使用 2048 位密钥。如果DKIM 密钥生成器仍推荐 512 位密钥或 SHA-1,应选择其他工具。

生成结果应该是什么样

合适的DKIM 密钥生成器会提供签名私钥,以及适合 DNS 发布的公钥记录。记录位于选择器主机名下,而不是域名根节点;公钥必须放在 p= 标签中。

下面是记录的基本格式。

Host: tm2026._domainkey.example.com
Type: TXT
Value: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...

以下 OpenSSL 流程可在本地生成密钥对,避免把私钥交给网页DKIM 密钥生成器。注意,最后一条命令也会显示私钥组成部分,不能公开分享输出,也不要把它存入公开日志。

openssl genrsa -out dkim-private.pem 2048
openssl rsa -in dkim-private.pem -pubout -out dkim-public.pem
openssl rsa -in dkim-private.pem -text -noout

然后仅把公钥转换为许多 DNS 控制面板所需的单行值:

awk 'NF {sub(/\r/, ""); printf "%s",$0;}' dkim-public.pem \
| sed 's/-----BEGIN PUBLIC KEY-----//; s/-----END PUBLIC KEY-----//g'

较长的 TXT 值可以拆成多段带引号的字符串,但这些字符串必须属于同一条 TXT 资源记录。如果在密钥内部插入额外空格,可能导致验证失败。

理解方式:选择器是密钥的标识,不是密钥本身。如果签名包含 s=tm2026,接收方会查询 tm2026._domainkey.yourdomain.com。没有可用的正确记录,DKIM 就无法通过验证。

如何选择选择器和密钥长度

合适的DKIM 密钥生成器应生成 2048 位 RSA 密钥。SHA-256 是发送系统签名时使用的哈希算法,不由密钥生成过程决定。选择器名称应清楚易懂,便于轮换,可以把它当成版本标签。

名称可以体现密钥的使用时间或用途,例如:

  • tm2026
  • app1q1
  • marketing2026

不太合适的做法包括:

  • 长期使用 default 而没有轮换计划
  • 在生产环境使用 test
  • 所有发送系统共用 dkim
选项是否建议原因
1024 位 RSA仅在确有限制时使用符合最低长度要求,但不应作为新配置的目标。
2048 位 RSA建议适用于许多域名和 DNS 服务商的常见选择。
单个永久选择器不建议增加轮换和密钥泄露应急处理的难度。
带版本的选择器建议可以先发布新密钥,再停用旧密钥。

RFC 8301 规定最低为 1024 位,并建议使用 2048 位。Google 的批量发件人要求包括 DKIM 和 SPF;直接发往个人 Gmail 帐号时,至少 SPF 或 DKIM 要与 From 域名对齐。具体要求见 Google 的发件人指南常见问题

选择DKIM 密钥生成器时,不要只看能否生成密钥。2048 位长度、清晰的选择器命名和可执行的轮换流程,才是实际运维的重点。

如何发布 DNS 并有序启用签名

DKIM 密钥生成器只完成部分工作。你还需在发送系统实际使用的选择器主机名下发布 TXT,考虑 DNS 缓存影响,确认公钥可查询后再启用新签名。

常见错误包括:

  1. 把 TXT 发布在 @,而不是 selector._domainkey
  2. 把完整 PEM 包装内容粘贴到 DNS,而不是仅发布 Base64 公钥。
  3. DNS 记录尚不可查询就启用签名。
  4. 邮件平台使用了错误的选择器。

在 TrekMail 添加域名时,DNS 配置流程会显示所需记录。添加域名文档也说明 DKIM TXT 值。使用自备 SMTP 时,应采用实际外发服务商提供的密钥和选择器。保存后运行内置验证;如记录仍有疑问,可查看DNS 状态检查

转发邮件可能导致 SPF 失败,但只要已签名内容在规范化规则下保持不变,DKIM 仍可能通过。如果 DKIM 域名也满足对齐要求,DMARC 就可能通过;仅有 DKIM pass 并不足够。转发方面的细节可参阅把域名邮件转发到 Gmail

如何确认 DKIM 密钥在真实邮件中生效

使用DKIM 密钥生成器并发布记录后,要检查真实邮件头。DNS 正确并不代表发送系统已经签名。应确认 dkim=pass,并另外检查 DMARC 所需的域名对齐。

发送一封邮件到 Gmail 邮箱,查看原始邮件头。结果可能如下:

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

如果 DKIM 失败,按顺序检查:

  1. DKIM-Signature 邮件头中的 s= 选择器。
  2. dig 查询对应的准确 DNS 主机名。
  3. 确认 DNS 公钥与发送系统载入的私钥匹配。
  4. 确认发送系统在 d= 中使用所需签名域名。
  5. 检查邮件列表、自动页脚或中继是否修改了已签名邮件头或正文。
dig +short TXT tm2026._domainkey.example.com

说明不充分的DKIM 密钥生成器可能让排错更费时。除了密钥,还应了解选择器主机名、验证方法及域名对齐。d= 域名必须与可见 From 域名对齐:宽松模式允许相同组织域名,严格模式要求完全一致。若 SPF 通过且对齐,DMARC 也可能在 DKIM 未对齐时通过。

其余配置可参考创建自有域名邮箱邮件转发,以及 TrekMail 的垃圾邮件排查文档。

分散工具与统一配置流程的区别

单独的DKIM 密钥生成器、DNS 面板、分别用于应用和通讯邮件的 SMTP 服务,加上尚未完成的 DMARC 策略,会增加协调成本。更换服务商、错误轮换密钥或邮件转发,都可能暴露原有认证缺口。

把域名、邮箱、DNS 检查和发送配置放进共同流程,可以减少配置环节之间的脱节。

TrekMail 可根据套餐和实际配置提供以下功能:

  • 在同一控制面板管理自有域名和 IMAP 邮箱。
  • Nano 套餐使用自备 SMTP,或在适用的付费套餐中使用托管 SMTP。
  • 通过内置迁移功能从 IMAP 拉取旧邮件。
  • 套餐支持时使用 Catch-all、邮箱转发和 API。
  • 面向 SPF、DKIM 和 DMARC 的 DNS 与认证配置流程。

管理多个域名时,一致的配置流程尤其有用。代理机构和 MSP 还需要权衡费用与管理工作量。作为价格参考,TrekMail 列出 Starter 每月 $3.50 起,以及自备 SMTP 时 $0 的 Nano,最多支持 10 个域名和 5GB 存储。付费套餐可能提供 14 天试用并要求信用卡,Nano 则提供无需信用卡的方案。选择前请核实当前价格、条件和功能。

需要保留旧邮件时,可通过 TrekMail 的IMAP 迁移流程从 Gmail、Microsoft 365 或其他 IMAP 服务导入,具体取决于源服务访问方式和可用邮件。

轮换、撤销与长期维护

DKIM 密钥生成器不仅用于初次设置。应有计划地轮换密钥、有序移除旧选择器,并按需为不同发送系统使用独立选择器,以便限制故障影响和定位问题。

可以采用以下流程:

  1. 生成新的 2048 位密钥,并使用新选择器。
  2. 把新公钥发布到 DNS。
  3. 确认可查询后,让发送系统改用新选择器签名。
  4. 确认新邮件显示 dkim=pass
  5. 保留旧选择器足够长时间,让队列中已签名的邮件完成发送。
  6. 计划的过渡期结束后移除旧公钥。

如果私钥泄露,应更换并结合事件情况撤销旧密钥。带版本的选择器比长期使用 default 更便于处理。

DKIM 密钥生成器无法修正不良发送行为。认证是基础,信誉也很重要。Google 的发件人指南涉及垃圾邮件投诉、SPF、DKIM 和 DMARC。运维还需保持 DNS 正确、合理增加发送量,并面向真正愿意接收邮件的用户。

结论:生成密钥后,还要验证完整配置

DKIM 密钥生成器只是起点。关键是正确的选择器、已发布的公钥、发送系统中对应的私钥,以及真实邮件中的 dkim=passDMARC 域名对齐

生成 2048 位密钥,使用带版本的选择器,正确发布 TXT,并检查真实邮件头。统一流程可能简化多服务商、多域名管理。TrekMail 根据套餐提供自有域名、IMAP 邮箱、共享存储池、IMAP 迁移和 DNS 检查,并采用不按用户逐一收费的套餐模式。可在 trekmail.net 查看开始使用的条件,或到 trekmail.net/pricing 比较套餐。

分享这篇文章

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

登录 TrekMail

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

12 个字符 两次密码一致

重置邮件已发送

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

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