Создаём директорию

1
mkdir /etc/exim/dkim

Генерируем ключ

1
openssl genrsa -out /etc/exim/dkim/example.com.key 1024

из него генерируем публичную часть ключа

1
openssl rsa -in /etc/exim/dkim/example.com.key -out /etc/exim/dkim/example.com.key.pub -pubout

Прописываем в DNS публичную часть ключа

1
mail._domainkey                 IN      TXT     "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..."

Проверяем что запись корректно добавилась на DNS dig mail._domainkey.example.com TXT

Настраиваем Exim

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
begin transports
 
# тут добавляем наш DKIM
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim/dkim/${lc:${domain:$h_from:}}.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 
remote_smtp:
 driver = smtp
 dkim_domain = DKIM_DOMAIN
 dkim_private_key = DKIM_PRIVATE_KEY
 dkim_selector = mail
 dkim_canon = relaxed
 dkim_strict = yes

Не забываем перезагрузить Exim (service exim reload) Параллельно обычно приходится настраивать SPF и DMARC. Это не сложно. Добавляем на DNS подобные записи:

1
2
example.com. IN TXT "v=DMARC1\;p=reject"
example.com. IN TXT "v=spf1 mx a ip4:222.222.222.222 ~all"

222.222.222.222 это IP для примера, обычно приходится прописывать, когда почта отправляется с интерфейсного IP, который не совпадает с записями A, MX… статья не закончена