我正在使用 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_AS
与MASQUERADE_DOMAIN
sendmail.mc