postfix + opendkim:“发件人:”和“消息ID”字段不包括在签名

我得到了postfix和opendkim的运行。 Postfix通过unix套接字与opendkim进行通信。 所有这些工作,只要我不添加一些特殊的邮件头字段的opendkim应该签署的字段列表。

后缀configuration:

main.cf:

... 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中input它通过“z = …”debugging邮件头条目显示opendkim没有在签名中包括“Message-Id”和“Sender”字段,但是报告了包含

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

邮件标题条目。

挖掘到这一点,我发现,当我从opendkim.conf中的“AlwaysSignHeaders”条目删除邮件标识和发件人字段比Gmail再次开心。

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

因此,如果opendkim将使用它获取的所有头字段,这意味着后缀是不赋予opendkim所有头字段。 我试图validation这个通过切换详细日志logging的“清理”和“平凡重写”过程的后缀,但我不得不承认,我没有看到任何有用的日志,特别是我不能提取信息哪个邮件头字段postfix提供给opendkim。 如果有人可以使用它,我可以在这里发布这些日志…

我没有想法,所以我希望有人能给我一些有用的指针。

我find了原因(在opendkim邮件列表的友好的帮助下):

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

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

指定。 事实certificate,你也需要添加SignHeaders字段,所以现在的configuration看起来像:

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

而已。

编辑:

opendkim的人指出, AlwaysSignHeaders已被弃用,应该使用OversignHeaders

您是否试图用Message-ID:和Sender:头文件标记testing消息?

你的问题可能是由于 posstfix / MTA添加上面提到的头文件(我相信任何良好的MTA修复程序缺lessMessage-Id:头文件) 之前获取消息版本。

http://www.elandsys.com/resources/sendmail/dkim.html:DKIM 使用电子邮件标题和正文来生成签名。 如果标题被重写,或者在签名后文本被附加到消息体中,则dkimvalidation将失败。

PS恕我直言,opendkim应提供选项,以产生自己缺less消息ID:


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

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