DKIM DNS 记录生成器
只需输入选择器(selector)名称和公钥(PEM格式),即可自动生成用于DKIM签名的DNS TXT记录(v=DKIM1; k=rsa; p=...)。超过255个字符的长公钥会自动按BIND区域文件格式进行分段。
使用提示
- 可以直接粘贴通过opendkim-genkey或OpenSSL的openssl genrsa → openssl rsa -pubout生成的PEM文件内容,换行符和头部行会被自动去除。
- 启用测试模式(t=y)后,部分接收方服务器在DKIM验证失败时可能不会直接拒绝邮件而是先观察。建议在切换到正式环境前的验证阶段使用。
- 将生成的记录添加到DNS后,建议使用本站的邮件送达诊断工具(SPF/DKIM/DMARC诊断)确认记录是否已生效。
- 常见密钥长度为1024位和2048位,2048位密钥生成的公钥字符串通常会超过255个字符从而被拆分为多段,这属于正常现象而非错误。
- 选择器名称可以自由设定,但如果同一域名使用多个邮件服务商,建议在名称中加入服务商名称(如"google"、"mailgun")以便于管理。
常见问题
这是用于在同一域名下区分使用多个DKIM密钥的标识符。DNS中记录会以"选择器._domainkey.域名"的形式公开,发送邮件的DKIM-Signature头中s=标签的值会与之匹配,并使用对应选择器的公钥验证签名。
由于DNS的TXT记录单个字符串(character-string)最多为255字节,超出部分会被拆分为多个带引号的字符串并无缝拼接,作为一条TXT记录注册。本工具生成的BIND格式表示已经处理好了这种拆分。
不能。本工具只负责组装要发布到DNS的记录,不会生成私钥。请使用opendkim-genkey或OpenSSL等可信工具,在自己的环境中安全地生成和保管私钥。
建议在刚部署DKIM、需要确认在实际发送环境中签名与验证是否正常工作的阶段使用。部分接收方对带有t=y的域名的DKIM验证失败会采取更宽松的处理方式,这在正式上线前起到安全缓冲的作用。
目前RSA(k=rsa)是实务上的标准,因为支持的收发服务器范围最广。Ed25519(k=ed25519,RFC 8463)密钥更短、签名更快,但仍有部分邮件服务器不支持,建议仅在确认双方环境都能正常工作时才采用。
闲话 ― 公钥加密如何防止邮件"冒充"
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记录,却能在大规模邮件基础设施中长期广泛使用的原因之一。