I've tried everything I can think of to get DKIM working with Exim4 on my Ubuntu 16.04 server, but emails sent from my server are still not signed with DKIM!
I am using Exim4, unsplit configuration.
I generated private and public keys using these commands in /etc/exim4/dkim:
sudo openssl genrsa -out dkim.key 1024
sudo openssl rsa -in dkim.key -pubout > dkim.pub
I edited the following lines in /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
Then ran these commands:
sudo update-exim4.conf
sudo service exim4 restart
Added this TXT record to my DNS records (using the public key):
TXT mail._domainkey "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvnoSm2o5X9JoCKfYlhkRv5mj4yRscjlv5JmNj1PfBeZGp57XgriRCcA4S5/egrPI2VfKzoCwRsGp4uCD/UJ7+6DgCVNseSlD+n6n4mRANWWlfY7LvHfp8sAR80aurwNyx7/PHGg+ZukHcllvYCtZtg4jtZTrl8w1yiKXyJ3G3fQIDAQAB"
Sent an email from my server to my Gmail address, and it went straight to spam. I click "Show original" and DKIM is not mentioned anywhere in the email headers.
Please tell me what I'm doing wrong! Thanks!
Best Answer
exim
allows conditional runtime configuration.If variable XXXX have some value assigned then it becomes "defined" and
.ifdef XXXX
is evaluated toTRUE
. Even if XXXX is defined asXXXX = false
it is still defined somehow. Line should be commented out to prevent definition. Bundled config contains lot of config snippents for many situations but they are usually disabled by control variables commented out.In your case you have to find where the
DKIM_DOMAIN
,DKIM_SELECTOR
,DKIM_PRIVATE_KEY
and the rest ofDKIM_*
variables defined and uncomment them.