Почему письма попадают в спам? Ставим DKIM-подпись в Exim4 на Debian

Если письма, которые отсылает Ваш сайт, часто попадают в спам, то выручить Вас сможет DKIM-подпись. Конечно же – это не панацея от всех бед, но внести огромную лепту доверия поможет. В статье будет описываться способ добавления DKIM-подписи на сервере под управлением Debian c установленным почтовиком Exim4.

Если у Вас почта на pdd.yandex, а Вы хотите отправлять письма еще и с сервера?

Это достаточно распространенная ситуация, так как для небольших сайтов иметь полноценный почтовый сервер не совсем целесообразно. Проще использовать web-сервисы от Yandex, Google или Mail.

Все эти сервисы, при правильной настройке, используют свою DKIM-подпись. При отправке писем с вашего сервера напрямую, к примеру через php-функцию mail(), письмо обязательно попадет в спам.

Чтобы этого избежать нужно сделать еще одну такую подпись. Ограничение на количество DKIM-подписей для сайта не существует. Для одного сайта их можно наделать сколько угодно. И наоборот: можно иметь одну DKIM-подпись для всех сайтов на сервере.

Добавляем подпись в Exim

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

Первое что необходимо сделать – это установить необходимые пакеты:

apt install opendkim-tools openssl dnsutils

Далее генерим новую пару открытого и закрытого ключа. Обычно делают это либо в директории с сайтом (если их много и нужны разные подписи) или, если сайт один, то в директории с конфигами Exim4 – /etc/exim4.

cd /etc/exim4
openssl genrsa -out dkim.key 1024
openssl rsa -in dkim.key -pubout > dkim.pub
chown Debian-exim:Debian-exim dkim.key
chmod 640 dkim.key

В Debian Exim4 запускается от имени пользователя Debian-exim. Достаточно странное явление, так как используется тире и заглавная буква. Это не ошибка.

Далее в конфиге Exim – /etc/exim4/exim4.conf.template:

nano  /etc/exim4/exim4.conf.template

До секции:

remote_smtp:

Нужно добавить код:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY = /etc/exim4/dkim.key
DKIM_SELECTOR = mail-site

Перезапускаем Exim4:

service exim4 restart

На стороне сервера все. Теперь нужно отредактировать DNS-запись о вашем домене, добавив открытую часть DKIM-подписи в панели регистратора. Я использую REG.RU, поэтому скрины будут от него.

Добавляем TXT-запись в панели регистратора домена или панели DNS-сервера

Посмотреть открытую часть DKIM-записи можно командой на сервера:

cat dkim.pub

Должно быть что-то под вид этого:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIJQLClpNU0DzvMZOw3OcXpHqd
tY1Y5TXrD9XJS/HGqyxLwRANjKcMnfhj+Eg6LI2Fq3GyMEE4y7ed53GjPrnFJLv3
OEWU17vN6OV5jqGSHnEIi1NzYz2eE8MlprPb0/wA+8AqVSQ0HLSQ4pvUdaFN1HKF
qHCCLVV6eHYWVqHPGwIDAQAB
-----END PUBLIC KEY-----

Нам нужен выделенный код. Копируем его.

В панели регистратора добавляем новую TXT-запись такого вида:

где mail-site.domainkey — это неизменяемый параметр поля _Subdomain.

В поле Text вносится неизменяемая часть v=DKIM1; k=rsa; p=, а после нее без пробела идет скопированный открытый ключ.

Время принятия параметров у всех регистраторов разное. У REG.RU, к примеру, это время составляет примерно 15 минут.

Проверка

Чтобы проверить нашу работы, можно посмотреть вывод команды:

dig -t txt mail-site._domainkey.vashspisok.ru

где vashspisok.ru – название домена.

В ответе Вы должны увидеть добавленный открытый ключ DKIM-подписи.

А вообще для того, чтобы проверить как на сервере настроена вся почтовая подсистема есть отличный web-сервис — www.mail-tester.com, который позволяет посмотреть на отправленное с Вашего сервера письмо «глазами» популярных почтовых сервисов. Ведь именно они будут решать спам Вы отсылаете или нет.

Комментарии:

Имя
e-mail
Сайт
Текст комментария: