Черная дыра для лидов: почему не приходят письма с сайта и как настроить SMTP, SPF и DKIM в WordPress

Форма обратной связи на сайте показывает бодрую зеленую галочку «Ваше сообщение успешно отправлено», клиент спокойно ждет звонка, а менеджер в это время листает соцсети и думает, что трафик идет пустой. Через три дня выясняется, что пять горячих заявок осели в папке «Спам», а еще десяток почтовый сервер просто молча сбросил на входе без уведомления отправителя.

Классическая ситуация: разработчик собрал сайт, натянул верстку, прикрутил Contact Form 7 или WPForms и оставил отправку уведомлений на откуп дефолтной функции PHP mail(). В нулевых это работало. Сегодня почтовые сервисы закрутили гайки безопасности настолько, что любое письмо без подтверждения подлинности отправителя моментально летит в мусорную корзину.

Почему стандартный PHP mail() гарантирует спам

По умолчанию WordPress пытается отправлять сообщения силами самого веб-сервера через системный sendmail. У этого способа есть три фатальные проблемы:

  • Отсутствие авторизации. Письмо формируется от системного пользователя вроде www-data@server123.hosting-provider.ru. Почтовый провайдер получателя видит, что домен сайта заявляет одно имя, а физическая отправка идет с безымянного серверного демона.
  • Убитая репутация IP-адреса хостинга. На виртуальном (shared) хостинге на одном сервере живут сотни сайтов. Если хоть один из ваших «соседей» попался на рассылке серого спама или вирусов, IP сервера попадает в черные списки (Spamhaus, DNSBL). Ваши транзакционные уведомления пойдут на дно вместе с ним.
  • Несовпадение заголовков. Форма отправляет письмо с адресом From: info@vash-sait.ru, но реальный технический заголовок Return-Path указывает на хостинг. Почтовые алгоритмы Яндекса, Gmail и Mail.ru расценивают такую подмену как фишинг.

Базовый фундамент: настраиваем SPF, DKIM и DMARC на DNS

Почтовый ящик не поверит письму с сайта, пока вы на уровне DNS-записей домена явно не скажете: «Да, этот сервер имеет право отправлять от меня почту». Для этого настраивается связка из трех записей:

  • SPF (Sender Policy Framework). Простая текстовая TXT-запись, где перечисляются доверенные IP-адреса или почтовые сервера. Если вы отправляете почту через Яндекс 360, запись в DNS выглядит так: v=spf1 include:_spf.yandex.net ~all. Символ ~all указывает почтовику отправлять неавторизованные письма в подозрительные (SoftFail), а -all — жестко отклонять их.
  • DKIM (DomainKeys Identified Mail). Электронная цифровая подпись. Сервер отправки подписывает каждое исходящее письмо закрытым ключом, а сервер получателя сверяет подпись с открытым ключом, который вы заранее прописали в TXT-запись DNS (обычно с селектором вроде mail._domainkey). Без корректного DKIM современные спам-фильтры Gmail бракуют почту почти со стопроцентной вероятностью.
  • DMARC (Domain-based Message Authentication). Правило, диктующее почтовым серверам, как поступать с письмами, провалившими проверку SPF и DKIM. На старте в DNS вносится мягкая директива: v=DMARC1; p=none; sp=none; rua=mailto:admin@vash-sait.ru. Позже, когда доставка стабилизируется, политику p=none переводят в строгий p=quarantine или p=reject.

Настройка SMTP в WordPress: пошаговый переход на внешний шлюз

Чтобы забыть про проблемы с доставкой, отправку писем нужно перевести на внешний SMTP-сервер с чистой репутацией — корпоративную почту домена (Яндекс 360, VK WorkSpace) либо специализированный транзакционный сервис (SendPulse, Brevo, SMTP2GO).

  1. Создаем технический ящик. Заведите на доменной почте отдельный адрес, например noreply@vash-sait.ru. Обязательно сгенерируйте для него отдельный пароль приложения в настройках безопасности почтового сервиса, а не используйте основной пароль от аккаунта.
  2. Выбираем плагин SMTP. Не перегружайте проект монструозными комбайнами с платной подпиской. Отлично справляются легкие и стабильные решения — FluentSMTP (полностью бесплатный, поддерживает детальные логи отправки) или проверенный WP Mail SMTP.
  3. Заполняем параметры подключения. В настройках плагина указываем:
    • SMTP Host: например, smtp.yandex.ru (или хост вашего сервиса);
    • Шифрование: SSL / TLS;
    • SMTP Port: 465 (для SSL) или 587 (для STARTTLS);
    • SMTP Username: полный адрес ящика noreply@vash-sait.ru;
    • SMTP Password: сгенерированный пароль приложения.
  4. Синхронизируем адрес отправителя. Поле From Email в плагине SMTP и адрес отправителя в настройках плагина форм (Contact Form 7, Elementor Forms) обязаны совпадать буква в букву с авторизованным логином ящика. Несовпадение адреса «От кого» — главная причина, почему плагины выдают ошибку при отправке.

Экспресс-диагностика: как протестировать доставляемость

После сохранения настроек обязательно проведите контрольную проверку, не дожидаясь первых потерянных клиентов:

  • Тестовое письмо на mail-tester.com. Зайдите на сервис, скопируйте сгенерированный одноразовый ящик и отправьте на него письмо через тестовую вкладку в SMTP-плагине. Сервис разложит письмо по косточкам и выдаст оценку по шкале от 1 до 10. Если балл ниже 9 — смотрите, где просели SPF или DKIM.
  • Анализ исходного кода письма. Отправьте заявку на личный ящик в Gmail, откройте письмо, нажмите «Еще» (три точки) -> «Показать оригинал». В сводке заголовков напротив SPF, DKIM и DMARC везде должен гореть зеленый статус PASS.
  • Проверка логов отправки. Держите включенным логирование в FluentSMTP. Если форма на фронтенде отработала штатно, а письмо не дошло, лог сразу покажет точный ответ почтового сервера: неверный порт, отказ авторизации или блокировку по таймауту со стороны хостинга (некоторые хостинг-провайдеры блокируют исходящие порты 465/587, требуя разблокировки через тикет в техподдержку).

Потратить полчаса на делегирование отправки внешнему SMTP и прописку трех TXT-записей в DNS — базовая инженерная гигиена при разработке любого сайта. Это навсегда закрывает вопрос потерянных заявок и гарантирует, что каждый лид упадет в рабочую почту сейлза в течение нескольких секунд после клика по кнопке.

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Пока оценок нет)
Загрузка...
logo