Почта на домене: SPF, DKIM, DMARC и обратная зона простым языком
Письмо с сайта ушло, ошибки нет, а клиент его не видел. Часто оно лежит в папке «Спам» или вовсе не принято сервером получателя. Причина обычно не в тексте письма, а в том, как настроен домен отправителя. Ниже объясняем, что именно проверяют почтовые серверы, какие записи за это отвечают и как за десять минут понять, всё ли в порядке у вас.
Что проверяют почтовые серверы
Когда письмо от вашего домена приходит в Яндекс, Mail.ru или Gmail, принимающий сервер сначала решает, можно ли верить отправителю. Подделать адрес отправителя в письме технически несложно, поэтому сервер ищет подтверждения не в самом письме, а в DNS — публичном справочнике, где записаны настройки домена.
Вопросов по сути четыре:
- Имеет ли сервер, с которого пришло письмо, право отправлять почту от имени этого домена?
- Не изменили ли письмо по дороге, и действительно ли его подписал владелец домена?
- Что владелец домена просит делать с письмами, которые не прошли проверки?
- Совпадает ли адрес сервера-отправителя с его именем, то есть не похож ли он на случайную машину, рассылающую спам?
Если на какой-то вопрос ответа нет, письмо получает минус к доверию. Несколько минусов — и оно уходит в спам или отклоняется. Отдельно сервер смотрит на репутацию: сколько писем с этого адреса раньше возвращалось, сколько людей нажимали «Это спам».
Четыре записи и что каждая значит
SPF — список серверов, которым разрешено отправлять почту от вашего домена. Это текстовая запись в DNS, она начинается с v=spf1, дальше перечислены разрешённые серверы и в конце правило для всех остальных, например ~all («остальным не доверять»). Если сайт отправляет заявки через один сервис, а рассылка идёт через другой, оба должны быть в этом списке. Частая проблема — устаревший SPF: в нём остались серверы прежнего хостинга, а новый сервер забыли добавить.
DKIM — электронная подпись письма. Ваш почтовый сервер подписывает каждое исходящее письмо закрытым ключом, а открытый ключ лежит в DNS. Получатель сверяет подпись с ключом и видит, что письмо отправил владелец домена и что по дороге его не меняли. Ключ хранится под коротким именем, его называют селектором, поэтому DKIM-запись выглядит как селектор._domainkey.example.ru.
DMARC — инструкция получателю: что делать, если письмо не прошло SPF и DKIM. Запись лежит по адресу _dmarc.example.ru и выглядит примерно так: v=DMARC1; p=quarantine; rua=mailto:admin@example.ru. Здесь p=quarantine значит «подозрительные письма — в спам», а rua — куда присылать отчёты о проверках. Без DMARC получатель решает сам, и решает обычно не в вашу пользу. Кроме того, DMARC требует, чтобы домен в подписи и в адресе отправителя совпадали, поэтому подписывать письма лучше своим доменом, а не доменом стороннего сервиса.
PTR, или обратная зона. Обычная запись DNS отвечает на вопрос «какой адрес у имени mail.example.ru». Обратная отвечает на противоположный: «какое имя у этого IP-адреса». Принимающий сервер проверяет оба направления, и они должны указывать друг на друга. Если у IP-адреса отправителя нет обратной записи или она не совпадает с именем сервера, это верный признак спамерской машины. Письма с такого адреса попадают в спам или получают отказ. Важная деталь: PTR настраивается не в панели домена, а у провайдера, которому принадлежит IP-адрес сервера. Его приходится запрашивать отдельно.
Как проверить свой домен за десять минут
Для проверки не нужен доступ к серверу. Все записи публичные, их видит любой.
Шаг 1. Тестовое письмо. Сервис mail-tester.com даёт одноразовый адрес. Отправьте на него письмо тем же способом, каким уходят письма клиентам: через форму на сайте или из почтового ящика компании. Через минуту сервис покажет оценку и отдельно скажет, прошли ли SPF, DKIM и DMARC и нет ли адреса сервера в чёрных списках. Это самый быстрый способ увидеть картину целиком.
Шаг 2. Записи в DNS. Если под рукой есть терминал (на Mac и Linux он встроен), записи можно посмотреть командой dig. Вместо example.ru подставьте свой домен.
dig +short MX example.ru
dig +short TXT example.ru
dig +short TXT _dmarc.example.ru
dig +short TXT селектор._domainkey.example.ru
dig +short -x 203.0.113.10
Первая команда показывает, какой сервер принимает почту домена. Вторая выводит текстовые записи, среди них должна быть ровно одна строка с v=spf1. Третья показывает DMARC. Четвёртая — ключ DKIM; селектор можно узнать у того, кто настраивал почту, или в заголовках полученного письма. Последняя проверяет обратную зону: вместо примера подставьте IP-адрес почтового сервера, и в ответ должно прийти его имя, а не пустота.
Шаг 3. Заголовки письма. Отправьте письмо себе на Gmail и откройте «Показать оригинал». Наверху будут три строки: SPF, DKIM, DMARC, у каждой должно стоять PASS. Если где-то FAIL или NONE, вы нашли проблему.
Если терминала нет, те же записи показывают бесплатные онлайн-сервисы проверки DNS: вводите домен и выбираете тип записи.
Рассылки: стоп-лист, отписка, прогрев
Для рассылок записи DNS — только начало. Дальше всё решает репутация, а она складывается из поведения адресатов.
Стоп-лист. Если письмо вернулось с ответом «такого ящика нет», повторно на этот адрес писать нельзя. Почтовые службы считают долю таких писем, и при высокой доле снижают доверие ко всему домену. Сервисы рассылок вводят жёсткие пороги: например, в правилах одного из российских сервисов отправка приостанавливается, если несуществующих адресов больше 1% или если жалобы вместе с отписками превышают 1%. Поэтому базу нужно чистить, а несуществующие адреса держать в стоп-листе, чтобы они не попадали в следующую рассылку.
Отписка. Ссылка «отписаться» в каждом письме обязательна по антиспам-правилам сервисов рассылок: видимая, рабочая, в один клик, рядом контакты отправителя и указание, почему человек получает письмо. Отписка бережёт репутацию. Человек, которому неудобно отписаться, нажмёт «Это спам», а жалоба весит намного больше.
Прогрев. Новый сервер или новый IP-адрес у почтовых служб «холодный»: истории нет, доверия нет. Если сразу отправить с него несколько тысяч писем, значительная часть уйдёт в спам. Объём наращивают постепенно и следят за возвратами и чёрными списками. Сервисы рассылок работают так же: допустимая скорость отправки растёт при чистой репутации и падает при возвратах и жалобах.
Для ориентира — цифры одной из наших рассылок. Рассылка лаборатории ко Дню знаний ушла на 4 979 адресов, доставлено 4 851 письмо, открытий — 969. Не дошли 128 писем. Такие адреса нужно разобрать и убрать из базы до следующей отправки, иначе они снова ударят по репутации.
Что делаем у клиентов
Почту клиентов на их доменах мы ведём сами: клиент сам заводит ящики, а за доставку, репутацию отправителя и возвраты отвечаем мы.
На каждый клиентский домен мы настраиваем одинаковый набор:
- MX — куда доставлять входящую почту;
- SPF — список разрешённых серверов-отправителей;
- DKIM — отдельный ключ для каждого домена, поэтому подпись совпадает с адресом отправителя и проходит проверку DMARC;
- DMARC с политикой
quarantineи адресом для отчётов; - PTR — запрашиваем у провайдера, которому принадлежит IP-адрес сервера.
После настройки отправляем тестовое письмо на mail-tester.com и проверяем, что SPF, DKIM и DMARC проходят.
Для возвратов у нас работает собственный стоп-лист. Сервер разбирает уведомления о недоставке: если ящик подтверждённо не существует, повторные письма на него блокируются. Владелец домена получает письмо с ошибочным адресом и может исправить его в своей базе. Если ошибка в самом домене, например опечатка в названии почтовой службы, мы тоже сообщаем о ней, но адрес не блокируем.
Когда берём проект с чужого хостинга, первым делом проверяем записи. В SPF нередко остаются серверы прежнего хостинга или почтового сервиса, которым уже не пользуются. Такие хвосты мы убираем, а SPF и DMARC приводим в порядок на всех доменах клиента, включая те, с которых почта уходит редко.
Если вы не уверены в своём домене, пройдите три шага из раздела о проверке. Если где-то стоит FAIL или запросы dig возвращают пустоту, напишите нам — посмотрим и скажем, что поправить.