Настройка DMARC + SPF + DKIM для почтаря на EXIM

22 Mar 2017 | Автор: anchous |

Возникла тут необходимость прикрутить все эти дурацкие гуглеводско-мейловские антиспуфинг подписи домена, поскольку до части клиентов на GMAIL письма тупо не доставлялись от слова вообще.

Дурацкие они именно потому, что помимо лишних граблей, не являются гарантией доставки писем до жумеля и, к тому же, добавляют иллюзии защиты от фрауда, из-за чего уже было несколько шикарных историй, когда пользователи GMAIL велись на мошеннические письма с подменой отправителя и переводили не слабые суммы левым дядям.

Итого после третьей предъявы, что я игнорирую столь важных человеков, пришлось, для успокоения совести, озадачиться настройкой антиспам фарша в виде связки DMARC + SPF + DKIM. И если первые две делаются элементарно на уровне сервера доменных имен, то DKIM надо прикручивать, в том числе, и на уровне механизма доставки, чтобы он подписывал письма соответствующим образом.

Что вылилось в несколько часов головняка, ибо то что описано в тырнетах, у меня не захотело работать.

АПЧём по порядку:

Для генерации SPF*** и DMARC я использовал обычные генераторы с сайта unlocktheinbox.com доступные в меню Email Tools: вводится доменное имя, нажимается Generate и заполняется информация по домену, IP адресам почтового сервера и прочие тонкие настройки, вроде хардкорного дропа письма или нежных поглаживаний пометки неблагонадежности отправителя.

После генерации, создаем на нашем DNS сервере текстовые файлы в зоне, где и прописываем сгенеренные выражения.

После этого переходим к DKIM. Тут нас ждет немного плясок, ибо его также нужно сгенерить каким нить генератором (можно конечно генерить ключи и с помощью openssl в консоли). Я использовал socketlabs.com где надо задать доменное имя (для теста возьму свое), длину ключа и так называемый селектор – уникальную запись, которая у нас будет фигурировать как в доменной записи, так и в конфиге почтаря, для подписи отправляемых сообщений.

После генерации мы получаем приватный файл —–BEGIN RSA PRIVATE KEY—– который кидаем в отдельную папочку на нашем почтовом сервере. Я настраивал на EXIM версии 4.7, что само по себе радостно, ибо в версиях до 4.2 еще требовалось дополнительно  прикручивать поддержку DKIM, тогда как в 4.2+ просто создаем папку под ключи и кидаем в неё этот файл. Также необходимо задать права на эту папку, чтобы демон EXIM мог прочитать ключ.

# mkdir /etc/exim/dkim
# echo ‘—–BEGIN RSA PRIVATE KEY—– ***** —–END RSA PRIVATE KEY—–’ > /etc/exim/dkim/odminblog.ru.pem
# chown -R exim:exim /etc/exim/dkim/odminblog.ru.pem

после этого переходим к настройке конфига exim.conf нашего почтового сервера EXIM, где ищем радел транспортов, и под записью driver = smtp добавляем следующие строки

remote_smtp:
driver = smtp
dkim_domain = odminblog.ru
dkim_selector = 4385745737634
dkim_private_key = /etc/exim/dkim/odminblog.ru.pem

Сохраняем наш файл, и перезапускаем почтовый сервер
# service exim restart

После чего можем начинать тестить, либо кинув сообщение на GMAIL, либо с помощью онлайн сервиса MAIL-TESTER.

В GMAIL надо смотреть заголовки писем и раздел Authentication-Results – при правильно настроенном конфиге, будет фигурировать следующая запись:

Authentication-Results: mx.google.com;
dkim=pass header.i=@odminblog.ru;
spf=pass (google.com: domain of XXX@odminblog.ru designates MAIL-SERVER-IP as permitted sender) smtp.mailfrom=XXX@odminblog.ru;
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=odminblog.ru
Если DKIM настроен криво, то он будет либо отсуствовать, либо показывать что то вроде dkim=temperror (no key for signature) header.i=@DKIM_DOMAIN
Вышеприведенный конфиг подойдет, если наш почтарь хостит только один домен, тогда как при мультидоменах, надо будет немного увеличить количество записей:

в основном разделе, в самом начале конфига мы пропишем переменные, в которых домен цепляется из поля письма from:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim/dkim/${lc:${domain:$h_from:}}.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}

И в разделе транспортов:
dkim_domain = DKIM_DOMAIN
dkim_selector = 4385745737634
dkim_private_key = DKIM_PRIVATE_KEY

После чего надо будет ребутнуть сервис.
*** Отдельно надо заметить, что в случае если вы используете редирект почты куда то, то тут могут возникнуть непредвиденные трудности в том случае, если вы используете пересылки на уровне доменного имени или используете почтовый сервер хостера, т.к они будут отказываться форварднуть ваше сообщение для данного домена аккурат в ключе политик SPF.

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

З.Ы самый прикол оказался в том, что даже подключение данной связки не решило проблемы с попаданием писем в папку спам на GMAIL. Куда, естественно, никто не заглядывает )) так что считай, что и в принципе не доставляется

VN:F [1.9.21_1169]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.21_1169]
Rating: +1 (from 1 vote)
Настройка DMARC + SPF + DKIM для почтаря на EXIM, 10.0 out of 10 based on 1 rating

Теги: , ,

Ваш отзыв