使用 DeamonPortOptions 修复带有 genericstable 伪装的 DKIM 签名

使用 DeamonPortOptions 修复带有 genericstable 伪装的 DKIM 签名

我正在使用 sendmail 从我的 debian 服务器发送邮件。我希望能够使用 genericstable 伪装发送带有多个域的邮件。我正在使用 OpenDKIM 签名邮件,但由于 OpenDKIM 在伪装发生之前对邮件进行了签名,因此密钥不匹配。

OpenDKIM 解决了这个问题自述文件页面

由于 milter 协议与 MTA 的结合方式,opendkim 可以根据这两个功能的要求在修改报头之前查看这些报头。这意味着 DKIM 签名是基于邮件客户端最初注入的报头生成的,而不是基于 MTA 实际发送的报头。因此,接收方的验证代理将无法验证签名,因为签名的数据和收到的数据不匹配。

针对该问题的建议解决方案是:

(1)根据需要发送已经写好标题的邮件,从而无需这些功能(或直接关闭它们)。

(2) 设置两个 MTA,可以位于不同的机器上,也可以位于同一个机器上。第一个 MTA 应该执行所有重写操作(即使用这两个功能),第二个 MTA 应该使用 opendkim 添加签名,并且根本不执行重写操作。

(3) 配置文件中包含多行 DaemonPortOptions。第一个守护进程端口(端口 25)执行标头重写,然后将消息路由到第二个端口;后者不执行重写,但执行签名,然后发送消息。

我想使用第三个解决方案来解决问题,但我不知道如何开始。出于某些原因,我不想使用第一个解决方案。

我的 sendmail.mc 文件中当前的 DeamonPortOptions 是

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp')dnl
DAEMON_OPTIONS(`Family=inet,  Name=MSP-v4, Port=submission, M=Ea')dnl

是否可以将我的 sendmail 设置为使用 1 个端口进行伪装,使用另一个端口添加 DKIM 并发送,如 README 所建议的那样?

任何帮助将不胜感激!

答案1

我能够通过在我的submit.mc/submit.cf配置中添加伪装功能和设置来解决此问题。这样,本地邮件程序 (MSP) 就会在 MTA 将其发送到 DKIM 邮件发送器之前更改 From: 标头。

我使用了MASQUERADE_ASMASQUERADE_DOMAINsendmail.mc

相关内容