Winmail 和 DKIM

什么是 DKIM

     DKIM 全称 域名密钥识别邮件标准, 是 DomainKeys Identified Mail 的缩写,目的是防止电子邮件欺诈, 发送方会在电子邮件的标头插入 DKIM-Signature 及电子签名资讯,而接收方则透过 DNS 查询得到公钥后进行验证, 这是一种反垃圾邮件的功能,另外系统设置了 DKIM 外发数字签名,可以让接收服务器更信任外发的邮件,可以提高外发邮件的到达率。 目前腾讯、gmail 等都支持 DKIM。


DKIM 的工作原理

     DKIM 的基本工作原理基于传统的密钥认证方式,先生成两组密钥,公钥(public key)和私钥(private key),公钥将会存放在 DNS 中, 而私钥会存放在发信服务器中。数字签名会自动产生,并依附在邮件头中,发送到收件人的邮件服务器里。公钥则放在DNS服务器上,供自动获得。收件人的服务器, 将会收到夹带在邮件头中的签名和在DNS上获取对应域名的公钥,然后进行比对,比较发件人的域名是否合法,如果不合法,则判定为垃圾邮件。 由于数字签名是无法仿造的,因此这项技术对于伪造域名的垃圾邮件制造者将是致命的打击。
winmail dkim 原理
Winmail 里 DKIM 的设置方法( Winmail 6.0 以上版本,以 abc.com 为例 )

1. 收件 DKIM 验证,在"反垃圾设置"/"SMTP设置"下, 选择"启用 DKIM (DomainKeys Identified Mail) 检查"。

winmail dkim

2. Winmail 里设置域名发件使用 DKIM 数字签名
在要设置的域名 abc.com 属性的 DKIM 标签里点击"生成私钥"
winmail dkim
"选择器"一定要有,默认是: mail,可以自己设置,完整拷贝上面的 "TXT 记录",例如:

      mail._domainkey.abc.com TXT k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ...

另外也可以自己使用 openssl 工具生成一对公钥和密钥,Windows 和 Linux 都可以操作,请自行搜索方法; 或者在 http://dkimcore.org/tools/ 网站在线生成。 把生成的私钥输入上面的栏位中,Winmail 会从私钥自动生成公钥进而生成 TXT 记录值,所以只输入私钥就可以了。

3. 在域名服务商域名解析系统里增加一条 TXT 记录,例如:

    记录类型     主机记录                        记录值
      TXT      mail._domainkey     k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ...

增加 TXT 记录后,需要一段时间(10分钟-24小时)才能生效,可以使用命令行查询:

        nslookup -q=txt mail._domainkey.abc.com

        如果已经生效,会显示:

                mail._domainkey.abc.com text = "k=rsa\; p=MIGfMA0GCSqGSIb3..."

4. 如果 Winmail 里有多域名,DKIM 要生成不同的密钥分别设置,也可以有的设置有的不设置

5. 接收邮件测试,确认 DKIM 检查生效

    可以使用 qq 或者 gmail 邮箱发进来一封邮件,查看 Winmail 里的 smtp 日志,会有出现 DKIM verifying enabled启用 DKIM 验证 字样。

6. 发送邮件测试,确认每封邮件信头里存在 DKIM 数字签名字串

    发一封邮件到内部邮箱,发给自己也可以,查看 Winmail 里的 smtp 日志,会有出现 DKIM signing enabled启用 DKIM 签名 字样。 在 Webmail 里查看这封邮件,选择"更多"-"邮件源码",在邮件头里会出现一段如下文字:

  DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
     d=abc.com; s=mail; t=1458090487; h=Date:From:To:
     Reply-To:Subject:Message-ID:Content-Type:MIME-Version; bh=RBrzM2
     ccFCYSkSJUKwSj5FQ/IQj6UrOI1/+rZiw0+aI=; b=Esn3j84HzzVC+VbRgf/i7N
     ...
     SWtPgVyJx91CJKFGbVaFI=

    外发一封邮件到外网邮箱,查看 Winmail 里的 smtp 日志,会有出现 DKIM signing enabled启用 DKIM 签名 字样。 如果是发到 qq.com, 在 QQ Webmail 打开这封邮件,选择 - "显示邮件原文",在邮件头里会出现一段如下文字:

 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
     d=abc.com; s=mail; t=1458091059; h=Date:From:To:
     Reply-To:Subject:Message-ID:Content-Type:MIME-Version; bh=JtLpkA
     GBbI9j6KEs01UI/CKmX5rvvrJ6O9QcCgb5i1I=; b=J5xXBMdm8Q5Y66orv+Skoq
     ...
     cT/oVvXPMvEbi+mJwoqbM=