我已经尝试了所有能想到的方法来让 DKIM 与我的 Ubuntu 16.04 服务器上的 Exim4 一起工作,但从我的服务器发送的电子邮件仍然没有用 DKIM 签名!
我正在使用 Exim4,未分割配置。
我使用 /etc/exim4/dkim 中的以下命令生成了私钥和公钥:
sudo openssl genrsa -out dkim.key 1024
sudo openssl rsa -in dkim.key -pubout > dkim.pub
我在 /etc/exim4/exim4.conf.template 中编辑了以下几行:
.ifdef DKIM_DOMAIN
dkim_domain = ${lc:${domain:$h_from}}
.endif
.ifdef DKIM_SELECTOR
dkim_selector = mail
.endif
.ifdef DKIM_PRIVATE_KEY
dkim_private_key = /etc/exim4/dkim/dkim.key
.endif
.ifdef DKIM_CANON
dkim_canon = relaxed
.endif
然后运行以下命令:
sudo update-exim4.conf
sudo service exim4 restart
将此 TXT 记录添加到我的 DNS 记录中(使用公钥):
TXT mail._domainkey "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvnoSm2o5X9JoCKfYlhkRv5mj4yRscjlv5JmNj1PfBeZGp57XgriRCcA4S5/egrPI2VfKzoCwRsGp4uCD/UJ7+6DgCVNseSlD+n6n4mRANWWlfY7LvHfp8sAR80aurwNyx7/PHGg+ZukHcllvYCtZtg4jtZTrl8w1yiKXyJ3G3fQIDAQAB"
从我的服务器向我的 Gmail 地址发送了一封电子邮件,结果它直接被归为垃圾邮件。我点击了“显示原始邮件”,邮件标题中没有提到 DKIM。
请告诉我我做错了什么!谢谢!
答案1
exim
允许条件运行时配置。
XXXX = something
.ifdef XXXX
<some directives>
.endif
如果变量 XXXX 被赋值,则它变为“已定义”并被.ifdef XXXX
评估为TRUE
。即使 XXXX 被定义为,XXXX = false
它仍然以某种方式被定义。应该注释掉行以防止定义。捆绑配置包含许多配置片段,适用于许多情况,但它们通常被注释掉的控制变量禁用。
在您的情况下,您必须找到DKIM_DOMAIN
、DKIM_SELECTOR
和DKIM_PRIVATE_KEY
其余DKIM_*
变量的定义位置并取消它们的注释。