postfix + opendkim:“发件人:”和“消息 ID”字段未包含在签名中

postfix + opendkim:“发件人:”和“消息 ID”字段未包含在签名中

我让 postfix 和 opendkim 运行起来。postfix 通过 unix 套接字与 opendkim 通信。只要我不将一些特殊的邮件头字段添加到 opendkim 应签名的字段列表中,所有这些都可以正常工作。

后缀配置:

主文件:

...
smtpd_milters = unix:/var/spool/postfix/milter/opendkim

non_smtpd_milters = unix:/var/spool/postfix/milter/opendkim
...

在我的 opendkim.conf 中我有以下条目:

...
AlwaysSignHeaders      To,Subject,MIME-Version,Content-Type,Sender,From,Message-Id,Date,Reply-To,List-Unsubscribe
...

如果我使用 postfix sendmail 命令发送一封电子邮件,如下所示

sendmail -f [email protected] -i -t <<EOF
From: [email protected]
Sender: [email protected]
To: [email protected]
Subject: Test

Test
EOF

Gmail 将通知我:

dkim=hardfail

使用

Diagnostics true

opendkim.conf 中的条目通过“z=...”调试邮件头条目显示,opendkim 没有在签名中包含“Message-Id”和“Sender”字段,但报告了包含以下内容:

h=From:To:Subject:Date:MIME-Version:Content-Type:Sender:Reply-To:List-Unsubscribe;

邮件头条目。

深入研究后我发现,当我从 opendkim.conf 中的“AlwaysSignHeaders”条目中删除 Message-Id 和 Sender 字段后,Gmail 就又恢复正常了。

因为我使用 sendmail 命令发送邮件,所以我可以确定至少“发件人:”字段从一开始就必须对 postfix 和 opendkim 可用。

因此,如果 opendkim 将使用它获得的所有标头字段,则意味着 postfix 不会向 opendkim 提供所有标头字段。我尝试通过打开 postfix 的“清理”和“简单重写”过程的详细日志记录来验证这一点,但我不得不承认,我在日志中看不到任何有用的信息,特别是我无法提取 postfix 向 opendkim 提供的邮件标头字段的信息。如果有人可以利用它,我可以在这里发布这些日志...

我没什么主意了,所以我希望有人能给我一些有用的指点......

答案1

我找到了原因(在 opendkim 邮件列表的好心人的帮助下):

在我的 opendkim.conf 文件中我只有字段

AlwaysSignHeaders       From,Sender,To,CC,Subject,Message-Id,Date

指定。事实证明,您还需要添加 SignHeaders 字段,因此现在配置如下所示:

...
SignHeaders             From,Sender,To,CC,Subject,Message-Id,Date
AlwaysSignHeaders       From,Sender,To,CC,Subject,Message-Id,Date
...

就是这样。

编辑:

opendkim 的人们指出AlwaysSignHeaders已弃用,覆盖标头应该使用。

答案2

您是否尝试过使用以下方式签署测试消息两个都是否存在消息 ID:和发件人:标头?

您的问题可能是由于 milter 获取消息版本posstfix/MTA 添加了上面提到的标题(我确信任何好的 MTA 修复都缺少 Message-Id:标题)。

http://www.elandsys.com/resources/sendmail/dkim.htmlDKIM 使用电子邮件标头和正文生成签名。如果在签名后重写标头或将文本附加到邮件正文,则 dkim 验证失败。

PS 恕我直言,opendkim 应该提供选项来生成自身缺失的消息 ID:


为未来的读者添加:OpenDKIM 提供了调试“标头已更改”问题的选项:KeepTemporaryFilesTemporaryDirectory

http://www.opendkim.org/opendkim.conf.5.html

相关内容