我可以配置邮递员以使其不会破坏 S/MIME 数字签名吗?

我可以配置邮递员以使其不会破坏 S/MIME 数字签名吗?

我们目前使用 Mailman 作为邮件列表管理器。Mailman 会修改邮件内容。问题是我们的一些用户正在发送数字签名的邮件,而修改会导致签名失效。我在 Apple Mail、Outlook 和 Thunderbird 中都看到过这种行为。

问题似乎是这样的:S/MIME 签名消息是用Content-Type: multipart/signed;MIME Con​​tent-Type 实现的。Mailman 将其包装在Content-Type: multipart/mixedMIME Con​​tent-Type 中。没有邮件阅读器会在外部寻找mixed内部signed

我们无法修复客户端。有没有办法修改 Mailman 以使其不再出现此行为?

答案1

Mailman 可能配置为向每封邮件添加页眉或页脚。检查msg-headermsg-footer参数,可在 [非摘要选项] 页面上访问。

确保将其作为 [内容过滤] 部分中允许的类型之一pass_mime_types包含在内也很重要。application/pkcs7-signature

当 Mailman 配置为添加页眉或页脚时,它会通过创建新的 MIME 部分并将其与原始消息的根部分连接起来来修改消息。此行为的原因在Mailman 维基(wiki.list.org)。

尽管原始签名邮件仍然完好无损,但似乎大多数邮件客户端只有在 multipart/signed 是根 MIME 部分时才能正确解释 SMIME 签名。作为测试,我从其中一封测试邮件中删除了 mailman 插入的额外 MIME 部分并重新发送,我的邮件客户端正确验证了签名。

答案2

问题并不在于电子邮件客户端缺乏“智能”。

相反,这是一个安全问题。请参阅错误 578295 - 嵌套 MIME 消息中未显示/验证 S/MIME 签名

引用:

如果消息仅部分签名,则该消息未签名。特别是在 Thunderbird 环境中,如果我们声称消息仅部分签名,则该消息已签名,攻击者可以将签名的内容附加到永远不会显示的消息中,并在 UI 中显示已签名消息的外观。

因此,电子邮件客户端对部分签名的多部分消息不显示签名或显示无效签名是正确的。

相关内容