过去的几个小时里,我一直在努力在我的 Postfix/CentOS 5.3 服务器上设置 DKIM。
它最终发送并签署了电子邮件,但显然 Google 仍然不喜欢它。我收到的错误是:
dkim=neutral(糟糕的版本) [电子邮件保护]
来自谷歌的“显示原始”界面。
我的 DKIM 签名标头如下所示:
v=1;a=rsa-sha1;c=simple/simple;d=mydomain.com.au;s=default;t=1267326852;bh=0wHpkjkf7ZEiP2VZXAse+46PC1c=;h=日期:发件人:消息 ID:收件人:主题;b=IFBaqfXmFjEojWXI/WQk4OzqglNjBWYk3jlFC8sHLLRAcADj6ScX3bzd+No7zos6i KppG9ifwYmvrudgEF+n1VviBnel7vcVT6dg5cxOTu7y31kUApR59dRU5nPR/to0E9l dXMaBoYPG8edyiM+soXo7rYNtlzk+0wd5glgFP1I=
非常感谢任何关于如何解决这个问题的建议!
顺便说一句,如果有人感兴趣的话,下面是我在 CentOS 5.3 中为 postfix 安装 dkim-milter 的具体方法(基于本指南):
mkdir dkim-milter
cd dkim-milter
wget http://www.topdog-software.com/oss/dkim-milter/dkim-milter-2.8.3-1.x86_64.rpm
======S======
Newest version: http://www.topdog-software.com/oss/dkim-milter/
======E======
rpm -Uvh dkim-milter-2.8.3-1.x86_64.rpm
/usr/bin/dkim-genkey -r -d mydomain.com.au
======S======
add contents of default.txt to DNS as TXT
_ssp._domainkey TXT dkim=unknown
_adsp._domainkey TXT dkim=unknown
default._domainkey TXT v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GWETBNiQKBgQC5KT1eN2lqCRQGDX+20I4liM2mktrtjWkV6mW9WX7q46cZAYgNrus53vgfl2z1Y/95mBv6Bx9WOS56OAVBQw62+ksXPT5cRUAUN9GkENPdOoPdpvrU1KdAMW5c3zmGOvEOa4jAlB4/wYTV5RkLq/1XLxXfTKNy58v+CKETLQS/eQIDAQAB
======E======
mv default.private default
mkdir /etc/mail/dkim/keys/mydomain.com.au
mv default /etc/mail/dkim/keys/mydomain.com.au
chmod 600 /etc/mail/dkim/keys/mydomain.com.au/default
chown dkim-milt.dkim-milt /etc/mail/dkim/keys/mydomain.com.au/default
vim /etc/dkim-filter.conf
======S======
ADSPDiscard yes
ADSPNoSuchDomain yes
AllowSHA1Only no
AlwaysAddARHeader no
AutoRestart yes
AutoRestartRate 10/1h
BaseDirectory /var/run/dkim-milter
Canonicalization simple/simple
Domain mydomain.com.au #add all your domains here and seperate them with comma
ExternalIgnoreList /etc/mail/dkim/trusted-hosts
InternalHosts /etc/mail/dkim/trusted-hosts
KeyList /etc/mail/dkim/keylist
LocalADSP /etc/mail/dkim/local-adsp-rules
Mode sv
MTA MSA
On-Default reject
On-BadSignature reject
On-DNSError tempfail
On-InternalError accept
On-NoSignature accept
On-Security discard
PidFile /var/run/dkim-milter/dkim-milter.pid
QueryCache yes
RemoveOldSignatures yes
Selector default
SignatureAlgorithm rsa-sha1
Socket inet:20209@localhost
Syslog yes
SyslogSuccess yes
TemporaryDirectory /var/tmp
UMask 022
UserID dkim-milt:dkim-milt
X-Header yes
======E======
vim /etc/mail/dkim/keylist
======S======
*@mydomain.com.au:mydomain.com.au:/etc/mail/dkim/keys/mydomain.com.au/default
======E======
vim /etc/postfix/main.cf
======S====== Add:
smtpd_milters = inet:localhost:20209
non_smtpd_milters = inet:localhost:20209
milter_protocol = 2
milter_default_action = accept
======E======
vim /etc/mail/dkim/trusted-hosts
======S======
localhost
127.0.0.1
======E======
/etc/mail/local-host-names
======S======
localhost
127.0.0.1
======E======
/sbin/chkconfig dkim-milter on
/etc/init.d/dkim-milter start
/etc/init.d/postfix restart
答案1
解决方案:原来我忘记了 DNS 主机会自动将所有条目转换为小写(除了他们自己,没有人知道原因)。这意味着“v=DKIM1”变成了“v=dkim1”,这是一个无效版本。这也意味着它通过 base64 哈希转换为全部小写,从而破坏了它。
现在正在与我的主机联系,让他们更改系统。希望这对某些人有帮助!
答案2
这个问题至少和你的企鹅盒子无关,别管它了。
从管理 DNS 条目的地方开始:
- 确保删除所有以前的 DKIM 条目,即使它们“看起来”相同。
- 保存您的区域,确保条目已删除。
- 添加您的 (正确/新/旧/已验证)DKIM 签名行再次..
- 仔细检查t=y部分在那里..
- 保存区域文件
- 请检查 DKIM 行的 CapitAliZatioN,然后再检查一遍!
祝你好运
答案3
如果你正在运行 Exim,解决方案可能是编辑/etc/exim4/exim4.conf
并设置
DKIM_CANON = simple
如果设置如此,relaxed
Exim 可能会对消息应用更改,从而导致 DKIM 验证出现问题。
(我自己没有见过这个问题,这只是根据 Wayback Machine 的历史内容对 @byiior 的旧答案进行重写:https://web.archive.org/web/20131106173526/http://joyit.ru/administrirovanie/36-exim-dkim-dkim-neutral-bad-version-header-i.html)
答案4
dkim=neutral (糟糕的版本)header.i 我有同样的问题,这里有一个答案https://web.archive.org/web/20130922221826/http://joyit.ru:80/home/36-exim-dkim-dkim-neutral-bad-version-header-i.html。您需要添加 DKIM_CANON