【问题标题】:How to verify DKIM signature from an e-mail with openssl?如何使用 openssl 从电子邮件验证 DKIM 签名?
【发布时间】:2012-05-28 12:03:02
【问题描述】:

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

  • 电子邮件的 DKIM 签名标头
  • DKIM 选择器,DKIM 域
  • DKIM 私钥
  • DKIM 公共签名(如果我需要将记录形式放入 DNS)

问题是如何使用诸如 openssl 之类的 CLI 实用程序使用 DKIM 公共签名解密和/或验证 DKIM 签名?

【问题讨论】:

    标签: openssl dkim


    【解决方案1】:

    直接从电子邮件来源验证

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

    • 安装python

    • pip install dkimpy

    • dkimverify < email_file.eml

      你也可以

      • dkimverify
      • 粘贴源码
      • Ctrl+D

    source

    其他方法

    【讨论】:

      【解决方案2】:

      可以做到,但是比较复杂,最好使用实用程序,但如果你坚持,这里是如何做到的。

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

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

      3. 如果为正文设置了限制,则需要将其剪切然后规范化。

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

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

        一个。标头哈希。

        b.规范化的标头。

        c。公钥

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

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

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

      【讨论】:

      • 感谢您的步骤,总有一天我会尝试实现它,但就目前而言,我们认为使用整个堆栈会更有效(更快) - 意思是使用 DNS 服务器和 Amavist 进行验证作为我们邮件流的一部分。它会稍微减慢验证速度,但可以确保 DKIM 将与真正的验证服​​务一起使用。
      • 你考虑过 OpenDKIM 吗?这是一个 Linux 应用程序,您可以安装它并向其发送电子邮件以进行验证。
      猜你喜欢
      • 1970-01-01
      • 2015-02-07
      • 2017-03-02
      • 1970-01-01
      • 2012-07-28
      • 2012-02-01
      • 2016-08-25
      • 2015-10-13
      • 2017-10-21
      相关资源
      最近更新 更多