我运行了 postfix 和 opendkim。postfix 通过 unix 套接字与 opendkim 通信。只要我不将一些特殊的邮件标题字段添加到 opendkim 应签名的字段列表中,所有这些都有效。
后缀配置:
主要.cf:
...
smtpd_milters = unix:/var/spool/postfix/milter/opendkim
non_smtpd_milters = unix:/var/spool/postfix/milter/opendkim
...
Run Code Online (Sandbox Code Playgroud)
在我的 opendkim.conf 我有这个条目:
...
AlwaysSignHeaders To,Subject,MIME-Version,Content-Type,Sender,From,Message-Id,Date,Reply-To,List-Unsubscribe
...
Run Code Online (Sandbox Code Playgroud)
如果我像这样用 postfix sendmail 命令发送电子邮件
sendmail -f myenvelopefrom@mydomain.com -i -t <<EOF
From: me@mydomain.com
Sender: postmaster@mydomain.com
To: testaccount@gmail.com
Subject: Test
Test
EOF
Run Code Online (Sandbox Code Playgroud)
Gmail 会通知我:
dkim=hardfail
Run Code Online (Sandbox Code Playgroud)
使用
Diagnostics true
Run Code Online (Sandbox Code Playgroud)
opendkim.conf 中的条目它通过“z=...”调试邮件头条目显示,opendkim 没有在签名中包含“Message-Id”和“Sender”字段,但报告包含
h=From:To:Subject:Date:MIME-Version:Content-Type:Sender:Reply-To:List-Unsubscribe;
Run Code Online (Sandbox Code Playgroud)
邮件标题条目。
深入研究这一点,我发现当我从 opendkim.conf 中的“AlwaysSignHeaders”条目中删除 Message-Id 和 Sender 字段时,Gmail 再次感到高兴。
因为我使用 sendmail 命令发送邮件,所以我可以确定至少“发件人:”字段必须从一开始就对 postfix 和 opendkim 可用。
因此,如果 opendkim 将使用它获得的所有标头字段,那么这意味着 postfix 不会为 opendkim 提供所有标头字段。我试图通过为 postfix 的“清理”和“琐碎重写”过程打开详细日志记录来验证这一点,但我不得不承认我在日志中看不到任何有用的东西,尤其是我无法提取信息postfix 提供给 opendkim 的邮件头字段。如果有人可以使用它,我可以在此处发布这些日志...
我的想法不多了,所以我希望有人能给我一些有用的指点......
我找到了原因(在 opendkim 邮件列表的好心人的帮助下):
在我的 opendkim.conf 文件中,我只有该字段
AlwaysSignHeaders From,Sender,To,CC,Subject,Message-Id,Date
Run Code Online (Sandbox Code Playgroud)
指定的。原来你还需要添加 SignHeaders 字段,所以现在配置看起来像:
...
SignHeaders From,Sender,To,CC,Subject,Message-Id,Date
AlwaysSignHeaders From,Sender,To,CC,Subject,Message-Id,Date
...
Run Code Online (Sandbox Code Playgroud)
就是这样。
编辑:
opendkim 的人指出,AlwaysSignHeaders已被弃用,应改用OversignHeaders。
| 归档时间: |
|
| 查看次数: |
7627 次 |
| 最近记录: |