我尝试了所有我能想到的方法来使DKIM与我的Ubuntu 16.04服务器上的Exim4一起工作,但是从我的服务器发送的电子邮件仍然没有用DKIM签名!
我正在使用Exim4,unsplitconfiguration。
我在/ 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
将此TXTlogging添加到我的DNSlogging(使用公钥):
TXT mail._domainkey "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvnoSm2o5X9JoCKfYlhkRv5mj4yRscjlv5JmNj1PfBeZGp57XgriRCcA4S5/egrPI2VfKzoCwRsGp4uCD/UJ7+6DgCVNseSlD+n6n4mRANWWlfY7LvHfp8sAR80aurwNyx7/PHGg+ZukHcllvYCtZtg4jtZTrl8w1yiKXyJ3G3fQIDAQAB"
从我的服务器发送一封电子邮件到我的Gmail地址,直接发送垃圾邮件。 我点击“显示原始”,DKIM在电子邮件标题的任何地方都没有提及。
请告诉我我做错了什么! 谢谢!
exim允许有条件的运行时configuration。
XXXX = something .ifdef XXXX <some directives> .endif
如果variablesXXXX有一些值被赋值,则它变成“defined”,而.ifdef XXXX被赋值为TRUE 。 即使XXXX被定义为XXXX = false它仍然以某种方式定义。 行应该注释掉,以防止定义。 捆绑的configuration包含很多configurationsnippents许多情况下,但他们通常禁用控制variables注释掉。
在你的情况下,你必须findDKIM_DOMAIN , DKIM_SELECTOR , DKIM_PRIVATE_KEY和其他DKIM_*variables的定义和取消注释。