Настройка DKIM-подписи в Exim4 на Debian

Если письма, которые отсылает Ваш сайт, часто попадают в спам, то выручить Вас сможет DKIM-подпись. Конечно же – это не панацея от всех бед, но внести огромную лепту доверия поможет. В статье будет описываться способ добавления DKIM-записи на сервере под управлением Debian c установленным почтовиком Exim4.
Сервер Exim поддерживает DKIM-записи начиная с версии 4.7.1. Стоит обновится перед настройкой.
pdd.yandex + отправка писем с сайта через Exim4
Если у Вас почта на pdd.yandex, а Вы хотите отправлять письма еще и с сайта?
Это достаточно распространенная ситуация, так как для небольших сайтов иметь полноценный почтовик не совсем целесообразно. Проще использовать web-сервисы от Yandex, Google или Mail. С ними очень удобно пользоваться почтой на своем вне сайта.
Все эти сервисы, при правильной настройке, используют DKIM-запись, которая сформирована на стороне сервиса. При такой настройке, во время отправки письма с сайта, оно 100% попадет в спам.
Чтобы этого избежать нужно создать свою, дополнительную DKIM-запись, которая будет идентифицировать наш сервер Exim и доменное имя.
Ограничение на количество таких записей нет. Для одного сайта их можно сделать сколько угодно. И наоборот: в Exim можно указать одну DKIM-запись для нескольких доменов.
Добавляем DKIM-подпись в Exim
Создаем подпись
Первое что необходимо сделать – это установить необходимые пакеты. В Debian это делается одной командой:
sudo apt install opendkim-tools openssl dnsutils
Далее генерим новую пару открытого и закрытого ключа. Обычно делают это либо в директории с сайтом (если их много и нужны разные подписи) или, если сайт один, то в директории с конфигами Exim4 – /etc/exim4
.
cd /etc/exim4
sudo openssl genrsa -out adminway.ru.key 1024
sudo openssl rsa -in adminway.ru.key -pubout > adminway.ru.pub
sudo chown Debian-exim:Debian-exim adminway.ru.key
sudo chmod 640 adminway.ru.key
adminway.ru – это ваше доменное имя сайта.
В Debian Exim4 запускается от имени пользователя Debian-exim
. Достаточно странное явление, так как используется тире и заглавная буква. Это не ошибка.
Настраиваем Exim4
Если конфиг Exim4 в одном файле
Если Вы при установки и конфигурировании Exim4 выбрали хранить конфиг в одном файле, то вам нужно внести нужные строчки в конфигурационный файл /etc/exim4/exim4.conf.template.
sudo nano /etc/exim4/exim4.conf.template
До секции:
remote_smtp:
Нужно добавить код:
DKIM_CANON = relaxed
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim4/DKIM_DOMAIN.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = mail-site
DKIM_SELECTOR
– это любое удобное для вас название. Его в дальнейшем нужно будет ввести в панель регистратора домена.
Если конфиг Exim4 разбит на мелкие файлы
Если при установке Exim, вы выбрали конфигурирование EXIM4 с разделением на маленькие, то тогда код выше необходимо добавить в /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp
sudo nano /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp
Нужно добавить код:
DKIM_CANON = relaxed
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim4/DKIM_DOMAIN.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = mail-site
Если домен один?
Приведенный код выше будет работать и для одного домена и для нескольких. Но для одного домена Вы можете упростить его
DKIM_CANON = relaxed
DKIM_DOMAIN = adminway.ru
DKIM_PRIVATE_KEY = /etc/exim4/adminway.ru.key
DKIM_SELECTOR = mail-site
Перезапускаем Exim4
Перезапускаем Exim4. В Debian|Ubuntu:
update-exim4.conf && service exim4 restart
Проверить конфиг Exim4
Для того, чтоб проверить будет ли подписывать DKIM-подписью Exim4 при отправке исходящей почты:
exim -bP transports | grep dkim
dkim_canon = relaxed
dkim_domain = adminway.ru
dkim_hash = sha256
dkim_identity =
dkim_private_key = /etc/exim4/adminway.ru.key
dkim_selector = mail-site
dkim_sign_headers =
dkim_strict =
dkim_timestamps =
dkim_canon =
dkim_domain =
dkim_hash = sha256
dkim_identity =
dkim_private_key =
dkim_selector =
dkim_sign_headers =
dkim_strict =
dkim_timestamps =
На стороне сервера все. Теперь нужно отредактировать DNS-запись о вашем домене, добавив открытую часть DKIM-записи в панели регистратора. Я использую REG.RU, поэтому скрины будут от него.
Добавляем TXT-запись в панели регистратора домена
Посмотреть открытую часть DKIM-записи можно командой на сервера:
cat adminway.ru.pub
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIJQLClpNU0DzvMZOw3OcXpHqd
tY1Y5TXrD9XJS/HGqyxLwRANjKcMnfhj+Eg6LI2Fq3GyMEE4y7ed53GjPrnFJLv3
OEWU17vN6OV5jqGSHnEIi1NzYz2eE8MlprPb0/wA+8AqVSQ0HLSQ4pvUdaFN1HKF
qHCCLVV6eHYWVqHPGwIDAQAB
-----END PUBLIC KEY-----
Нам нужен непрерывный набор символов внутри. Копируем его.
В панели регистратора добавляем новую TXT-запись такого вида:
где mail-site
– это тот самый селектор, который указали в Exim для DKIM-записи, _domainkey
— это обязательное слово.
Если Вы настраиваете DKIM-запись для домен 3 уровня (к примеру, test.vashspisok.ru), то данная запись будет иметь вид: mail-site._domainkey.test. В Exim можно легко указать 1 запись DKIM на несколько доменов.
В поле Text
вносится неизменяемая часть v=DKIM1; k=rsa; p=
, а после нее без пробела идет скопированный открытый ключ.
Время принятия параметров у всех регистраторов разное. У REG.RU, к примеру, это время составляет примерно 15 минут.
Проверка DKIM подписи
Проверка DNS-записей
Чтобы проверить правильно ли мы настроили DKIM в Exim, можно посмотреть вывод команды:
host -t txt mail-site._domainkey.adminway.ru
где adminway.ru – название домена.
Утилиты HOST
изначально нет в Debian. Находится она в пакете dnsutils
. Для установки нужно запустить команду:
sudo apt install dnsutils
В ответе Вы должны увидеть добавленный открытый ключ DKIM-подписи.
Проверка DKIM в письме
Можно просто отправить письмо на свою почту. К примеру, если отправить на почту в Gmail, то правильно подписанное письмо выглядить так:
А вообще для того, чтобы проверить как настроена вся почтовая подсистема есть отличный web-сервис — www.mail-tester.com, который позволяет посмотреть на отправленное с Вашего сервера письмо «глазами» популярных почтовых сервисов. Ведь именно они будут решать спам Вы отсылаете или нет.
Теги: exim