Отправка почты со своего сервера: пошаговая настройка Postfix, SPF, DKIM и TLS для Битрикса
При отправке почты через сторонние smtp сереры нужно подстраиваться под их ограничения. Например для Яндекса это ограничение 3000-5000 писем в сутки.
Здесь я приведу пример необходимых настроек для отправки почты со своего сервера без ограничений. Письма будут шифрованные и будут проходить все проверки и попадать в папку входящие, вместо спама.
Для приема писем будем считать что используется сервис от Яндекса - Почта для домена или сейчас уже Яндекс 360
Установку производим на том же сервере где расположен сайт на Битркисе.
Домен для пример - domain.ru
Почтовые адреса - info@domen.ru, order@domen.ru и тд
Адрес тестовой почты - name@gmail.com
Установка и настройка Postfix
Первым делом устанавливаем postfix, который будет отправлять исходящую почту.yum install mailx
yum install postfix
systemctl enable postfix
systemctl start postfix
cd /etc/postfix/
cp main.cf main.cf.ori
inet_interfaces = loopback-only
mydestination = localhost.$mydomain, localhost, $myhostname
# если нужно складывать письма в локлаьныя ящик для o**@domain.ru
#mydestination = domain.ru localhost.$mydomain, localhost, $myhostname
alternatives --config mtaОтправляем тестовое письмо
echo "Test mail" | mail -v -s "Testing mail" -S smtp="localhost:25" -S from="info@domain.ru" -S return-path="info@domain.ru" name@gmail.comПосмотреть что произошло можно в логе
tail -n 40 /var/log/maillogПоэтому перейдем к настройке DKIM и SPF
Настройка SPF
Для настройки SPF записи, необходимо чтобы в DNS записях была TXT запись примрено следующая для хоста - @.
v=spf1 a ip4:11.180.180.120 include:_spf.yandex.net ~allIP адрес - 11.180.180.120 приведен для примера, этот адрес должен быть адресом сервера на котором производим настройку. Его указывать не обязательно, так как есть в строке символ - "a" который говорит о том что нужно взять ip адрес из записи типа A.
include:_spf.yandex.net - это нужно чтобы работала почта от яндекса, чтоб из почтового ящика также можно было отправлять письма по старому.
Так это выглядит на странице управления DNS домена в яндексе
Настройка DKIM
На этом шаге также будем вносить запись в DNS, но прежде нужно подготовить данные.
Устанавливаем, включаем, запускаем
yum install opendkim opendkim-toolscd /etc/opendkim/keys/
opendkim-genkey -d domain.ru -s server
mv server.private server.domain.ru.private
mv server.txt server.domain.ru.txt
chown opendkim:opendkim server.*
Содержимое файла server.domain.ru.txt нужно указать в DNS домена
Так это выглядит на странице управления DNS домена в яндексе
Проверить подпись можно будет через некоторое время например здесь - https://dkimcore.org/c/keycheck указав селектор из примера - server и домен - domain.ru ( в вашем случае домен будет другой)
Теперь заполняем соответствующие таблицы
cd /etc/opendkim/server._domainkey.domain.ru
domain.ru:server:/etc/opendkim/keys/server.domain.ru.privateВ файл SigningTable добавляем адреса с которых будет отправлять, укажем через * чтобы правила работали для любых адресов исходящих писем с конкретного домена.
# WILDCARD EXAMPLE
*@domain.ru server._domainkey.domain.ru
# NON-WILDCARD EXAMPLE
domain.ru server._domainkey.domain.ru
* server._domainkey.domain.ru
В файл TrustedHosts добавляем домен в конец файла
*.domain.ru
domain.ru
Теперь вносим изменения в конфиг opendkim - /etc/opendkim.conf и приводим значения параметров к следующему виду
Mode s
Selector server
KeyFile /etc/opendkim/keys/server.domain.ru.private
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
InternalHosts refile:/etc/opendkim/TrustedHosts
Socket inet:8891@localhost
systemctl restart opendkim
systemctl enable opendkim
# dkim
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
#!/bin/bash
# Ваш Bash скрипт
systemctl restart postfix
TLS. Шифрование исходящих писем Postfix
Чтобы исходящие письма шифровались и в почтовиках не отображались лишние надписи что письма не зашифрованы и не безопасны, сделаем несколько действий.
Для работы шифрования возьмем действующие сертификаты на домен, которые были автоматически получены с помощью Let's Encrypt через меню Bitrix Env
Для этого укажем пути до файлов приватного ключа и цепочки сертификатов. Пути не меняются при обновлении сертификатов и лежат по стандартному пути - /home/bitrix/dehydrated/certs/domain.ru/
Добавляем в конец основного файла настроек Postfix - /etc/postfix/main.cf соответствующие настройки
smtpd_tls_key_file = /home/bitrix/dehydrated/certs/domain.ru/privkey.pem
smtpd_tls_cert_file = /home/bitrix/dehydrated/certs/domain.ru/fullchain.pem
smtp_use_tls = yes
Применяем настройки
systemctl restart postfixPTR запись
Также необходимо сделать в панели управления хостингом или виртуальным серверов некоторые настройки, чтобы IP адрес сервера указывал на домен domain.ru
Как это сделать смотрите на страницах помощи вашего хостинг провайдера.
Настройка отправки почты для Битрикс
Настройки для отправки email писем в битриксе хранятся в файле /home/bitrix/.msmtprc
Его можно изменить через меню Bitrix Env либо вручную приведя к следующему виду. В поле From укажите адрес отправителя по умолчанию, например: info@domain.ru
Тестовая отправка email
После добавления записей в DNS нужно подождать несколько часов, лучше сутки, чтобы сделанные изменения стали учитываться.
После этого можно сделать тестовую отправку письма например из терминала
echo "Test mail" | mail -v -s "Testing mail" -S smtp="localhost:25" -S from="info@domain.ru" -S return-path="info@domain.ru" name@gmail.comТакже можно сделать тестовую отправку из административного раздела битркиса, выполнив PHP код на странице /bitrix/admin/php_command_line.php?lang=ru
var_dump(mail('name@gmail.com', 'Тема', 'Сообщение'));Проверка DKIM
Проверить устанавливается ли подпись можно не выходя из консоли, для этого выполним тестовую отправку письма
echo "Test text" | mail -s "Test title" name@gmail.com
tail /var/mail/root -n 50










