Настройка DKIM для Exim в Debian

Лично мне всегда 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

О том как проверить правильность я писал в предыдущей статье.
Кроме того можно воспользоваться онлайн утилитами как эта или эта

Добавить комментарий