Почта на CentOS 7 c BitrixVM через Postfix + TLS + DKIM

  Etc

Для начала работы достаточно иметь голую CentOS 7 с BitrixVM, установленной с помощью скрипта с офф сайта Bitrix.

Важно, что это работает и в случае отправки писем с CRM Bitrix 24.

Устанавливаем Postfix + TLS

yum install postfix

Создаем сертификат и ключ

mkdir -p /etc/ssl/postfix/
openssl req -new -x509 -nodes -out /etc/ssl/postfix/tls.pem -keyout /etc/ssl/postfix/tls.pem -days 3650

В /etc/postfix/main.cf добавим:

smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/postfix/tls.pem
smtpd_tls_cert_file = $smtpd_tls_key_file
smtpd_tls_CAfile = $smtpd_tls_key_file
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Включаем автозагрузку и запускаем postfix:

systemctl enable postfix
systemctl start postfix

Далее необходимо дать понять битриксу, как отправлять письма.

Настройка битрикс

Для этого запускаем их скрипт menu.sh

Главное меню скрипта menu.sh в bitrixVM

Выбираем

6. Manage sites in the pool

Меню 6. Manage sites in the pool в menu.sh BitrixVM

4. Change a site’s email settings

Настраиваем отпавку почты:

Выбираем сайт. По умолчанию будет default. Далее сами настройки:

  • Enter From email address (ex. bob@example.org):robot@domain.com
  • Enter server address or DNS (127.0.0.1): 127.0.0.1
  • Enter server port (25): 25
  • Do you want to use SMTP authentication on 127.0.0.1:25? (N|y)N
  • Do you want to enable TLS for 127.0.0.1:25 (n|Y):Y

Вместо robot@domain.com укажите почту с которой будут приходить письма.

Настройка почты в menu.sh через локальный сервер. BitrixVM

Устанавливаем и настраиваем OpenDKIM

yum install opendkim opendkim-tools

Приводим конфиг /etc/opendkim.conf к виду ниже.

AutoRestart Yes AutoRestartRate 10/1h Umask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost

Создаем файл /etc/opendkim/TrustedHosts доверенных узлов. Вместо domain.com свой домен.

127.0.0.1
::1
domain.com

Создаем /etc/default/opendkim и записываем в него:

SOCKET=inet:12301@localhost

В /etc/postfix/main.cf добавим:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

Создаем ключи домена

Далее везде domain.com меняем на свой домен.

mkdir -p /etc/opendkim/domain.com
cd /etc/opendkim/domain.com
opendkim-genkey —domain domain.com —selector crm —bits 1024
chown opendkim:opendkim *
chmod 400 *

Добавляем в /etc/opendkim/KeyTable

crm._domainkey.domain.com domain.com:crm:/etc/opendkim/domain.com/crm.private

Добавляем в /etc/opendkim/SigningTable

*@domain.com crm._domainkey.domain.com

Перезагрузим postfix и opendkim

service postfix restart
service opendkim restart

Редактирование зоны домена

Читаем что находится в /etc/opendkim/domain.com/crm.txt

crm._domainkey IN TXT ( «v=DKIM1; k=rsa; » «p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCrRRqFGHKj36jHycdXPPg3ZhGdq1kjmMywEirNgCaVmkptgqEuMa081BZ21frvI8jNLCBf20GGZWQeq3PsSN0TFhqtlry8RUkikjFUBgrq1Y1oSE1uiGdcEvVFi2fcpON3lipulGrmcOARxmfB1L3uhBV/WtJwgTssWvlI8SQxwIDAQAB» ) ; —— DKIM key crm for domain.com

Рекомендую создать отдельный файлик и привести это к нормальному виду. Без лишних кавычек и пробелов.

v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCrRRqFGHKj36jHycdXPPg3ZhGdq1kjmMywEirNgCaVmkptgqEuMa081BZ21frvI8jNLCBf20GGZWQeq3PsSN0TFhqtlry8RUkikjFUBgrq1Y1oSE1uiGdcEvVFi2fcpON3lipulGrmcOARxmfB1L3uhBV/WtJwgTssWvlI8SQxwIDAQAB

То что получили необходимо указать как TXT запись для crm._domainkey.domain.com

Проверяем

Ждем обновления зоны домена (примерно 15 минут) и отправляем письмо с сервера.

Проверяем лог /var/log/maillog . Если видим

Dec 23 12:30:45 Test opendkim[26143]: B2B665D04C: DKIM-Signature field added (s=crm, d=domain.com)

То все ок. Можно проверять наличие подписи в письме.