Лично мне всегда Exim в качестве MTA всегда нравился больше, нежели Postfix. А тут ещё и оказалось, что начиная с версии 4.2 поддержка DKIM встроена в exim и нет необходимости устанавливать какие либо дополнительные пакеты. Сравните при этом как настраивается DKIM в postfix.
Проверяем версию Exim на нашем сервере
# exim --version | grep version Exim version 4.84_2 #1 built 25-Jul-2016 18:59:39
Отлично. Поддержка уже имеется. Осталось только сгенерировать сертификат и внести настройки в Exim и DNS
Займёмся генерацией сертификатов
# cd /etc/exim4/dkim # openssl genrsa -out example.com.ua.key 1024 Generating RSA private key, 1024 bit long modulus .......................++++++ ....++++++ e is 65537 (0x10001)
Из приватного ключика нам нужно получить публичный. Он нам понадобится для создания доменной записи
# openssl rsa -in example.com.ua.key -pubout > example.com.ua.pub writing RSA key
Ну и спрячем его от посторонних глаз
# chown mail:mail example.com.ua.key # chmod 640 example.com.ua.key
Далее настройка Exim. Всё очень просто
Меняем
remote_smtp: driver = 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_FILE}{0}}
DKIM_CANON = simple
remote_smtp:
driver = smtp
dkim_domain = DKIM_DOMAIN
dkim_selector = main
dkim_private_key = DKIM_PRIVATE_KEY
Обратите внимание на селектор, подсеченный в коде. Его имя должно совпадать с теми данными, которые будем добавлять в DNS. Имя выбирайте абсолютно любое, главное что бы в настройках Exim и в доменной записи был один и тот же
Настройка DNS
Правильная настройка DNS записи заключается в том, что бы добавить корректную TXT-запись в доменную зону
Шаблон зоны выглядит так:
selector._domainkey.domain.name
О селекторе уже вспоминали. В нашем случае это main
Для того что бы сформировать тело записи, нам нужно получить ключик от нашего селектора. Для этого мы выше выполняли команду для генерации публичного ключа. Посмотрим на его содержимое
# cat /etc/exim4/dkim/example.com.ua.pub -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDsurhruBvR1inh1NFDk7yWNI68 MVhHBzaPgPW8m3ZN335y3jkjkr1oZv1LNvg0fxWn6YQLFq3NxemS0v7yO0+ZsSMr R8jAA/gZIdXfktYvbRm+NMcUsVmnRduHFFTcOY3f4BW1Uo4hT6uwZ/SGhhfsRrsz L/Ya+8uLLaTfQRGohwIDAQAB -----END PUBLIC KEY-----
Нам нужно всё, что находится между ——BEGIN PUBLIC KEY—— и ——END PUBLIC KEY——
Обратите внимание, что ключ должен располагаться в одну строку и не иметь пробелов. В итоге мы должны добавить TXT-запись main._domainkey.example.com.ua со значением:
v=DKIM1 k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDsurhruBvR1inh1NFDk7yWNI68MVhHBzaPgPW8m3ZN335y3jkjkr1oZv1LNvg0fxWn6YQLFq3NxemS0v7yO0+ZsSMrR8jAA/gZIdXfktYvbRm+NMcUsVmnRduHFFTcOY3f4BW1Uo4hT6uwZ/SGhhfsRrszL/Ya+8uLLaTfQRGohwIDAQAB
О том как проверить правильность я писал в предыдущей статье.
Кроме того можно воспользоваться онлайн утилитами как эта или эта