Почта в BitrixEnv по умолчанию уходит через локальный клиент msmtp, который PHP использует как sendmail. Такой транспорт работает «из коробки», но письма легко улетают в спам без правильных DNS-записей. Разберём, как устроена отправка, как подключить внешний SMTP-релей и что настроить, чтобы письма доходили.
Как BitrixEnv отправляет письма
1С-Битрикс шлёт письма через стандартную функцию PHP mail(). Куда именно уходит письмо, определяет директива sendmail_path в конфигурации PHP. В BitrixEnv в роли sendmail выступает лёгкий SMTP-клиент msmtp:
sendmail_path = /usr/bin/msmtp -t -i
Флаг -t означает, что получатели читаются из заголовков письма. Дальше msmtp по своему конфигу решает, отправлять напрямую с сервера или релеить через внешний SMTP. Это принципиально важно понимать:
- Прямая отправка — msmtp сам соединяется с MX-серверами получателей. Быстро в настройке, но крайне уязвимо к спам-фильтрам, если у сервера нет PTR и правильных DNS.
- Релей через внешний SMTP — msmtp передаёт письмо доверенному провайдеру (Яндекс 360, корпоративный сервер, транзакционный сервис). Доставляемость заметно выше.
b_event и рассылаются агентом на хитах или по cron. Если письма «не отправляются», сначала проверьте, что очередь событий вообще разгребается.Конфигурация msmtp
Главный конфиг — /etc/msmtprc. В нём задаётся default-аккаунт и параметры релея. Пример подключения внешнего SMTP по TLS:
defaults
logfile /var/log/msmtp.log
tls on
tls_starttls on
account main
host smtp.example.com
port 587
from noreply@example.com
auth on
user noreply@example.com
password ВАШ_ПАРОЛЬ
account default : main
Ключевые моменты при настройке:
- Порт 587 с STARTTLS — универсальный вариант; 465 используется с
tls_starttls off(implicit TLS). - Адрес в
fromдолжен быть на вашем домене — многие провайдеры отклоняют письма с чужим отправителем. - Файл с паролем держите с правами
600; msmtp ругается на слишком открытые права и не стартует.
sendmail_path по-прежнему указывает на msmtp, а ваш /etc/msmtprc на месте.Подключение внешнего SMTP из админки Bitrix
Помимо серверного релея, отправку можно настроить средствами самого сайта. В админке 1С-Битрикс это раздел Настройки → Настройки продукта → Почтовые события и модуль отправки почты. Начиная с современных редакций доступна настройка SMTP прямо в свойствах почтового ящика/отправителя без правки конфигов сервера.
Сравним два подхода:
| Критерий | msmtp на сервере | SMTP в админке Bitrix |
|---|---|---|
| Область действия | вся почта окружения | конкретные события/ящики |
| Доступ | нужен root на сервере | достаточно прав администратора сайта |
| Переживает обновление окружения | требует контроля | хранится в БД сайта |
| Гибкость по доменам | один релей на всё | разные SMTP под разные отправители |
Для мультисайтовых пулов, где каждый сайт шлёт от своего домена, настройка SMTP на уровне сайта обычно удобнее. Для единой транзакционной почты всего сервера — релей через msmtp.
SPF, DKIM, DMARC и PTR
Технически исправная отправка ещё не гарантирует доставку в «Входящие». За репутацию отвечают четыре DNS-механизма, которые нужно настроить на домене отправителя.
- PTR (обратная запись) — IP сервера должен резолвиться в имя хоста. Настраивается у хостера/провайдера IP. Без PTR письма часто режутся на входе.
- SPF — TXT-запись, перечисляющая, кто вправе слать от вашего домена. Пример:
v=spf1 ip4:203.0.113.10 include:_spf.example-smtp.ru ~all. - DKIM — криптографическая подпись писем. Если релеите через внешний SMTP, ключ и запись даёт провайдер; при прямой отправке подпись нужно организовать самому (например, через OpenDKIM).
- DMARC — политика на случай непрохождения SPF/DKIM:
v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com.
Проверка и тестирование отправки
После настройки прогоните отправку на нескольких уровнях — от сервера до бизнес-логики Bitrix.
- Проверка msmtp напрямую:
echo -e "Subject: test\n\nbody" | msmtp -a default you@gmail.com— и смотрите/var/log/msmtp.log. - Проверка через PHP: отправьте письмо функцией
mail()из тестового скрипта — так вы проверяете именноsendmail_path. - Проверка из Bitrix: в разделе почтовых событий есть отправка тестового письма по шаблону; в «Проверке системы» (Настройки → Инструменты) есть тест исходящей почты.
Диагностируйте по логам:
| Лог | Что смотреть |
|---|---|
/var/log/msmtp.log | факт отправки, ответ SMTP-сервера, ошибки auth/TLS |
очередь b_event | копятся ли письма и разгребает ли их агент |
| внешние сервисы (mail-tester и т.п.) | итоговый спам-скор, наличие SPF/DKIM/DMARC |
Очередь писем и агенты Bitrix
Даже с идеальным SMTP письма могут «висеть», если не работает механизм рассылки Bitrix. Почтовые события ставятся в очередь и отправляются:
- на хитах — стандартный режим, когда агенты запускаются посетителями сайта (медленно на низком трафике);
- по cron — рекомендованный для интернет-магазинов режим, когда агенты и отправка почты идут по расписанию независимо от посещаемости.
Перевод агентов на cron включается в /bitrix/php_interface/dbconn.php константой define("BX_CRON", true); и добавлением в crontab запуска cron_events.php. Управляйте объёмом рассылки за проход настройкой количества писем на хит/шаг, чтобы очередь не копилась при пиковых нагрузках.
Итог
Почта в BitrixEnv строится на связке PHP mail() → msmtp → SMTP-релей. Работоспособность обеспечивают три слоя: корректный транспорт (msmtp или SMTP в админке), репутация домена (PTR, SPF, DKIM, DMARC) и исправная очередь событий Bitrix с рассылкой по cron. Пропуск любого слоя приводит к типовым симптомам — от «письма в спаме» до «письма вообще не уходят».
Мы настраиваем отправку почты для проектов на 1С-Битрикс под ключ: подключаем транзакционный SMTP, прописываем DNS-записи, переводим агенты на cron и подключаем мониторинг доставляемости в рамках технической поддержки. Если почта — часть интеграции с CRM или внешними системами, помогаем выстроить обмен так, чтобы уведомления и данные ходили надёжно.
Частые вопросы
Через что BitrixEnv отправляет письма по умолчанию?
Через локальный SMTP-клиент msmtp, который прописан в PHP как sendmail_path. Функция mail() в 1С-Битрикс передаёт письмо msmtp, а тот отправляет его напрямую или через внешний релей в зависимости от /etc/msmtprc.
Почему письма с сайта попадают в спам?
Чаще всего из-за прямой отправки с сервера без обратной записи PTR и без SPF. Настройте PTR у провайдера IP, добавьте SPF и DKIM на домене отправителя или релейте почту через доверенный SMTP-сервис.
Как подключить внешний SMTP на всё окружение?
Отредактируйте /etc/msmtprc: укажите host, port, from, включите auth и tls, задайте user и password. Файл должен иметь права 600. После этого вся почта окружения будет уходить через этот релей.
Можно ли настроить разные SMTP для разных сайтов пула?
Да, удобнее делать это в админке 1С-Битрикс на уровне почтовых событий и ящиков отправителей: настройки хранятся в БД сайта. Серверный msmtp настраивает единый релей на всё окружение.
Письма ставятся в очередь, но не отправляются. В чём дело?
Скорее всего не отрабатывают агенты рассылки. На сайтах с малым трафиком переведите агенты и отправку почты на cron: включите BX_CRON в dbconn.php и добавьте запуск cron_events.php в crontab.
Как быстро проверить, что отправка вообще работает?
Отправьте тестовое письмо напрямую через msmtp и посмотрите /var/log/msmtp.log. Затем проверьте отправку из PHP функцией mail() и тестовым письмом из почтовых событий в админке Bitrix.
Нужен ли DKIM, если я уже настроил SPF?
Желательно. SPF проверяет отправляющий сервер, DKIM подтверждает целостность письма подписью. Многие крупные почтовики требуют обе проверки, а DMARC связывает их в единую политику. Для стабильной доставки настраивайте все три.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.