DKIM (расшифровывается как DomainKeys Identified Mail) — метод идентификации письма по доменным ключам. DKIM настраивается на почтовом сервере для того, чтобы подписывать исходящие письма цифровой подписью.

Наличие такой подписи в заголовке отправленного письма сообщает серверу-получателю, что оно действительно было отправлено с указанного домена.

Устанавливаем необходимые пакеты в Ubuntu/Debian:

apt-get install opendkim-tools

Теперь нужно сгенерировать ключи, которые будут использоваться для подписи писем. Для начала создаем папку для хранения ключей:

mkdir /etc/exim4/dkim

Генерируем открытый и закрытый ключи для домена example.com.

opendkim-genkey -D /etc/exim4/dkim/ -d example.com -s mail

Эта команда создаст файлы etc/exim4/dkim/mail.private и /etc/exim4/dkim/mail.txt, с секретным и публичным ключами соответственно. Публичный ключ нужно добавить в соответствующую TXT запись домена example.com. Проверить что запись добавлена можно командой:

dig txt mail._domainkey.example.com

Переименовываем закрытый ключ, чтобы Exim мог его найти:

cd /etc/exim4/dkim/
mv mail.private example.com.key

Проставляем права на чтение файлов ключей:

chown -R Debian-exim:Debian-exim /etc/exim4/dkim/
chmod 640 /etc/exim4/dkim/*

В конфиг Exim /etc/exim4/exim4.conf.template или если он разделен, то /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp пишем в л:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim4/dkim/DKIM_DOMAIN.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = mail

Узнать какой тип конфига используется и перегенерить его можно командой:

/usr/sbin/update-exim4.conf -v

Все готово, осталось перезапустить.

/etc/init.d/exim4 restart