如何使用openssl验证电子邮件中的DKIM签名?

时间:2012-05-22 00:59:46

标签: openssl dkim

我为我的postfix设置了opendkim,现在所有外发邮件都有DKIM-Signature标题。我想要做的是手动验证,使用DNS和外部实用程序,最好只使用openssl,消息正在获得正确的签名。 所以输入数据我有:

  • 电子邮件的DKIM-Signature标题
  • DKIM Selector,DKIM Domain
  • DKIM私钥
  • DKIM公共签名,如果我需要提交给DNS的记录的形式

问题是如何使用像openssl这样的CLI实用程序解密和/或验证DKIM公共签名的DKIM-Signature?

2 个答案:

答案 0 :(得分:1)

直接从电子邮件的来源进行验证

  • 下载电子邮件,通常是 .eml 文件

  • 安装python

  • pip install dkimpy

  • dkimverify < email_file.eml

    你也可以

    • dkimverify
    • 粘贴来源
    • Ctrl+D

source

其他方法

答案 1 :(得分:0)

它可以做到,但它很复杂,实用程序是最好的方法,但如果你坚持,这里是如何做到的。

  1. 准备验证所需的标头并添加 dkim-signature最后没有实际的签名哈希。

  2. 根据使用的规范化算法规范化标题。

  3. 如果为身体设定了限制,则需要将其剪切,然后将其标准化为。

  4. 计算正文哈希值,如果它与dkim签名中的哈希值相同,则继续。

  5. 使用OpenSSL通过提供以下参数来验证标头哈希:

    一个。标题哈希。

    湾规范化标题。

    ℃。公钥

    d。使用的散列算法(SHA1或SHA256)。

  6. 我无法为您提供示例命令,因为我使用了PHP的openssl_verify()函数来执行此操作。

    如果您告诉我您是否已经这样做以及如何做,我将不胜感激。