По умолчанию в BitrixEnv и BitrixVM используется msmtp для отправки почтовых сообщений.
Преимуществом данного решения является простота его настройки. К недостатком можно отнести медленную отправку почтовых сообщений через внешние сервисы (Google, Yandex).
В большинстве случаев это не приводит к каким либо проблемам, так как почтовые события отрабатывают из под крона, но в ряде случаев может создать проблему. Например если почтовые события исполняются на хите (задан параметр немедленная доставка), или разработчик напрямую использует функцию mail().
Рассмотрим настройку отправки почтовых сообщений postfix-ом через Яндекс:
1. устанавливаем дополнительные пакеты
yum install cyrus-sasl-plain |
2. добавляем в файл /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/mailpasswd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentification = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sender_canonical_maps = hash:/etc/postfix/canonical
smtp_generic_maps = hash:/etc/postfix/generic |
3. в /etc/postfix/mailpasswd указываем логин и пароль
[smtp.yandex.ru] www@some.ru:password |
4. в /etc/postfix/sender_relay указываем привязку доменов и конкретных отправителей к внешним службам
@some.ru [smtp.yandex.ru]
www@some.ru [smtp.yandex.ru] |
5. в /etc/postfix/canonical добавляем для домена указание через какой аккаунт отправлять
6. в /etc/postfix/generic добавляем отправку почты админу
root@localhost admin@mail.xx
bitrix@localhost admin@mail.xx |
и выполняем команду postmap для /etc/postfix/generic, /etc/postfix/canonical, /etc/postfix/sender_relay, /etc/postfix/mailpasswd
7. изменяем настройки в php.ini
sendmail_path = sendmail -t -i -fwww@some.ru ;bitrix-env |
8. Запускаем все необходимые службы
chkconfig saslauthd on
service saslauthd restart
chkconfig postfix on
service postfix restart
service zend-server restart |
Скорость отправки сообщений php скриптами значительно возврастет, а всю работу по доставки писем до внешнего сервера возьмет на себя postfix. При этом, нам не надо настраивать полноценный почтовый сервер.