Основной Процесс Отправки Писем в Битрикс В продуктах 1С-Битрикс используется глобальная функция bxmail, которая вызывает стандартную функцию mail языка PHP, оборачивая письмо заголовками. По умолчанию, все письма (рассылки, CRM, письма для восстановления пароля, роботы и т.д.) уходят в один поток через функцию mail.
Преимущества Использования SMTP-Сервера
Разделение потоков;
Использование алиасов (alias);
Простота настройки;
Возможность отладки;
Возможность отправки на хитах;
Возможность держать подключение открытым (полезно для массовых рассылок).
Настройка Postfix
1. Установка Postfix sudo apt-get update sudo apt-get install postfix
Укажите ваш SMTP-сервер и порт: relayhost = [smtp.yourserver.com]:587
3. Настройка Аутентификации Создайте файл с информацией для аутентификации на вашем SMTP-сервере: sudo nano /etc/postfix/sasl_passwd
и добавьте в него следующую строку: [smtp.yourserver.com]:587 username:password
4. Обновление Параметров Безопасности и Перезагрузка Postfix sudo postmap /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd sudo systemctl restart postfix
5. Настройка Автоматической Подписи Сообщений DKIM Установите необходимые пакеты и сгенерируйте ключи: sudo apt-get install opendkim opendkim-tools opendkim-genkey -t -s mail -d yourdomain.com
Настройте DKIM в Postfix: sudo nano /etc/opendkim.conf
Возможность Автоматического Выбора SMTP Сервера Для реализации автоматического выбора SMTP сервера в зависимости от адреса отправителя, можно использовать транспортные карты Postfix. В /etc/postfix/transport: user1@yourdomain.com smtp:[smtp.yourserver1.com] user2@yourdomain.com smtp:[smtp.yourserver2.com]
Аналогично можно сделать для всего домена example.com smtp:[smtp.example.com]:587 example2.com smtp:[smtp.example2.com]:587
Затем примените настройки: sudo postmap /etc/postfix/transport sudo systemctl restart postfix
Заключение Теперь, при отправке почты с разных доменов, Postfix будет автоматически выбирать соответствующий SMTP сервер для отправки писем, в соответствии с настройками, указанными в транспортной карте. Это позволяет гибко управлять маршрутами отправки писем и оптимизировать использование ресурсов почтовых серверов.
Для того чтобы в продуктах на платформе 1С-Битрикс (включая "1С-Битрикс: Управление сайтом" и коробочные версии "Битрикс24") настроить автоматический выбор SMTP сервера в зависимости от домена отправителя, вам понадобится воспользоваться программным методом. В качестве примера, можно использовать событие, которое будет отслеживать отправку письма и, в зависимости от адреса отправителя, изменять настройки SMTP.
Вот как это можно реализовать:
Шаг 1: Регистрация Обработчика События Создайте обработчик события для изменения параметров отправки письма перед его отправкой. Для этого в файле /bitrix/php_interface/init.php (если такого файла нет, создайте его) разместите следующий код: AddEventHandler('main', 'OnBeforeEventSend', 'ChangeSMTPSettings');
Этот код регистрирует обработчик события OnBeforeEventSend с именем функции ChangeSMTPSettings . Шаг 2: Создание Функции Обработчика В том же файле /bitrix/php_interface/init.php определите функцию ChangeSMTPSettings. Эта функция будет вызываться перед каждой отправкой письма и будет изменять настройки SMTP в зависимости от домена отправителя: function ChangeSMTPSettings(&$arFields, &$arTemplate) { if (preg_match('/@example.com$/', $arFields['FROM'])) { // Настройки SMTP для домена example.com COption::SetOptionString('main', 'smtp_server', 'smtp.example.com'); COption::SetOptionString('main', 'smtp_port', '587'); COption::SetOptionString('main', 'smtp_login', 'login@example.com'); COption::SetOptionString('main', 'smtp_password', 'password'); } elseif (preg_match('/@example2.com$/', $arFields['FROM'])) { // Настройки SMTP для домена example2.com COption::SetOptionString('main', 'smtp_server', 'smtp.example2.com'); COption::SetOptionString('main', 'smtp_port', '587'); COption::SetOptionString('main', 'smtp_login', 'login@example2.com'); COption::SetOptionString('main', 'smtp_password', 'password'); } }
Шаг 3: Проверка Работы
Теперь при каждой отправке письма через Битрикс будет вызываться ваша функция ChangeSMTPSettings. Эта функция будет проверять адрес отправителя и, в зависимости от его домена, применять соответствующие настройки SMTP.
Пожалуйста, обратите внимание:
Безопасность: Хранение паролей прямо в коде — не лучшая практика с точки зрения безопасности. Рассмотрите возможность использования более безопасного метода хранения паролей. Производительность: Этот метод будет изменять настройки SMTP перед каждой отправкой письма, что может повлиять на производительность системы при массовых рассылках. Кэширование: Возможно, потребуется сбросить кэш Битрикс после добавления/изменения этого кода.
Этот метод предоставляет гибкую систему для контроля настроек SMTP в Битрикс на уровне программирования.