Массовая почтовая рассылка через Exim или как не попасть в спам из песочницы

Жизнь была прекрасна и все было в этом мире хорошо, пока почта с моего сайта не стала активно посылаться в спам практически всеми крупными почтовыми серверами. Особенно усердствовал в этом Gmail. Частенько меня принимали за спамера в Yandex, реже в mail.ru и rambler.

Исходя из совокупности представленных факторов стало понятно, что надо что-то делать с настройками своего почтового сервера Exim. Посмотреть, как это было сделано, приглашаю под хабракат.

Порывшись немного в интернете на эту тему, обнаружил несколько интересных статей на Хабре (Почтовая кухня #1: DNS. Что такое SPF. Как не стать спамером со своей уютной рассылочкой ), но они, к сожалению, охватывают только часть настроек почтового сервера. Постараюсь восполнить этот пробел.

Итак имеется debian lenny сервер и установленный на нем дефолтный Exim 4.72. Описывать установку Exim не имеет смысла (хотя тут ничего сложного нет — sudo apt-get install exim4). Лишь напомню, что первоначальную настройку exim можно провести следующей командой:

dpkg-reconfigure exim4-config

Все! Сайт готов рассылать почту. Но здесь есть 3 «но». Почтовики очень любят SPF, PTR и DKIM и очень не любят их отсутствие. Далее описывается как настроить это буквально за несколько минут.

Сначала настроим PTR. PTR это так называемая «обратная запись». В ней в обратном порядке записывается IP адрес хоста, с которого в нашем случае рассылается почта. По этой записи почтовики распознают имя хоста по его IP. Немного теории здесь .

Предположим, что IP вашего почтового сервера 78.56.158.23. Открываем наш NS сервер (или, что чаще настройки провайдера сервера или хостера) и добавляем следующую DNS запись (IP при этом «разворачиваем»):

23.158.56.78.in-addr.arpa IN PTR mail.mydomain.ru.

Здесь остается добавить, что такая запись у моего хостера FastVPS задается через панель веб-ребута.

В SPF записи мы указываем какие сервера имеют право отправлять почту с вашего домена. В самом простом случае эта запись выглядит следующим образом:

mydomain.ru. IN TXT "v=spf1 a mx

all"

all"

Т.е. отправлять почту имеют право сервер с DNS записью в секции «a» и почтовый сервер в секции «mx».

Опять проверяем результат через сервис centralops.net .

Затем генерируем пару ключей для подписи писем (открытый и закрытый ключ):

dkim-genkey -d mydomain.ru -s mail -r

-r значит, что ключ будет использоваться только для почты

-s задает имя dkim-selector (можно указать любое имя, например имя вашего домена)

Смотрим, что получилось при генерации открытого ключа:

tail mail.txt

И видим:

mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCS. " ; ----- DKIM mail for mydomain.ru

Сам ключ обрезал, потому что он довольно длинный.

Копируем содержимое этого файла и вставляем в DNS записи нашего сервера. Все, с открытым ключом мы закончили.

У нас остался закрытый ключ mail.private, который нам надо привязать к Exim.

Переименовываем mail.private и копируем его в директорию exim:

mv mail.private mydomain.ru.key

cp mydomain.ru.key /etc/exim4

chmod 755 /etc/exim4/mydomain.ru.key

или же лучше сделать хозяином файла пользователя exim командой chown и сделать права на доступ к нему, к примеру, 600 или еще строже 400:

chown exim:exim /etc/exim4/mydomain.ru.key

chmod 600 /etc/exim4/mydomain.ru.key

И теперь осталось настроить сам Exim:

nano /etc/exim4/exim4.conf.template

Находим секцию remote_smtp и перед ней добавляем:

DKIM_FILE = /etc/exim4/$>.key

И немного правим саму секцию:

remote_smtp:

driver = smtp

dkim_domain = DKIM_DOMAIN

dkim_selector = mail

dkim_private_key = DKIM_PRIVATE_KEY

где dkim_selector это первое слово перед ._domainkey в открытом ключе

После перезапускаем exim:

/etc/init.d/exim4 restart

Теперь проверим подписи. Для этого можно просто отправить письмо на любой адрес Gmail. Затем надо посмотреть подробные сведения о письме и в поле «Подписан» должен быть ваш домен. Или можно посмотреть код письма и в заголовке письма должно присутствовать поле DKIM-Signature. Если оно есть, то мои поздравления! Подписи работают!

Вот таких трех простых шагов достаточно, чтобы ваша почта больше не попадала в спам (если вы конечно не спамер). У меня, например, до этих переделок почта с сайта практически всегда отправлялась Gmail в спам. Теперь же надо что-то невообразимое написать в письме, чтобы оно было помечено как спам. К счастью, все мои рассылки теперь доходят до адресатов.

Напоследок можно сказать, что еще одним способом эффективной доставки почты является грейлистинг. В этом случае почтовый сервер, который получает вашу почту на первое сообщение отвечает временной ошибкой, вносит ваш сервер в "серый список ", и только когда с вашего сервера придет повтор этого сообщения, то оно пропускается. Как правило спамерские программы не посылают повторов.

В Exim по умолчанию включена система автоповторов для всех хостов. Вы можете усовершенствовать дефолтное правило, найдя в конфигурационном файле секцию RETRY CONFIGURATION и отредактировать согласно этой инструкции .

В рамках данного топика не рассматривалось применение описанных технологий для приема писем на свой почтовый сервер. Это тема для другой статьи.

Источник: habrahabr.ru

Категория: Электронная почта

Похожие статьи: