1С Битрикс · 7 мин чтения

Битрикс почта: настройка SMTP и защита от спама

Битрикс почта - тема, с которой сталкивается почти каждый проект на этой платформе: письмо с подтверждением заказа не приходит, уведомление о регистрации падает в спам, а разработчик до последнего думает, что дело в шаблоне письма. На практике причина почти всегда в одном из трёх мест: способе отправки, DNS-записях домена и репутации сервера, с которого письмо физически уходит. Я настраивал почту на проектах на Битриксе разного масштаба, от лендингов до интернет-магазинов с активным потоком заказов, и ниже собрал то, что реально влияет на доставляемость.

Как Битрикс отправляет почту: PHP mail() и SMTP

Системные письма в Битриксе (подтверждение заказа, регистрация, восстановление пароля) уходят через движок почтовых событий: в админке это раздел Контент (или Marketing) - Почтовые события, где для каждого триггера настроен шаблон письма. А вот способ физической отправки настраивается отдельно, и тут есть два варианта.

Первый - обычная функция PHP mail(), которая передаёт письмо локальному почтовому агенту на хостинге (обычно sendmail или postfix, который уже стоит на сервере). Это работает из коробки без единой настройки, поэтому большинство проектов так и остаются на нём годами. Проблема в том, что при таком способе получающий сервер видит письмо от IP хостинга, у которого может не быть выровненных SPF и DKIM записей под ваш домен, а сам IP часто общий с сотнями других сайтов на том же тарифе. Если сосед по IP рассылал спам, репутация задета у всех.

Второй вариант - отправка через SMTP с авторизацией: сайт подключается к конкретному почтовому серверу (своему корпоративному ящику, сервису транзакционной рассылки или релею хостинга) по логину и паролю, письмо уходит с сервера, у которого репутация уже выстроена и подписи настроены правильно. Для сайтов с заказами и регистрациями это осознанный шаг вперёд по доставляемости, и настраивается он за 10-15 минут.

Настройка SMTP и проверка отправки

В административной панели способ отправки почты меняется в разделе Настройки - Настройки продукта - Настройки почты (в части версий пункт называется Система - Почтовые сервисы). Там есть переключатель метода отправки: обычный mail() или SMTP, а для SMTP - поля хоста, порта, логина, пароля и типа шифрования.

Важный момент для сайтов на обычном хостинге: порт 25 у большинства провайдеров закрыт на исходящих соединениях именно потому, что это основной канал для спам-рассылок с заражённых сайтов. Рабочие варианты - порт 587 с STARTTLS или порт 465 с SSL, и оба обычно открыты даже на shared-хостинге. Если письма не уходят и в логе висит таймаут на подключении, в 9 случаях из 10 дело именно в порте 25.

Проверить, что порт вообще доступен с сервера, можно без Битрикса, просто через консоль хостинга:

openssl s_client -connect smtp.yandex.ru:465 -crlf

Если соединение открывается и в ответ приходит приветствие SMTP-сервера, порт не блокируется и проблема в настройках самого Битрикса, а не в хостинге.

После смены настроек обязательно отправляю тестовое письмо через кнопку в том же разделе и смотрю, куда оно упало - во «Входящие» или в спам, это уже первый сигнал о состоянии домена. Если нужно отправить письмо программно, например при кастомной интеграции с CRM, в актуальном ядре D7 для этого есть Bitrix\Main\Mail\Event::send():

\Bitrix\Main\Mail\Event::send([
 'EVENT_NAME' => 'ORDER_NEW_CLIENT',
 'LID' => 's1',
 'C_FIELDS' => [
 'EMAIL' => 'client@example.ru',
 'ORDER_ID' => $orderId,
 ],
]);

Имя события и набор полей в C_FIELDS у каждого проекта свои, они завязаны на конкретный шаблон почтового события, настроенный в админке, поэтому перед вызовом стоит свериться с полями, которые реально ждёт этот шаблон.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Почему письма попадают в спам: SPF, DKIM и DMARC

Даже с правильно настроенным SMTP письма могут падать в спам, если домен не подтверждает, что имеет право отправлять почту от своего имени. За это отвечают три DNS-записи.

Запись Тип Что делает
SPF TXT Перечисляет серверы и сервисы, которым разрешено отправлять письма от имени домена
DKIM TXT Добавляет к письму криптографическую подпись, которую получатель сверяет с открытым ключом в DNS
DMARC TXT Указывает почтовым серверам, что делать с письмом, если SPF или DKIM не прошли проверку

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

Ещё один рабочий приём для магазинов с большим потоком писем - завести под транзакционные рассылки отдельный поддомен вроде mail.site.ru, чтобы репутация писем о заказах не зависела от того, что происходит на основном домене с точки зрения маркетинговых рассылок. И стоит завести аккаунт в Яндекс.Вебмастере или Postmaster Tools от Mail.ru - там видно, как почтовые системы оценивают репутацию домена и есть ли жалобы на спам.

Выбор SMTP-сервера для сайта на Битрикс

На практике есть три рабочих сценария.

Корпоративная почта на своём домене (Яндекс 360, VK WorkMail, Mail.ru для бизнеса) - самый частый выбор для среднего проекта. SPF и DKIM провайдер обычно настраивает сам или даёт готовые значения для DNS, а SMTP-релей уже входит в тариф на почту, который клиент и так оплачивает под рабочие ящики сотрудников.

Собственный почтовый сервер на выделенном сервере - вариант для проектов с очень большим объёмом писем, где хочется полного контроля над очередью и репутацией. Это отдельный сервер, который придётся администрировать: следить, чтобы IP не попал в чёрные списки, продлевать сертификаты, обновлять софт и постоянно прогревать репутацию новых адресов. Для интернет-магазина с несколькими сотнями заказов в месяц это неоправданно тяжёлая инфраструктура.

Специализированные сервисы транзакционной рассылки - хороший вариант, когда объём писем большой, а держать почтовый сервер самому не хочется: репутация IP уже выстроена провайдером, есть готовая статистика по доставляемости и открытиям.

Отдельно стоит вопрос надёжности самого канала: письмо технически может дойти по всем стандартам, но клиент всё равно не увидит его, если оно осело в папке «Промоакции» или спаме. Для критичных уведомлений (новый заказ, статус доставки) на некоторых проектах дублирую канал через Telegram-бота на aiogram, который параллельно с письмом кидает уведомление менеджеру или клиенту в чат, это не подменяет почту, но закрывает момент, когда письмо технически ушло, а его никто не открыл. Если такие вопросы возникают на регулярной основе и почту нужно не просто настроить один раз, а держать под присмотром, обычно это уже задача на техническую поддержку сайта - мониторить очередь, DNS-записи и жалобы на спам без того, чтобы каждый раз разбираться заново.

Частые ошибки при настройке почты в Битриксе

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

  • Способ отправки оставлен на PHP mail() по умолчанию, хотя сайт уже отправляет сотни писем в день
  • В качестве адреса отправителя стоит личный ящик на @gmail.com или @mail.ru, а не адрес на домене сайта - почтовые системы такое сочетание с чужим SMTP воспринимают как подозрительное
  • SPF-запись домена не включает сервис, через который реально уходит почта после подключения SMTP
  • DKIM для отправляющего домена не включён у почтового провайдера, хотя SPF настроен
  • DMARC-запись отсутствует вовсе, из-за чего получающие серверы сами решают, что делать с письмами без выравнивания подписи
  • Транзакционные и маркетинговые рассылки уходят с одного и того же адреса и домена, из-за чего жалобы на маркетинговую рассылку портят репутацию писем о заказах
  • Очередь писем и логи ошибок отправки никто не смотрит, поэтому проблема всплывает только когда клиент пишет, что не получил письмо

1С-Битрикс регулярно обновляется, поэтому перед внедрением я сверяюсь с актуальной документацией.

Частые вопросы

Как проверить, что письма Битрикс уходят через SMTP, а не через mail()?

Открыть раздел Настройки - Настройки продукта - Настройки почты и посмотреть на выбранный способ отправки. Если стоит SMTP, там же видны хост и порт. Дополнительно можно отправить тестовое письмо и посмотреть заголовки полученного письма (Received, X‑Mailer) на стороне получателя - там будет видно, с какого сервера оно реально ушло.

Что делать, если письма Битрикс попадают в спам у Mail.ru или Яндекса?

Сначала проверить SPF и DKIM для домена, с которого реально уходит почта, через любой онлайн-чекер DNS-записей. Дальше завести аккаунт в Postmaster-инструментах Mail.ru и Яндекс.Вебмастере - там показывают конкретную причину снижения репутации: жалобы, резкий рост объёма рассылки или проблемы с подписью. Часто помогает и смена адреса отправителя на адрес, реально принадлежащий домену сайта, а не сторонний ящик.

Нужен ли отдельный сервер для отправки почты в Битриксе?

Для большинства сайтов и интернет-магазинов нет. Обычного хостинга с открытым портом 587 или 465 и подключением к SMTP корпоративной почты или сервиса транзакционных рассылок достаточно. Свой почтовый сервер имеет смысл только при очень большом объёме писем, и это отдельная инфраструктура, которую придётся администрировать и оплачивать постоянно, а не разовая настройка.

Как узнать, что письмо вообще было отправлено, если клиент говорит, что не получал?

В Битриксе можно посмотреть журнал почтовых событий (раздел с логом отправки в разделе почтовых событий или уведомлений) - там видно, было ли письмо поставлено в очередь и ушло ли оно без ошибки на стороне сервера. Если по логу письмо ушло, а клиент его не получил, дальше смотрю на попадание в спам или на то, не отклонил ли его почтовый сервер получателя из-за проблем с SPF или DKIM.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно