О Обходчик
← Блог

Письма с сайта попадают в спам: почему и как исправить

Разбор для владельца сайта: где в Gmail, Яндексе и Mail.ru смотреть результат проверки письма и что править в DNS и на сайте.

Руслан Хуснутдинов, основатель Обходчика около 10 мин чтения

Письма с домена чаще всего попадают в спам по одной из трёх причин. У домена нет записей SPF, DKIM и DMARC или они настроены с ошибкой. Форма сайта отправляет письма напрямую с сервера хостинга, которого нет в этих записях. Адрес сервера или сам домен попал в чёрный список. Первые две причины исправляются правкой DNS и настроек сайта, если есть доступ к панели домена.

Если же записи в порядке, адрес чистый, а письма всё равно уходят в спам, дело в содержании, в объёме отправки или в жалобах получателей. Какая причина ваша, подскажут заголовки письма — с них и стоит начать.

Сначала посмотрите на одно письмо

Попросите получателя, у которого письмо оказалось в спаме, переслать вам его заголовки. Ещё проще — отправьте письмо с сайта или со своего ящика на домене на свои ящики в Gmail, Яндексе и Mail.ru и посмотрите там.

Где найти заголовки:

В открывшемся тексте найдите строку Authentication-Results. В ней почтовый сервис записал, как письмо прошло три проверки подлинности. Выглядит это примерно так:

Authentication-Results: mxs.mail.ru; spf=pass ...; dkim=pass header.d=example.ru; dmarc=pass

Везде pass — проверки пройдены, ищите причину в репутации или содержании. fail, softfail или none у SPF, fail у DKIM или отсутствие подписи, fail у DMARC — значит, начинать нужно с записей домена.

SPF, DKIM и DMARC простыми словами

Все три — записи в DNS вашего домена. Почтовый сервис получателя читает их и решает, верить ли тому, что письмо пришло от вас.

Запись На какой вопрос отвечает Где лежит
SPF Каким серверам разрешено отправлять почту от имени домена TXT-запись самого домена, начинается с v=spf1
DKIM Подписано ли письмо ключом домена и не изменилось ли по дороге TXT-запись на поддомене вида селектор._domainkey, например mail._domainkey у Яндекс 360
DMARC Что делать с письмом, если проверки не прошли, и куда слать отчёты TXT-запись на поддомене _dmarc

SPF — список разрешённых отправителей. Если почта домена на Яндекс 360, справка Яндекса указывает запись v=spf1 redirect=_spf.yandex.net, а если письма уходят ещё и с других серверов — вариант с их адресами и include:_spf.yandex.net ~all (справка Яндекс 360). Частая ошибка — подключили сервис рассылок или отправку с сайта, а в SPF их не вписали.

DKIM — цифровая подпись. Почтовый сервис, через который вы отправляете письма, выдаёт ключ, его вставляют в DNS отдельной записью. Пока записи нет, письма уходят без подписи или с подписью, которую нельзя проверить.

DMARC связывает первые два. По справке Mail.ru, письмо проходит DMARC, если у домена есть запись DMARC, письмо прошло SPF или DKIM и домен этой проверки совпадает с доменом в поле «От кого». Начать можно с мягкой политики p=none — её допускают и требования Gmail. Она ничего не блокирует, только включает проверку и отчёты.

Тонкость, на которой часто спотыкаются: SPF может пройти для домена хостинга, а в поле «От кого» стоит ваш домен. Тогда SPF формально pass, а DMARC — fail.

Как проверить, что записи есть

SPF проверяется проще всего: это TXT-запись самого домена. Её покажет любая онлайн-проверка DNS, в том числе бесплатная проверка DNS-записей — смотрите, есть ли среди TXT строка, начинающаяся с v=spf1. Такая строка должна быть одна: если SPF-записей две, стандарт SPF считает это ошибкой, и проверка не проходит.

DKIM и DMARC живут на поддоменах, поэтому запрашивать нужно именно их: _dmarc.ваш-домен.ru и селектор._domainkey.ваш-домен.ru. Селектор подсказывает сам почтовый сервис в настройках DKIM, а ещё его видно в заголовке DKIM-Signature любого вашего письма — это значение после s=.

Если вы не уверены, что смотрите туда, проще отправить себе письмо и прочитать Authentication-Results: эта строка показывает итог проверки, по ней сразу видно, работают ли записи. После правки DNS результат появляется не сразу. Яндекс советует подождать 72 часа перед повторной проверкой записей, Mail.ru пишет, что обновление записи DKIM может занять до 48 часов.

Форма на сайте отправляет письма без авторизации

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

Многие сайты отправляют почту функцией mail() в PHP. На Linux-хостинге она не подключается к вашему почтовому ящику: письмо передаётся программе отправки на сервере хостинга (документация PHP). В поле «От кого» при этом стоит ваш домен, а уходит письмо с адреса хостинга, которого нет в вашем SPF, и без вашей подписи DKIM. Для почтового сервиса это выглядит как подделка отправителя. В требованиях Яндекса к рассылкам прямо сказано, что адрес «От кого» должен совпадать с адресом, под которым идёт авторизация на сервере.

Как исправить:

  1. Заведите на домене отдельный ящик для писем сайта, например site@ваш-домен.ru, у того же почтового сервиса, где живёт остальная почта.
  2. Попросите разработчика переключить отправку с mail() на SMTP с логином и паролем этого ящика. Во многих CMS для этого есть настройка или модуль отправки через SMTP.
  3. Проверьте, что в поле «От кого» стоит этот же ящик, а адрес клиента из формы — только в поле для ответа (Reply-To).
  4. Отправьте тестовую заявку и посмотрите Authentication-Results у полученного письма.

Ещё один повод заглянуть в форму — защита от ботов. Mail.ru в технических требованиях отдельно пишет, что формы и скрипты на сайте должны быть защищены от использования для рассылки спама. Незащищённая форма, через которую боты отправляют мусор, быстро портит репутацию домена.

Адрес или домен в чёрном списке

Почтовые серверы сверяются со спам-списками — Spamhaus, Barracuda, SpamCop, SURBL и другими. Если там значится IP-адрес вашего почтового сервера или сам домен, письма начинают отклонять или складывать в спам, хотя SPF, DKIM и DMARC настроены правильно.

Часто туда попадают не за свои рассылки. Взломанный скрипт на сайте отправляет спам с сервера, бот использует форму обратной связи, на общем хостинге адрес делят сотни сайтов, и в список он попал из-за соседа. Если подозреваете взлом — об этом отдельный разбор.

Порядок такой: сначала найти и устранить причину, потом подавать заявку на исключение на сайте списка. Обратный порядок не работает: спам продолжит уходить, и адрес вернётся в список. Проверить, значится ли сайт и его почтовые серверы в основных списках, можно бесплатной проверкой чёрных списков. Если адрес общий и попал туда из-за соседа, решение — отдельный адрес у хостинга или почта у отдельного почтового сервиса.

Содержание и поведение отправки

Когда с подлинностью и списками всё чисто, фильтр смотрит на сами письма и на то, как люди на них реагируют.

  • Жалобы. Каждое нажатие «Это спам» снижает репутацию отправителя. Жалуются обычно на письма, которых человек не ждал.
  • Рассылки без согласия и без отписки. Яндекс в требованиях к рассылкам называет обязательными согласие получателя и понятную отписку в каждом письме.
  • Ссылки. Mail.ru запрещает в рассылках укорачиватели ссылок, скрывающие адрес, и ссылки с голым IP вместо домена.
  • Объём. У обычного ящика есть суточные лимиты: в Яндекс Почте, например, 300 писем через SMTP, и лимит снижают при подозрительных письмах. При превышении отправку блокируют: блокировка снимается через сутки, если в это время не пытаться отправлять письма. Рассылки по базе клиентов поэтому ведут через сервис рассылок.
  • Адреса, которых нет. Когда сервер получателя отвечает, что ящика нет, отправку на этот адрес нужно прекратить.

Письмо из одной строки «Заявка с сайта» и таблицей полей обычно проблем не вызывает. Проблемы начинаются, когда через ту же почту пошли массовые рассылки по старой базе.

Яндекс, Mail.ru и Gmail: что проверить у каждого

Mail.ru держит Постмастер — кабинет для отправителей, где видно, сколько писем доставлено, сколько ушло в спам и сколько заблокировано, и сколько получателей пометили их как спам. Если ваши письма массово читают на Mail.ru, это самый прямой способ узнать, как они туда доходят. Технические требования Mail.ru к отправителям: настроенные SPF, DKIM и DMARC, осмысленная обратная DNS-запись (PTR) у сервера, защита форм на сайте от рассылки спама.

Яндекс публикует требования к рассылкам: DKIM-подпись и SPF обязательны, DMARC рекомендован. Письма, которые не соответствуют обязательным пунктам, Яндекс может отправить в спам или не принять совсем. Что не так с письмами на Яндекс, смотрите по заголовкам писем и по отчётам о недоставке от Mailer-Daemon: в таком отчёте указана причина.

Gmail с 1 февраля 2024 года предъявляет требования к отправителям. Для всех: SPF или DKIM, корректные прямая и обратная DNS-записи, доля писем, помеченных как спам, ниже 0,3 % по данным Postmaster Tools — кабинета Google для отправителей. Для тех, кто отправляет на Gmail больше 5000 писем в день, — SPF и DKIM вместе, DMARC, совпадение домена «От кого» с доменом SPF или DKIM и отписка в один клик для рекламных писем. Сайту с формой заявок до порога далеко, но SPF и DKIM всё равно нужны.

Короткий порядок действий

  1. Отправьте себе письмо с сайта и из ящика на домене, откройте заголовки и найдите Authentication-Results.
  2. Если там fail или none, проверьте записи SPF, DKIM и DMARC и поправьте их по справке своего почтового сервиса.
  3. Если в спам уходят только письма формы, переключите сайт на отправку через SMTP с авторизацией.
  4. Проверьте IP почтового сервера и домен по чёрным спискам; при попадании ищите причину до заявки на исключение.
  5. Если всё чисто, а письма на Mail.ru всё равно в спаме, подключите Постмастер Mail.ru и смотрите жалобы.

Проблемы с записями DNS и чёрными списками появляются тихо: подрядчик перенёс почту и забыл SPF, сосед по хостингу попал в Spamhaus. Узнают об этом обычно по фразе клиента «вы нам не ответили». Начать можно с бесплатной проверки чёрных списков для своего домена, а записи DNS домена, включая SPF, полезно поставить на контроль, чтобы их правка приходила вам сообщением в тот же день.

Проверить у себя

Бесплатно и без регистрации, по одному домену.

← Другие разборы в блоге