Почему нужен исходный текст, а не само письмо
В почтовом ящике видны только отправитель, тема и текст. Всё, по чему спам-фильтр принимает решение, лежит в служебных заголовках: с какого сервера пришло письмо, прошло ли оно проверки SPF, DKIM и DMARC, есть ли ссылка для отписки, каким путём письмо шло. Сервер получателя сам дописывает в письмо результаты проверки — заголовок Authentication-Results. Поэтому самый точный способ узнать, что «думает» Gmail или Яндекс о вашем письме, — прочитать этот заголовок у полученного письма.
Пересылать письмо самому себе кнопкой «Переслать» бесполезно: пересланное письмо уходит уже с вашего ящика, и все заголовки исходного письма теряются. Отправьте новое письмо тем же способом, каким его получают клиенты, и копируйте исходник уже у получателя.
Что проверяем
| Группа | Что смотрим | Чем грозит проблема |
|---|---|---|
| Аутентификация | Результаты SPF, DKIM и DMARC от сервера получателя, совпадение домена «От кого» с доменами SPF и DKIM | Письмо без подтверждения отправителя уходит в спам или отклоняется |
| DNS домена сейчас | SPF и DMARC домена отправителя, наличие ключа DKIM по селектору из подписи | Даже правильный сервис отправки не поможет, если записей нет |
| Требования к рассылкам | List-Unsubscribe и List-Unsubscribe-Post (отписка в один клик), DMARC, совпадение доменов | Gmail с 2024 года отклоняет массовые рассылки, не выполняющие требования |
| Путь письма | Адрес сервера отправки, его PTR и имя в приветствии (HELO), шифрование TLS по цепочке Received | Сервер без PTR и TLS выглядит как заражённый компьютер |
| Репутация адреса | Адрес отправки в Spamhaus ZEN, SpamCop, PSBL | Письма с адресов из спам-листов многие сервисы не принимают |
| Заголовки | Message-ID, Date, Return-Path, Reply-To, тема, имя отправителя | Нарушения стандарта выдают самодельную или поддельную отправку |
| Содержание | Текстовая версия, размер HTML, картинки и текст, ссылки и их домены, сокращатели, вложения, спам-слова, капс, «!!!» | Фильтр складывает мелкие признаки — вместе они перевешивают |
SPF, DKIM и DMARC в заголовках письма
В заголовке Authentication-Results сервер получателя пишет результат каждой проверки: spf=pass, dkim=fail, dmarc=pass и так далее. Pass — проверка пройдена. Fail — не пройдена: для SPF это значит, что сервер отправки не указан в SPF-записи домена; для DKIM — что подпись не сошлась. Softfail у SPF — мягкий отказ: запись заканчивается на ~all, и сервер в неё не входит. None — проверять было нечего: записи или подписи нет.
DMARC проверяет не только сами SPF и DKIM, но и совпадение доменов. Домен в поле «От кого» должен совпадать с доменом, для которого прошёл SPF (адрес возврата, Return-Path), или с доменом подписи DKIM (параметр d=). Частая ситуация с сервисами рассылок: SPF и DKIM проходят, но для домена сервиса, а не для вашего, — и DMARC не пройден. Лечится подключением своего домена в настройках сервиса: он даст DKIM-ключ для вашего DNS и, иногда, поддомен для адреса возврата.
Кроме заголовков письма мы сразу проверяем DNS домена отправителя: есть ли SPF и DMARC сейчас и опубликован ли ключ DKIM с тем селектором, которым подписано письмо. Подробную проверку домена — MX, лимит в 10 DNS-запросов SPF, типовые селекторы DKIM — делает проверка почты домена, а правильные записи собирает генератор SPF, DKIM и DMARC.
Требования Gmail к рассылкам
С февраля 2024 года Gmail ввёл обязательные правила для всех, кто отправляет письма на его ящики, и отдельные — для массовых отправителей, от 5 000 писем в сутки. Яндекс и Mail.ru смотрят на те же признаки при фильтрации, хотя жёстких порогов не публикуют.
- Для всех отправителей: SPF или DKIM, прямая и обратная DNS-запись (PTR) у сервера отправки, шифрование TLS, письмо по стандарту RFC 5322, низкая доля жалоб на спам.
- Для массовых рассылок дополнительно: и SPF, и DKIM, запись DMARC (достаточно p=none), совпадение домена «От кого» с доменом SPF или DKIM, отписка в один клик.
- Отписка в один клик — это два заголовка: List-Unsubscribe с https-ссылкой и List-Unsubscribe-Post: List-Unsubscribe=One-Click (RFC 8058). Почтовый сервис отправляет POST-запрос на эту ссылку, и человек отписывается без входа на сайт. Ссылка «Отписаться» внизу письма остаётся, но заголовков она не заменяет.
Содержание: что действительно мешает
Современные фильтры не отправляют письмо в спам из-за одного слова «бесплатно». Они складывают десятки признаков и смотрят на репутацию отправителя. Но у плохо собранного письма признаки накапливаются быстро: текст в картинке, ссылки через сокращатели, тема капсом с тремя восклицательными знаками, HTML без текстовой версии.
- Ссылка показывает один адрес, а ведёт на другой. Самый сильный признак фишинга. Часто его создаёт сам сервис рассылок, подменяя ссылки на свой домен отслеживания. Пишите в тексте ссылки слова, а не адрес, или подключите свой домен для отслеживания.
- Письмо из картинок. Фильтр не читает текст на картинке и считает такое письмо подозрительным. Важное пишите текстом.
- Нет текстовой версии. Письмо должно содержать часть text/plain рядом с HTML.
- HTML тяжелее 102 КБ. Gmail обрезает такие письма, и ссылка отписки в конце пропадает.
- Вложения .exe, .js, .html, .iso. Gmail блокирует такие письма целиком. Документы с макросами и архивы проверяются строже.
Что проверка не делает
- Не сохраняет письмо. Письмо разбирается в памяти сервера и сразу забывается: мы не записываем его в базу и журналы. Для ограничения частоты проверок храним только обезличенный счётчик обращений, тоже в памяти.
- Не пересчитывает подписи DKIM. Мы читаем результат, который записал сервер получателя. Поэтому личные данные в тексте можно заменить перед проверкой — на результат это не повлияет.
- Не знает репутации домена у конкретного сервиса. Жалобы получателей и историю отправок видят только сами почтовые сервисы: Gmail — в Postmaster Tools, Яндекс и Mail.ru — в своих постмастер-кабинетах.
- Не проверяет письмо отправкой на наш адрес. Пока только вставка исходника.
Проверка бесплатная, без регистрации, до 30 писем в сутки с одного адреса. Если письма с сайта не уходят вовсе, начните с диагностики SMTP-сервера и статьи как найти задержку письма по заголовкам Received. Настроить SPF, DKIM, DMARC, отправку с сайта и проверить доставку на Яндекс, Mail.ru и Gmail мы можем в рамках услуги корпоративной почты; если письма компании уже массово уходят в спам — посмотрите срочную помощь.
Вопросы и ответы
Почему письма попадают в спам?
Чаще всего из-за технических настроек: нет SPF, DKIM или DMARC, домен «От кого» не совпадает с доменом подписи, у сервера нет обратной записи PTR или его адрес в спам-листе. На втором месте — содержание: письмо из картинок, ссылки через сокращатели, подмена адресов в ссылках, капс. На третьем — жалобы получателей. Проверка показывает первые две группы причин по одному письму.
Как проверить письмо на спам онлайн?
Отправьте письмо на свой ящик в Gmail, Яндекс Почте или Mail.ru, откройте его исходный текст («Показать оригинал», «Свойства письма» или «Служебные заголовки») и вставьте в поле проверки. Через пару секунд увидите результаты SPF, DKIM и DMARC, путь письма, требования к рассылкам и разбор содержания.
Что такое List-Unsubscribe и нужен ли он?
Это служебный заголовок со ссылкой для отписки. По нему почтовый сервис показывает кнопку «Отписаться» рядом с отправителем. Для массовых рассылок на Gmail он обязателен с 2024 года, причём в варианте «в один клик»: https-ссылка плюс заголовок List-Unsubscribe-Post: List-Unsubscribe=One-Click. Для писем по заказу и счетов он не нужен.
DKIM не проходит — что делать?
Посмотрите в проверке домен d= и селектор s= подписи. Если ключа с таким селектором нет в DNS, опубликуйте его из настроек почтового сервиса. Если ключ есть, а подпись не сходится, письмо меняли после подписи: пересылка, антивирус или почтовый сервер, добавляющий подпись или дисклеймер. Если DKIM проходит, но для чужого домена, подключите в сервисе отправки подпись своим доменом.
SPF softfail или fail — что это значит?
Сервер, с которого ушло письмо, не перечислен в SPF-записи домена. Softfail — запись заканчивается на ~all, письмо скорее пометят подозрительным; fail — на -all, его могут отклонить. Добавьте в SPF include вашего почтового сервиса или IP своего сервера и проверьте, что у домена одна запись v=spf1.
Почему DMARC не пройден, если SPF и DKIM прошли?
DMARC требует, чтобы домен «От кого» совпадал с доменом, для которого прошёл SPF или DKIM. Если письмо уходит через сервис рассылок, проверки часто проходят для домена сервиса. Проверка покажет, какие домены участвовали и где расхождение.
Какие требования у Gmail к рассылкам?
Для всех отправителей — SPF или DKIM, PTR у сервера, TLS и письмо по стандарту. Для отправляющих больше 5 000 писем в сутки на Gmail — ещё и SPF, и DKIM одновременно, запись DMARC, совпадение домена From с SPF или DKIM и отписка в один клик. Яндекс и Mail.ru учитывают те же признаки при фильтрации.
Вы сохраняете письмо, которое я вставляю?
Нет. Письмо разбирается в памяти и после ответа забывается — не попадает ни в базу, ни в журналы сервера. По сети мы обращаемся только к DNS (записи домена отправителя, PTR) и к спам-листам по адресу сервера отправки. Если в письме есть чужие личные данные, их можно заменить перед проверкой.
Можно проверить письмо, которое ещё не отправлено?
Частично: без заголовков сервера получателя проверка не увидит результатов SPF, DKIM, DMARC и путь письма, зато проверит содержание и DNS домена. Надёжнее отправить письмо себе и вставить исходник полученного.
Проверка бесплатная?
Да, без регистрации. Лимит — 30 писем в сутки и 5 за 10 минут с одного адреса.