我运行了 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 ×1