DKIM DNS 记录生成器
只需输入选择器(selector)名称和公钥(PEM格式),即可自动生成用于DKIM签名的DNS TXT记录(v=DKIM1; k=rsa; p=...)。超过255个字符的长公钥会自动按BIND区域文件格式进行分段。
拼出 DKIM 用的 DNS 记录
输入选择器名与 PEM 格式的公钥,本工具便拼出用于验证 DKIM 签名的 DNS TXT 记录,形如 `v=DKIM1; k=rsa; p=...`。它该落在 `选择器._domainkey.您的域名` 之下。
**此处人人都会撞上的,是 DNS 的 TXT 记录每条字符串至多 255 个字符这一限制。** RSA 2048 位的公钥以 Base64 计约有 390 个字符,**照原样便塞不进一条字符串。** 在区域文件里,它以括号括起、拆作数条字符串来写,**接收一方再把它们接回成一个取值。** 本工具连这道拆分也一并替您做了。**另一件万万不可弄错的是:放进 DNS 的是公钥。** 私钥只该留在签名的服务器上,绝不可外流。
使用方法
- 输入域名与选择器名 选择器由您自取其名;每换一次密钥,便另起一个。
- 贴入 PEM 格式的公钥 **是以 `-----BEGIN PUBLIC KEY-----` 开头的那把,而非私钥。**
- 查看生成的记录 **一旦超过 255 个字符,输出便以括号拆开来给。**
- 登记到 DNS 以 TXT 记录置于 `选择器._domainkey.您的域名`。
用好本工具的小技巧
- 可以直接粘贴通过opendkim-genkey或OpenSSL的openssl genrsa → openssl rsa -pubout生成的PEM文件内容,换行符和头部行会被自动去除。
- 启用测试模式(t=y)后,部分接收方服务器在DKIM验证失败时可能不会直接拒绝邮件而是先观察。建议在切换到正式环境前的验证阶段使用。
- 将生成的记录添加到DNS后,建议使用本站的邮件送达诊断工具(SPF/DKIM/DMARC诊断)确认记录是否已生效。
- 常见密钥长度为1024位和2048位,2048位密钥生成的公钥字符串通常会超过255个字符从而被拆分为多段,这属于正常现象而非错误。
- 选择器名称可以自由设定,但如果同一域名使用多个邮件服务商,建议在名称中加入服务商名称(如"google"、"mailgun")以便于管理。
这些场景会用到
初次引入 DKIM
**密钥造好之后,它告诉您该怎样写进 DNS。**
轮换密钥
**以新的选择器添上一条记录,切换之后再删去旧的。**
确认拆分的写法
长密钥该怎么分,正是手写时最易出错的地方。
检验投递服务给的指示
**可确认外部服务递来的记录是否形制无误。**
DKIM 的术语
- 选择器
- 标识一把密钥的名称。**它构成 `selector._domainkey.example.com` 的开头,每把密钥各有其名。**
- 公钥
- **要放进 DNS 的那一把。** 接收一方凭它验证签名。
- 私钥
- 用来造出签名的密钥。**它只该留在发信服务器上,绝不可公开。**
- 255 字符的限制
- **TXT 记录中单条字符串的上限。** 更长者便拆作数条字符串来写。
- v=DKIM1
- 言明记录版本的标签,置于最前。
- k=rsa
- 密钥的种类。除 RSA 之外尚有 Ed25519,其密钥要短得多。
常见问题
闲话 ― 公钥加密如何防止邮件"冒充"
DKIM(DomainKeys Identified Mail)标准化于2004年,由Yahoo!和Cisco各自开发的技术(DomainKeys与Identified Internet Mail)整合而成。其核心是公钥加密:发送方使用私钥对根据邮件头和部分正文计算出的哈希值进行加密,并附加为DKIM-Signature头。接收方使用DNS中公开的公钥验证该签名,如果密钥对匹配,就能在数学上确认内容在发送后未被篡改。
SPF验证的是发送方IP地址这一网络层面的合法性,而DKIM则是对邮件内容本身施加数字签名,二者本质不同。因此即使邮件被正规中继服务器多次转发(SPF在这类转发场景中表现较弱),只要正文未被修改,DKIM签名依然有效。正因如此,在涉及转发的投递路径(如邮件列表)中,DKIM被认为比SPF更可靠。
选择器(selector)机制在实际运用中也很重要。当一个域名同时使用多个邮件服务商(自建服务器、Gmail、SendGrid等)时,可以为每个服务商分配独立的密钥对和选择器名称,从而单独吊销或更新密钥。即使某个密钥泄露,也不会影响其他选择器——这种运维上的灵活性,正是DKIM虽然只是一条简单的DNS记录,却能在大规模邮件基础设施中长期广泛使用的原因之一。