Ubuntu – Cannot get DKIM working with Exim4

dkimemaileximUbuntuubuntu-16.04

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

eximallows conditional runtime configuration.

XXXX = something

.ifdef XXXX
<some directives>
.endif

If variable XXXX have some value assigned then it becomes "defined" and .ifdef XXXX is evaluated to TRUE. Even if XXXX is defined as XXXX = 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 of DKIM_* variables defined and uncomment them.