我已经为我的 postfix 设置了 opendkim,现在所有外发邮件都有 DKIM-Signature 标题。我想要做的是手动验证,没有 DNS 和外部实用程序,最好只使用 openssl,消息正在获得正确的签名。所以作为输入数据我有:
- 电子邮件的 DKIM 签名标头
- DKIM 选择器,DKIM 域
- DKIM 私钥
- DKIM 公共签名,如果我需要将记录的形式放入 DNS
问题是如何使用诸如 openssl 之类的 CLI 实用程序使用 DKIM 公共签名解密和/或验证 DKIM 签名?
下载电子邮件,通常是一个.eml
文件
安装蟒蛇
pip install dkimpy
dkimverify < email_file.eml
或者,您可以
dkimverify
可以做到,但它很复杂,实用程序是最好的方法,但如果你坚持,这里是如何做到的。
准备验证所需的标头,并在末尾添加 dkim-signature,但不包含实际的签名哈希。
根据使用的规范化算法规范化标头。
如果为主体设置了限制,则需要将其剪切然后将其规范化。
计算正文哈希,如果它与 dkim 签名中的相同,则继续。
使用 OpenSSL 通过提供以下参数来验证标头哈希:
一种。标头哈希。
湾。规范化的标头。
C。公钥
d。使用的散列算法(SHA1 或 SHA256)。
我无法为您提供示例命令,因为我使用了 PHP 的 openssl_verify() 函数来执行此操作。
如果您告诉我您是否已经这样做以及如何做到这一点,我将不胜感激。