Настройка почтового сервера в Bitrix

Инструкций по настройке почтового сервера на Bitrix не так много – наверное потому, что всё не так уж и сложно. Тем не менее, в моей практике были некоторые непонимания на начальных этапах, поэтому я расскажу, как настроить почтовый клиент на msmtp и postfix для выполнения различных задач.

msmtp

Имеется виртуальная машина с битрикс окружением версии 7 и выше. Для подключения почтового сервера msmtp необходимо:

  • Импортировать сертификат в хранилище системы, на CentOS 7 так:
    Включаем динамическое обновление сертификатов
    #update-ca-trust enable
    Потом копируем нужный сертификат в доверенные
    #cp mycertfile.pem /etc/pki/ca-trust/source/anchors/
    Обновляем доверенные сертификаты
    #update-ca-trust extract

Запустить скрипт /root/menu.sh

Перейти в главном меню в 6. Manage sites in the pool > 4. Change e-mail settings on site и ввести имя хоста, для которого нужно настроить отправку почты:

Далее ввести необходимые данные для почтового сервера

  • from address – адрес отправителя, от которого будет осуществляться пересылка писем.
  • server address or DNS – ip- или dns-адрес почтового сервера. Если нажать Enter, то будет использован адрес по умолчанию (127.0.0.1)
  • server port – порт сервера. Порт зависит от типа соединения, 25 – для обычного и 465 – для зашифрованного (с использованием SSL). Если нажать Enter, то будет использован порт по умолчанию (25).
  • Если необходима SMTP-авторизация, то в строке SMTP authentication наберите y и введите логин и пароль для доступа к SMTP-серверу, в противном случае – n.
  • Если выбрана опция SMTP-авторизации, то понадобится ввести тип авторизации type of authentication method: auto, plain, scrum-sha-1, scrum-md5, gssapi, external, digest-md5, login, ntlm.

Если необходим TLS-протокол защищенной передачи данных, то в строке TLS enabled наберите y, в противном случае – n.

Теперь необходимо дождаться, пока задача по настройке почтового сервера будет закончена.
Убедиться в правильности введенных данных настройки почтового сервера можно снова в 6. Manage sites in the pool > 4. Change e-mail settings on site:

В случае ошибок смотреть в лог, указанный в файле /home/bitrix/.msmtp (его же меняет скрипт битрикса)
Если пароль с решеткой (символ комментария), то указывать так: ‘пароль’

Чтобы проверить авторизацию, запустить: telnet <server> <port>, после установки соединения ввести ehlo, выхлоп команды будет следующий:

[root@]# telnet 10.89.65.2 25
Trying 10.89.65.20...
Connected to 10.89.65.20.
Escape character is '^]'.
220 NG-EdgeIS-06.mos.ru Microsoft ESMTP MAIL Service ready at Mon, 20 Aug 2018 13:42:43 +0300
ehlo 1
250-NG-EdgeIS-06.mos.ru Hello [10.126.253.24]
250-SIZE 10485760
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING

Обращать внимание на поле, где указана авторизация, в примере выше это 250-AUTH LOGIN

 

Postfix

Данный почтовый сервер является более сложным и функциональным. Его использование обусловлено тем, что мне необходимо было настроить лимит писем – не более 200 штук в минуту. msmtp так не умеет. Для начала нужно установить постфикс и доп. пакеты:

yum install cyrus-sasl-plain postfix

Дописать в /etc/postfix/main.cf:

anvil_rate_time_unit = 60 # ограничение на 1 мин (60 сек в данном случае)
smtpd_client_message_rate_limit = 200 # 200 писем в минуту
smtp_tls_security_level = may # использовать TLS или нет при возможности. При работе почты 
из терминала без этого не работало.smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_sasl_passwd  # файл с данными для авторизации к пересылающему серверу
smtp_sasl_security_options = noanonymous # default
smtp_sasl_type = cyrus  # default
smtp_sasl_mechanism_filter = ntlm, login  # тип авторизации. Зависит от ответа сервера, если послать 
ему ehlo через telnet. В данном случае  это MS Exchange , там юзается ntlm + login для корректной авторизации.
transport_maps = hash:/etc/postfix/transport # файл для пересылки почты на нужный сервер
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay   # можно использовать как в отдельном файле, 
так и прям в конфиге (строчка ниже)
relayhost = [owa.mos.ru]:465 # куда пересылаем и на какой порт 
(если порт указан, то точно также указать в файле авторизации)
#sender_canonical_maps = hash:/etc/postfix/canonical  # не пригодился
smtp_generic_maps = hash:/etc/postfix/generic # подстановка одного ящика на другой
debug_peer_level = 10 # уровень отладки, полезно ставить максимальный для понимания
debug_peer_list = owa.mos.ru # по какому хосту будет инфа по дебагу , у меня сработало только 1 директива, 
если указать несколько, то в дебаг попадает первая или последняя Знак вопроса (?). Лучше писать один хост.
# Информация по дебагу в /var/log/maillog

Содержимое /etc/postfix/smtp_sasl_passwd :
[mail.server.ru]:465 login:pass

Содержимое /etc/postfix/transport:
* smtp:[mail.server.ru]:465    # все письма слать на relay mail.server.ru по 465 порту

Содержимое /etc/postfix/generic
root@your.site.ru login@server.ru   # подменяем root на то, от имени кого будем слать письма

После изменения доп файлов с вложениями всегда нужно выполнять команды, после чего в /etc/postfix появятся файлы с такими же наименованиями, но с расширением .db:
postmap smtp_sasl_passwd
postmap transport
postmap generic

 

На этом настройка самого Postfix, как пересылающего сервера, закончена. Теперь нужно научить битрикс использовать его для пересылки сообщений. Для этого по пути /etc/php.d/bitrixenv.ini нужно указать директиву:
sendmail_path = sendmail -t -i -f login@server.ru

После мягко перезагрузить httpd:
service httpd reload

По сути всё готово, осталось отправлять почту и выискать в километрах логов ошибки, в случае если что-то не работает.

Для смены почты в админке это нужно сделать в двух местах:

  • В настройках главного модуля
  • В настройках пользователя (админа)

P.S. Также для тестирования отправки почты из консоли сервера, можно использовать sendmail. Для этого надо создать файлик с любым именем и внести туда информацию:

To: your@milo.ru
Subject: sendmail test three
From: login@server.ru
body of mail

И после командой sendmail -vt < 1.txt можно отправлять письма себе на почту для тестирования, параллельно смотря tail -f /var/log/maillog , что крайне удобно.

 

Ваш комментарий будет первым

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *