Стандартно, BitrixVM для отправки почтовых сообщений использует smtp. Данный механизм хороший, стабильный и все с ним отлично за одним исключением - при настройке отправки очень часто (практически всегда) проверка сайта выдает предупреждение - слишком долго уходит письмо аж 1-2 секунды. Чтобы избавиться от этого красного предупреждения в проверке сайта, можно воспользоваться отправкой почты через postfix.
Настройка отправки писем через postfix
Для настройки вам необходимы базовые знания о работе с linux и терминалом!!!
Итак, заходим на сервер, выходим из меню веб-окружения и переходим к настройке. Для начала нужно установить сам postfix и дополнительные пакеты:
yum install postfix yum install cyrus-sasl-plain
Дальше - добавляем в конец файла /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_authentication = yes sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay sender_canonical_maps = hash:/etc/postfix/canonical smtp_generic_maps = hash:/etc/postfix/generic smtp_use_tls = yes
Дальше в файле /etc/postfix/mailpasswd указываем логин и пароль для авторизации на сервере отправки почты:
[smtp.yandex.ru] mail@your.domain:password
В файле /etc/postfix/sender_relay указываем привязку доменов и конкретных отправителей к внешним службам:
@your.domain [smtp.yandex.ru] mail@your.domain [smtp.yandex.ru]:587
В /etc/postfix/canonical добавляем для домена указание через какой аккаунт отправлять почту:
@your.domain mail@your.domain
В /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:
postmap /etc/postfix/generic postmap /etc/postfix/canonical postmap /etc/postfix/sender_relay postmap /etc/postfix/mailpasswd
Изменяем настройки в /etc/php.d/bitrixenv.ini:
sendmail_path = sendmail -t -i -f mail@your.domain ;bitrix-env
Запускаем все необходимые службы:
chkconfig saslauthd on service saslauthd restart chkconfig postfix on service postfix restart
Скорость отправки сообщений php-скриптами значительно возрастет, а всю работу по доставке писем до внешнего сервера возьмет на себя postfix. При этом не нужно настраивать полноценный почтовый сервер.
На этом, работа с отправкой почты через postfix настроена и можем радоваться!!!
Подстановка обратного адреса в письма
Есть еще один нюанс - если у вас много сайтов в веб-окружении, или много разных ящиков с которых уходят письма - нужно сделать небольшую хитрость.
Вносим правки в файл: /etc/postfix/main.cf:/p>
# In /etc/postfix/main.cf, add this if sender_canonical_maps isn't already defined: sender_canonical_maps = regexp:/etc/postfix/sender_canonical
А в указанный файл /etc/postfix/sender_canonical прописываем:
# please note - this also applies to Reply-to header if the email already has one: /@your.domain/ mail@your.domain
Такая конструкция подменит все адреса отправителя на валидное значение, для которого сервер знает, как отправлять почту и по каким каналам.
Но такая запись несет с собой одну маленькую неприятность - пользователь не сможет ответить на письмо по адресу, от которого письмо отправлялось, т.к. отправителем будет валидный ящик, а не ящик, который вы прописали при отправке письма.
Чтобы побороть данную ситуацию, нужно в письмах прописать дополнительно адрес обратной связи. Для этого, в /etc/postfix/main.cf добавляем строки:
header_checks = regexp:/etc/postfix/header_checks local_header_rewrite_clients = static:all
А в указанный файл /etc/postfix/header_checks прописываем:
/^From: (.*@your.domain)/ PREPEND Reply-to: $1
Т.к. Postfix применяет header_checks до sender_canonical_maps, то во время добавления заголовка Reply-to поле From еще не заменено!
Все! теперь вы можете слать с сайта почту от имемни любого ящика в вашем домене - это бывает очень полезно, когда информация, касающаяся продаж идет с ящика sale, информация, касающаяся заказов идет с ящика order, информация с различными информационными материалами - от ящика info, а информация для разработчиков и администраторов - от имени ящиков dev и admin.
P.S. Выражаю огромную благодарность ресурсу "thinlight.org" за столь подробное описание механизма подмены отправителя:)
Update 2018-12-03.
Если система выдала вам сообщение об отсутствии пакет saslauthd - его нужно доустановить. Проверяем в пакетах, кто отвечает за данную службу:
yum provides "*/saslauthd.service"
И видим пакет:
cyrus-sasl-2.1.26-23.el7.i686 : The Cyrus SASL library Источник: base Совпадения с: Имя файла : /usr/lib/systemd/system/saslauthd.service
Данный пакет нужно доустановить:
yum install cyrus-sasl-2.1.26-23.el7
Разработка сайта
Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...
Сопровождение сайта
Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение
Работы по сайту
Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.