Разбираем, почему письма попадают в спам, в порядке от машинных причин к человеческим: сначала то, что почтовый сервер проверяет автоматически до чтения текста, потом репутация отправителя, и только в конце содержание. Речь про рассылку по своей базе с согласием, когда отправка уже настроена, но часть адресатов перестала видеть письма во «Входящих». «Прогрев» здесь означает разгон объёма отправки с домена и IP-адреса, а не раскачку профиля в соцсети.
Принимающий сервер оценивает письмо по трём контурам: аутентификация в DNS, репутация домена и IP, реакция получателей. Разбор идёт от проверок с однозначным ответом к гипотезам про содержание: правка текста при сломанном DKIM не даёт ничего. Первый шаг: открыть исходник письма, попавшего в спам у получателя. В Gmail это «Показать оригинал», в Mail «Служебные заголовки». Дальше ищется строка Authentication-Results, которую вписывает принимающий сервер. Значения заданы RFC 8601: для SPF это none, pass, fail, softfail, neutral, temperror, permerror и policy, для DKIM none, pass, fail, policy, neutral, temperror, permerror.
| Что в заголовке | Что это значит | Что чинить |
|---|---|---|
| spf=pass, dkim=pass | Аутентификация в порядке, дело в репутации или базе | Идти в разделы про репутацию и жалобы |
| spf=softfail | Домен не подтверждает отправителя, но и не требует отклонения | Добавить IP или include сервиса в SPF |
| spf=permerror | Запись нерабочая, чаще всего превышен лимит DNS-запросов | Сократить число механизмов в SPF |
| dkim=fail | Подпись не сходится: тело изменено в пути или взят не тот селектор | Сверить селектор и публичный ключ |
| dkim=none | Письмо ушло без подписи | Включить подпись на стороне сервиса отправки |
Вторая строка исходника это Received: по ней видно реальный IP отправки. Часто выясняется, что кампанию запустили через новый инструмент, а DNS не тронули.
Быстрая самопроверка: где ломается у вас
SPF перечисляет в DNS источники, которым разрешено слать почту от имени домена. Ловушка описана в RFC 7208, раздел 4.6.4: реализация обязана ограничить десятью число механизмов и модификаторов, требующих обращения к DNS, то есть include, a, mx, ptr, exists и redirect. Превышение даёт permerror, запись перестаёт работать целиком; «пустые» запросы рекомендовано ограничивать двумя. Каждый сервис добавляет свой include, и на четвёртом-пятом подрядчике SPF молча ломается.
DKIM подписывает письмо криптографически. RFC 8301 задаёт рамки: алгоритм rsa-sha256, ключ RSA не менее 1024 бит с рекомендацией не менее 2048, rsa-sha1 запрещён. Типичные поломки: домен переехал на другой DNS-хостинг и запись селектора не перенесли, либо сервис перевыпустил ключ, а в зоне остался старый.
DMARC связывает первые две проверки с адресом в поле From. По RFC 7489 тег p принимает три значения: none (особых действий не требуется), quarantine (считать несоответствующие письма подозрительными) и reject (отклонять). Выравнивание бывает relaxed, когда достаточно совпадения организационных доменов, и strict, когда нужно точное. Тег pct принимает целое от 0 до 100 и позволяет вводить политику постепенно.
Отсюда частая авария: домен стоит на p=reject, а рассылка идёт через сервис, который подписывает письма только своим доменом. SPF и DKIM формально проходят, но не выравниваются с From, и DMARC валит письмо. Правила Mail для сервисов рассылок требуют двойного DKIM, подписи ESP и подписи домена клиента, и проверки DMARC при наличии у клиента политики, включая p=reject.
Google требует от всех отправителей независимо от объёма: аутентификацию SPF или DKIM, действительные прямую и обратную записи DNS для отправляющих доменов или IP-адресов, передачу по TLS, соответствие RFC 5322 и отсутствие подмены в заголовке From. Требования обязательны с 1 февраля 2024 года; при объёме более 5 000 писем в сутки на адреса Gmail добавляются DMARC и однокликовая отписка. Обратную запись PTR чаще всего забывают при переезде на свой сервер: IP выдан, прямая запись есть, обратной нет.
| Код | Причина по документации Google |
|---|---|
| 550-5.7.25 | У отправляющего IP-адреса отсутствует запись PTR |
| 550-5.7.26 | Отправитель не авторизован: нет ни SPF, ни DKIM |
| 550-5.7.30 | Массовому отправителю не пройдена аутентификация DKIM |
| 550-5.7.40 | У домена отправителя нет записи или политики DMARC |
| 550-5.7.28 | Необычно высокая доля нежелательных писем с этого IP-адреса |
| 421-4.7.0 | Временное ограничение: нет PTR, низкая репутация или подозрительный текст |
Разница классов задана RFC 5321, раздел 4.2.1: 4yz это временный отказ и письмо можно повторить позже, 5yz постоянный.
Если по всем проверкам стоит pass, на вопрос, почему письма попали в спам, отвечают цифрами репутации, а не догадками. Инструмента два, оба бесплатные и требуют подтверждения владения доменом.
Отдельного публичного постмастера у Яндекса на момент подготовки материала нет: postmaster.yandex.ru отдаёт 404, по этой аудитории диагностика идёт косвенно, по отбивкам SMTP.
Ориентир Google задан явно: доля попаданий в спам в Postmaster Tools не должна превышать 0,30%, держать рекомендуется не выше 0,10%. При базе 20 000 адресов 0,30% это 60 нажатий «Это спам» на кампанию.
Жалоба это не отписка: отписавшийся уходит тихо, пожаловавшийся передаёт сигнал против домена. Механика возврата жалоб называется FBL: почтовая служба сообщает, что подписчик нажал «Спам», и его нужно удалить немедленно. Правила Mail для сервисов рассылок требуют обрабатывать FBL и List-Unsubscribe с отпиской сразу после клика, мониторить SMTP-ответы 4xx и 5xx и отслеживать попадания в «Спам» через постмастер.
Оттуда же чек-лист к платформе: в поле From собственный домен клиента, а не домен сервиса; рассылки с бесплатных почтовых адресов запрещены; каждое письмо подписано двойным DKIM; проставлены заголовки Precedence: bulk и List-Unsubscribe с действующим URL отписки. Если нарушен первый пункт, разбираться с доставляемостью бессмысленно: репутацию своего домена вы не строите. Как сравнивать платформы, разобрано отдельно: как выбрать сервис для рассылки email.
Для отправителей более 5 000 писем в сутки на Gmail однокликовая отписка обязательна. Это два заголовка, которые вставляются вместе: List-Unsubscribe с URL отписки (RFC 2369, справка Mail приводит его со ссылкой в угловых скобках) и List-Unsubscribe-Post со строго единственной парой ключ-значение List-Unsubscribe=One-Click по RFC 8058. Почтовый клиент отправляет HTTPS POST на URI из List-Unsubscribe, передавая в теле пару из второго заголовка.
Отдельное требование RFC 8058: письмо должно нести хотя бы один действительный идентификатор аутентификации, и в текущей версии поддерживается только DKIM. Однокликовая отписка на неподписанном письме не считается настроенной. Дальше две постоянные ошибки. Первая: страница отписки требует авторизации, тогда как справка Mail прямо требует отписки без авторизации и сложных действий. Вторая: по ссылке ходит антиспам-фильтр и подписчиков отписывает робот, ровно от этого RFC 8058 и защищает переводом отписки с GET на POST. Помимо заголовков Google требует заметную ссылку отказа в теле письма.
Массовая рассылка email отличается от переписки не текстом, а профилем трафика: тысячи однотипных сообщений с одного источника за короткое окно. Порог требований Google конкретный: более 5 000 писем в сутки на адреса Gmail, и считается объём именно на Gmail, а не общий. База на 30 000 адресов, где на Gmail треть, уже в этой категории.
Про разгон объёма с нового домена справка Mail высказывается честно: наращивать нужно постепенно, фиксированной формулы не существует. «Схемы прогрева на 30 дней с точными цифрами» из отраслевых блогов это чужой опыт, а не правило почтовой системы. Ориентир задаёт обратная связь:
Справка Mail для отправителей указывает: наличие в рассылках более 5% невалидных адресов может привести к попаданию писем в «Спам» или к блокировке. Это единственная официально названная в русских правилах доля, и на неё стоит смотреть как на красную линию.
Отсюда практика: валидация перед крупной отправкой, удаление по 5xx сразу, автоматическое после серии 4xx, вывод не открывавших полгода через одно реактивационное письмо. Доли жалоб и отбивок считаются от отправленного, поэтому меньшая живая база доставляется лучше большой мёртвой.
Если письма перестали доходить массово и резко, проверяется факт блокировки. По IP это делается на check.spamhaus.org: Reputation Checker принимает адрес, диапазон или номер тикета. Spamhaus Blocklist содержит адреса, признанные источниками рассылки спама, и обновляется каждые пять минут.
Порядок снятия листинга отличается от ожидаемого: заявку подаёт провайдер, ответственный за IP-адрес, а не арендатор. Администратору нужно обратиться в службу безопасности провайдера и описать, как проблема устранена (описание обязательно), после чего провайдер отправляет запрос команде удаления. За снятие листинга Spamhaus плата не взимается никогда, и предложение «ускорить делистинг за деньги» это мошенничество.
С почтовыми службами порядок другой: сначала собирается доказательная база (исходники с отбивками, коды ответов, данные постмастера) и устраняется причина, и только потом подаётся обращение. Без устранённой причины его закроют без результата.
Не хотите разбирать заголовки писем вручную
Настроим SPF, DKIM, DMARC и PTR, подключим постмастеры, соберём мониторинг доли жалоб и отбивок, разведём транзакционные и маркетинговые письма по поддоменам.
Правила Mail начинаются с требования убедиться, что письма идут пользователям, которые в однозначной форме выразили согласие и подтвердили владение адресом: кодом подтверждения в ответном письме, переходом по ссылке подписки или вводом кода активации. Это и есть double opt-in. При авторизации через OAuth он не нужен, но тогда обязательны три условия: не скрывать информацию о согласии, не проставлять галочку подписки по умолчанию и отправить уведомление о регистрации с возможностью отписаться.
Google называет цифры: доля попаданий в спам в Postmaster Tools не должна превышать 0,30%, рекомендуемый уровень не выше 0,10%. Требование адресовано всем отправителям, а не только тем, кто шлёт более 5 000 писем в сутки на адреса Gmail.
Причина обычно в лимите из RFC 7208: не более 10 механизмов и модификаторов с DNS-запросом на проверку. Лимит расходуют include подключённых сервисов, и очередной подрядчик выводит запись за границу, а permerror означает, что SPF не работает целиком.
По документации Google это блокировка из-за отсутствия записи PTR у отправляющего IP-адреса. Рядом стоят 550-5.7.26 (нет ни SPF, ни DKIM), 550-5.7.40 (нет записи DMARC) и 550-5.7.28 (высокая доля жалоб с этого IP).
Справка Mail называет 5%: наличие в рассылках более 5% невалидных адресов может привести к попаданию писем в папку «Спам» или к блокировке. Адреса с постоянным отказом класса 5xx удаляются после первой же отбивки.