DKIM(域名密钥识别邮件)
DKIM(DomainKeys Identified Mail,域名密钥识别邮件)是一种邮件身份认证手段,它使用公钥密码学对邮件进行签名,验证邮件正文与附件在传输途中没有被篡改。
垃圾邮件发送者与黑客可能截获你的消息,冒充你的域名发送恶意邮件,这会损害你的邮件安全以及域名信誉。如果大量用户收到伪装成来自你的欺诈邮件,收件人会感到反感并直接将邮件丢入垃圾邮件文件夹;你甚至可能被错误录入不良发件人黑名单。
这种风险在2017年就已存在,时至今日依然不容忽视。
下文涵盖 DKIM 的全部核心知识点。
#DKIM 核心要点
- 为什么需要部署 DKIM
- 什么是 DKIM 记录
- DKIM 的工作原理
#为什么需要部署 DKIM
如果你希望在互联网服务商(ISP)侧建立长期良好的发件信誉,同时让收件人认可你的邮件合法性,部署 DKIM 将带来显著收益。
经过 DKIM 签名的邮件可以证明发件人的身份可信度,有助于邮件送达收件箱,而不是被扔进垃圾邮件箱。长期来看,DKIM 会对域名信誉产生正向作用,提升邮件送达率。
#什么是 DKIM 记录
DKIM 记录是格式特殊的 DNS TXT 记录,用于存放公钥,供收件邮件服务器校验邮件签名。
一条 DKIM 记录示例:
v=DKIM1;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBzXkunA
132Pf3SwHF7UKTODjFW8JKXUFWCHcNLvRHPCFDzJDPuAuoZq0XAIoOStu+Qq+/
ggm1zDYbgsaIkOmkBWV9m/NPQ3BbXNEnCqjsyVxWlrQs0R01W4ihsHM8BkbE7
dGRot1DdDM1HBMxrMDEOPuEZaNjtpgcJVRqswz7YwIDAQAB
字段说明:
v=DKIM1:代表 DKIM 协议版本p:密钥类型,此处为公钥- 以
MIGfMA0GC开头的长字符串,即为公钥本体
DKIM 记录通常由邮件发送服务商(例如 Postmark)提供;域名所有者需要将这条记录添加到发送域名的 DNS 解析中。
#DKIM 的工作原理与用途
简要流程: DKIM 依靠一对私钥/公钥完成工作,主要分为两步:
- 邮件向外发送时,使用私钥对邮件进行加密,生成唯一哈希字符串作为 DKIM 签名,附加到邮件头部。
- 收件服务器读取该域名 DNS 上发布的公钥,校验收到邮件的 DKIM 签名。收件服务器通过公钥验证签名无误后,邮件即通过 DKIM 校验,证明消息来源可信,并且内容在传输过程中未被篡改。
完整实现涉及更多复杂步骤。如果你希望深入研究,可以阅读完整三章节的 DKIM 深度指南。
#DKIM 常见问题
#SPF、DKIM、DMARC 三者有什么区别?
SPF、DKIM、DMARC 是三套邮件身份认证体系,用于防范冒充他人域名发送垃圾邮件、诈骗邮件、仿冒邮件的行为。
- SPF(发件人策略框架):基于域名的机制,定义哪些 IP 地址允许代表该域名发送邮件。
- DKIM(域名密钥识别邮件):针对单封邮件做签名,使用非对称加密,证明邮件传输过程没有被篡改。
- DMARC(基于域名的消息身份验证、报告与合规):构建在 SPF 和 DKIM 之上,告诉接收服务器对邮件采取:放行、隔离、拒绝等处置策略。
#开启 DKIM 之后邮件就绝对安全吗?
答案是否定的。DKIM 校验通过,并不代表这封邮件完全没有风险。 DKIM 签名会为邮件标记“责任归属方”。举例:Postmark 使用自身域名给所有外发邮件做 DKIM 签名,收件服务器会重点参考 Postmark 的整体信誉来过滤邮件。
#不配置 DKIM 还能发送邮件吗?
DKIM 可兼容现有邮件基础设施,与 SPF、DMARC 配合,为发送域名构建多层安全防护。 不支持 DKIM 的邮件服务器依然可以正常接收带 DKIM 签名的邮件。DKIM 属于可选安全协议,并未被所有系统普遍采用。