Используемые термины: Linux, Битрикс24, Postfix, PHP, DNS, DKIM, SPF, DMARC, PTR, MX.
По умолчанию, после развертывания коробки Битрикс24 отправка почты (или почтовых уведомлений) не работает или письма постоянно попадают в СПАМ. Мы рассмотрим комплекс мероприятий, которые помогут решить данную проблему полностью или в большей степени. Работать будем с системой на базе Linux.
Независимо от настроенного нами отправителя в веб-интерфейсе, битрикс будет отправлять письма с заголовком envelope-from, значением которого будет общий отправитель, настроенный в системе. Также нам нужно выбрать сервер, через который будет отправляться почта.
Для этого в стартовом меню битрикс (когда заходим под пользователем root) выбираем настройку Configure pool sites:
Available actions: 1. Manage servers in the pool 2. Configure localhost settings 3. Configure MySQL service for the pool 4. Configure Memcached service for the pool 5. Configure pool monitoring 6. Configure pool sites 7. Configure Sphinx service for the pool 8. Manage pool web servers 9. Configure Push/RTC service for the pool 10. Background pool tasks 0. Exit.
Enter your choice: 6
После выбираем пункт Change a site’s email settings:
Available actions:
1. Create a site 2. Delete a site 3. Change a site’s cron settings 4. Change a site’s email settings 5. Change a site’s https settings 6. Change a site’s backup settings 7. Configure NTLM auth for sites 8. Configure optional services (xmppd|smtpd) for a site 9. Configure nginx to use composite cache 10. Configure additional site’s options 0. Previous screen or exit
Enter your choice: 4
Выбираем сайт для настройки (если он один, то default):
Manage email settings 0. Previous screen or exit
Enter site name (default) or 0 to exit: default
Отвечаем на вопросы мастера. В нашем примере мы рассмотрим настройку отправки с локального сервера, поэтому задаем адрес 127.0.0.1. В поле From написать адрес общего отправителя. В итоге, мы получим что-то на подобие:
Found 1 sites: ——————————————————————————– SiteName | dbName | Email | Server | TLS | From ——————————————————————————– default | sitemanager | Y | 127.0.0.1:25 | off | [email protected] ——————————————————————————–
Если нам необходимо отправлять письма с публичных почтовых систем (Яндекс, mail.ru, GMAIL и так далее), необходимо указать их серверы smtp. Если в нашей системе есть пользователи разных почтовых систем, необходимо настроить отправку почты через локальный сервер, который будет с помощью транспортных правил пересылать сообщения через соответствующие системы. Пример настройки postfix для отправки через Яндекс.
Наши настройки сохраняются в файле:
vi /etc/msmtprc
Открываем его, чтобы проверить или изменить данные.
Если на первом шаге мы выбрали отправку писем через локальный сервер, настроим его для корректного формирования и отправки писем. Будем использовать локальный MTA на базе Postfix.
Наш сервер должен иметь правильное имя — его можно задать командой:
hostnamectl set-hostname mail.admins24.com
* заданное имя должно разрешаться через DNS в IP-адрес нашего сервера.
Postfix может быть не установлен в нашей системе, поэтому сначала выполним его инсталляцию.
а) на сервере CentOS:
yum install postfix cyrus-sasl-plain
б) на сервере Ubuntu:
apt-get install postfix cyrus-imapd cyrus-clients cyrus-doc cyrus-admin sasl2-bin
После установки разрешаем автозапуск Postfix:
systemctl enable postfix –now
Открываем конфигурационный файл нашего mta:
vi /etc/postfix/main.cf
Находим не закомментированную строку:
inet_interfaces = localhost
* значение для inet_interfaces может быть не только localhost.
… и меняем ее значение на:
inet_interfaces = all
Задаем в качестве значения для myorigin наш домен, с которого будем отправлять письма:
myorigin = admins24.com
* где admins24.com — мой домен, который я буду использовать в инструкции в качестве примера.
Задаем максимальный размер отправляемого сообщения:
message_size_limit = 52428800
* в данном примере мы задали лимит в 50 Мб.
Указываем серверу передавать сообщения по зашифрованному каналу:
smtp_use_tls = yes
После внесения настроек перезапускаем postfix для их применения:
systemctl restart postfix
Открываем на редактирование файл с настройками PHP. Путь у данного файла может быть разный — это зависит от конкретного дистрибутива Linux. Узнаем путь до файла командой:
php -i | grep php.ini
В моем случае, это был /etc/php.ini — открываем его:
vi /etc/php.ini
Правим 2 строки:
mail.add_x_header = Off … expose_php = Off
* где add_x_header — позволяет добавлять при отправке письма с помощью функции mail() заголовок X-PHP-Originating-Script; expose_php — идентифицирует отправляемое письмо, что оно было сформировано с помощью PHP. Так как присутствие в письме данной информации может привести к негативной реакции со стороны антиспам систем, отключаем ее вывод.
Теперь открываем файл с настройками для PHP, который поставляется с коробкой битрикс24:
vi /etc/php.d/bitrixenv.ini
Находим строку с опцией sendmail_path
sendmail_path = msmtp -t -i
… и приводим ее к виду:
sendmail_path = /usr/sbin/sendmail -t -i
Перезапускаем веб-сервер обработки php:
systemctl restart httpd
Для того, чтобы письма проходили проверки на СПАМ, необходимо убедиться в корректной настройке DNS для нашего домена, от которого выполняется отправка.
Ранее мы задавали имя серверу. На NS нам нужно добавить соответствующую запись типа А, например:
mail.admins24.com A 90.90.90.90
Определяет, с каких серверов можно отправлять почту для нашего домена.
Пример:
v=spf1 +a +mx ip4:93.93.93.93 -all
* в данном примере мы разрешаем отправку с сервера с IP адресов домена, для сервера MX и с IP 93.93.93.93. Остальные письма должны восприниматься как нелегитимные.
Данная запись включает в себя ключ для дешифровки специального заголовка, отправляемого с письмом. Если проверяющая сторона сможет это сделать, значит письмо отправил владелец домена.
Для настройки DKIM необходимо установить соответствующие пакеты на сервер, настроить его и добавить записи в DNS.
Подробнее, про настройку DKIM + Postfix.
Определяет, что делать с письмами, которые не прошли проверку DKIM и SPF.
Пример записи:
v=DMARC1; p=quarantine; sp=none; pct=100; fo=0; rua=mailto:[email protected]
* данная политика укажет, что почту, которая не прошла проверку, необходимо поместить в карантин.
Это обратная запись для внешнего IP-адеса, на котором работает почтовый сервер. Она должна совпадать с именем, которым представляется почтовый сервер (как правило, это имя сервера или его hostname).
Прописывается у провайдера, который предоставляет Интернет (или поставщик МЗЫ)ю
93.93.93.95.in-addr.arpa name = mail.admins24.com
* указываем, что имя узла для IP-адреса 95.93.93.93 должно быть mail.admins24.com.
Для домена должна быть определена MX-запись, которая указывает на адрес почтового сервера. В противном случае, к домену не будет доверия.
MX preference = 10, mail exchanger = mail1.admins24.com MX preference = 20, mail exchanger = mail2.admins24.com
* в данном примере указано 2 почтовых сервера для домена admins24.com. Более приоритетный mail1.admins24.com.
Чтобы письма отправлялись, нужно, чтобы работал cron для битрикс24. Открываем конфигурационный файл:
/home/bitrix/www/bitrix/php_interface/dbconn.php
Проверяем, чтобы была строка:
define(‘BX_CRONTAB_SUPPORT’, true);
Открываем на редактирование crontab:
crontab -e
Добавляем задание:
* * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php
* в данном примере мы запускаем на исполнение скрипт /home/bitrix/www/bitrix/modules/main/tools/cron_events.php каждую минуту.
Проверим, что мы настроили наш сервер для отправки корректно. Переходим в административную консоль Битрикс24 – Инструменты – Командная PHP-строка.
Вводим код:
$headers = “From: [email protected]{$_SERVER[‘SERVER_NAME’]}rn” . “Reply-To: [email protected]{$_SERVER[‘SERVER_NAME’]}rn” . “X-Mailer: PHP/” . phpversion(); if(mail(“[email protected]”, “Письмо для проверки”, “Тестовое сообщение”, $headers) ) { echo “Сообщение отправлено!”; } else { echo “Ошибка! Проверьте настройки почтового сервера и его лог (/var/log/maillog)”; }
* где [email protected] — адрес почтового ящика, на который будет отправлено тестовое сообщение.
Нажимаем кнопку Выполнить и подтверждаем во всплывающем окне наши намерения запустить на исполнение скрипт. Мы должны получить ответ: «Сообщение отправлено!». В противном случае, изучаем логи.
Для подключения к ящику заходим в битрикс 24 под пользователем. Слева переходим в Почта:
Среди поставщиков услуг выбираем подходящий вариант или IMAP:
Заполняем поля для подключения (остальные галочки можно выставить по желанию):
* точные настройки необходимо уточнить у администратора почтового сервера. Также их можно посмотреть на странице инструкции соответствующего поставщика.
Отмечаем галочками папки для синхронизации:
Готово. Можно отправлять письма из битрикс.
Существуют различные онлайн сервисы, где мы можем проверить корректность настройки нашего сервера и DNS:
1. Анализ письма. Данные сервисы предлагают отправить письмо на определенный адрес, после будет выполнен онлайн анализ.
В качестве примера приведу два — mail-tester.com и spamtest.smtp.bz.
2. Наличие почтового сервера в черных списках. Позволяет узнать, не был ли добавлен наш сервер в черные списки. Если сервер туда попал, то необходимо найти специальную страницу для удаления из блока и создать заявку онлайн.
Пример сервисов — dnsbl.smtp.bz, 2ip.ru, dnsbl.info и syslab.ru.
3. Проверка репутации домена. Позволяет понять, правильно ли настроен наш домен.
Сервис — mxtools.
Также, для решения проблем на самом сервере необходимо использовать лог почты. Его можно смотреть командой:
tail -f /var/log/maillog
С его помощью можно найти ошибки и понять, почему не отправляются письма.
Также вас может заинтересовать:
1. Настройка почтового сервера для массовой рассылки сообщений.
2. Настройка почты GMAIL и Яндекс для подключения по IMAP или POP3.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies