验证签名的导出

作者:mailstore,更新时间:2020-07-16 15:20:45

如果使用EML或MSG格式,则可以对已归档消息的导出进行数字签名。这有助于确保每个导出的电子邮件驻留在存档之外时的完整性。可用于验证签名的公共密钥的SHA256哈希存储在存档的防篡改审核日志中。

 

先决条件

要验证签名导出的完整性,建议使用OpenSSL或LibreSSL。如果尚未在进行验证的计算机上安装OpenSSL或LibreSSL,请按照以下说明进行操作。

Linux或MacOS

使用内置的程序包管理来安装最新版本的OpenSSL或LibreSSL。

视窗

LibreSSL项目提供Windows二进制文件。从https://www.libressl.org下载最新可用版本,并将其解压缩到本地磁盘。

建议将包含openssl.exe可执行文件的位置添加到系统的PATH变量中。否则,在执行以下命令之前,请使用以下命令更新正在运行的PowerShell实例的PATH变量:

  env:Path += ";C:\PATH_TO_OPENSSL_EXECUTABLE"

创建公钥哈希

以下命令生成公用密钥的SHA256哈希,以便对照MailStore的审核日志中记录的哈希对它进行验证。

  openssl dgst -sha256 -hex publickey.pem

 

验证所有电子邮件

以下单行代码可用于验证已签名的导出,包括所有子目录。这些命令将在导出的目标目录中执行。

Linux或MacOS

  find . -name '*.eml' -exec openssl dgst -sha256 -verify publickey.pem -signature \{}.sig \{} \;

Windows(PowerShell)

  ls -r *.eml | ForEach-Object { $file_sig = ($_.FullName) + '.sig';  $file_eml = $_.FullName; Write-Host -NoNewLine ($_.Basename) `t": " ; openssl.exe dgst -sha256 -verify publickey.pem -signature  "$file_sig" "$file_eml" }