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

如何使用openssl验证电子邮件中的DKIM签名?,openssl,dkim,Openssl,Dkim,我已经为我的后缀设置了opendkim,现在所有发送的邮件都有DKIM签名标题。我想做的是在没有DNS和外部实用程序的情况下手动验证消息是否得到了正确的签名,最好只使用openssl。 因此,作为输入数据,我有: 电子邮件的DKIM签名头 DKIM选择器,DKIM域 DKIM私钥 DKIM公共签名,如果是我需要放入DNS的记录格式 问题是如何使用某些CLI实用程序(如openssl)用DKIM公共签名解密和/或验证DKIM签名?这是可以做到的,但很复杂实用程序是最好的方法,但如果您坚持,下面

我已经为我的后缀设置了opendkim,现在所有发送的邮件都有DKIM签名标题。我想做的是在没有DNS和外部实用程序的情况下手动验证消息是否得到了正确的签名,最好只使用openssl。 因此,作为输入数据,我有:

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

问题是如何使用某些CLI实用程序(如openssl)用DKIM公共签名解密和/或验证DKIM签名?

这是可以做到的,但很复杂实用程序是最好的方法,但如果您坚持,下面是如何做到的

  • 准备验证所需的标题并添加 最后的dkim签名没有实际的签名哈希

  • 根据使用的规范化算法规范化标头

  • 如果为主体设置了限制,则需要将其剪切,然后将其规范化为

  • 计算主体散列,如果它与dkim签名中的散列相同,则继续

  • 通过提供以下参数,使用OpenSSL验证标头哈希:

    a。标题散列

    b。规范化的标题

    c。公钥

    d。使用的哈希算法(SHA1或SHA256)

  • 我无法向您提供示例命令,因为我使用了PHP的openssl_verify()函数来实现这一点

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

    直接从电子邮件来源进行验证
    • 下载电子邮件,通常是
      .eml
      文件

    • 安装python

    • pip安装dkimpy

    • dkimfirify

      或者你可以

      • dkimfirify
      • 粘贴源
      • Ctrl+D

    其他方法
    • 安装thunderbird,配置您的帐户,然后安装加载项
    • 如果您想大规模验证mbox存档文件

    感谢这些步骤,总有一天我会尝试实现它,但现在我们决定使用整个堆栈会更高效(更快),这意味着在我们的邮件流中使用DNS服务器和Amavist进行验证。它减缓了验证,有点,但保证DKIM将与真正的验证服务。你考虑OpenMKIN吗?这是一个Linux应用程序,您可以安装并向其发送电子邮件进行验证。