+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Как настроить BitrixEnv/BitrixVM отсылать почту напрямую без авторизации на промежуточных почтовых серверах

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Как настроить BitrixEnv/BitrixVM(6 и 7) отсылать почту напрямую без авторизации на промежуточных почтовых серверах

Настраивать буду на примере сайта naturbine.ru, домен делегирован на pdd.yandex.ru. На арендованном сервере у одной известной компании, развернут контейнер OpenVZ с Centos 6.5 86_64 + BitrixEnv 5 и демо интернет магазином.    

1. В первую очередь настроим доменные записи:

Настроим обычные A записи в зоне домена, на примере pdd.yandex.ru в домене naturbine.ru:

A_zapisi.png
srv01.naturbine.ru - имя для хоста (сервера с BitrixEnv)
naturbine.ru    
www.naturbine.ru - соответственно записи для сайта.

Настроим SPF запись. При делегировании домена на yandex.ru, оный создает такую запись:
 spf1.png

Изменим ее следующим образом:

v=spf1 a:srv01.naturbine.ru include:_spf.yandex.ru ~all

тем самым мы указали, что всю почту отправляемую с хоста srv01.naturbine.ru можно принимать, а также с серверов указных в SPF записях для хостов yandex.ru, и помечать как спам почту отправляемую со всех других хостов(~all), любопытствующим сюда http://geektimes.ru/post/63768/  

Далее необходимо настроить PTR-запись в обратной(reverse) зоне вашего хостера, для разрешения ip-адреса в доменное имя, обычно это доступно в панели управления хостингом. Если этого не сделать, вся почта отправляемая с вашего сервера для спам фильтров будет выглядеть как минимум подозрительно, а некоторые вообще откажутся ее принять. PTR- запись настроем на имя нашего сервера srv01.naturbine.ru (имя хоста конечно же должно быть заданно в настройках ОС и совпадать с доменным, задается либо через меню BitrxEnv либо непосредственно в файле /etc/sysconfig/network, в директиве HOSTNAME=srv01.naturbine.ru)

revers.png

Через некоторое время можно проверить, работает ли ваша ptr-запись, из windows это сделать очень просто - командой ping -a ip, если все хорошо ip разрешится в доменное имя:

ping.png


2. Настройка MTA(Mail Transfer Agent) Exim.

Exim, поскольку в сем случае это пожалуй самый простой вариант - он нативно поддерживает DKIM. Не выяснял подробности, почему и от каких условий зависит какой именно mta будут по умолчанию в Centos 6, но могут быть sendmail, postfix и exim.

Проверяем, какой mta на вашем сервере:
[root@srv01 /]# alternatives --config mta
There are 2 programs which provide 'mta'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 
т.е. если текущий mta не sendmail.exim, установим его:
yum install exim
Переназначим mta по умолчанию на exim, т.е. выберем п.2:
[root@srv01 /]# alternatives --config mta
There are 2 programs which provide 'mta'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.postfix
   2           /usr/sbin/sendmail.exim

Enter to keep the current selection[+], or type selection number: 2
Сделаем копию конфигурационного файла:
[root@srv01 ~]# cp /etc/exim/exim.conf /etc/exim/exim.conf.def
Правим конфигурацию:
[root@srv01 ~]# vi /etc/exim/exim.conf
Ищем и меняем значения у следующих директив:

[insert]

primary_hostname = srv01.naturbine.ru     -  задаем имя которое сервер будет отдавать в HELO

qualify_domain = naturbine.ru      - задаем имя домена, которое будет добавляться к локальным адресам, например root -> root@naturbine.ru

[:wq]

Укажем php через какой mta отправлять почту:
vi /etc/php.d/z_bx_custom_settings.ini
[insert]

sendmail_path = /usr/sbin/sendmail -t -i

[:wq]

Перезапустим апач:
service httpd restart
Теперь можно отослать себе письмо из админки сайта и посмотреть на его заголовки. Если доменные записи уже обновились и вы все правильно настроили, то заголовок письма отосланного сайтом на yandex.ru должен быть примерно таким:
spf_pass.png

3. Создадим цифровую подпись DKIM и настроим Exim на ее использование.

Создадим закрытый ключ для подписи:
[root@srv01 ~]# mkdir /etc/exim/dkim
[root@srv01 ~]# cd /etc/exim/dkim
[root@srv01 dkim]# openssl genrsa -out naturbine.ru.key 1024
Создаем публичный ключ и меняем права на файл закрытого ключа:
[root@srv01 dkim]# openssl rsa -in naturbine.ru.key -pubout > naturbine.ru.pub
[root@srv01 dkim]# chown exim:exim naturbine.ru.key
[root@srv01 dkim]# chmod 640 naturbine.ru.key
Теперь нужно в зоне домена создать TXT запись mail_srv01._domainkey "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCupYdqHdV7YcgA0h9xPOXCqxX04AIslGLTD2Iikc/h0PxmXZhlA33UZzsL+X9s6utjPF4mHn3N4AROATzs10szDJwD
UXF3e4BfvQRMORh1lBPitCMNcdCh0UbDhSyz2gz5OakhyI8YIRAWwlXyMzpQtZwir8cYyyub69gO+BtBBQIDAQAB"

после "p=" необходимо вставить содержимое файла /etc/exim/dkim/naturbine.ru.pub между -----BEGIN PUBLIC KEY----- и -----END PUBLIC KEY-----, важно при этом не скопировать пробелы и переносы строки, ключ должен быть в одну строку. Должно получится примерно так:

dkim.png

Укажем exim, что у нас теперь есть подпись DKIM и ей необходимо подписывать все сообщения:
 [root@srv01 ~]# vi /etc/exim/exim.conf
Ищем в нем
remote_smtp:
  driver = smtp
и заменяем на:
[insert]
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim/dkim/DKIM_DOMAIN.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_FILE}{0}}
DKIM_CANON = simple

remote_smtp:

driver = smtp
dkim_domain = DKIM_DOMAIN
dkim_selector = mail_srv01
dkim_private_key = DKIM_KEY_FILE
[:wq]

Рестартуем exim
[root@srv01 dkim]# service exim restart
После обновления доменных записей (если ваша зона на яндексе, обычно это несколько минут) можно еще раз себе отослать проверочное письмо, вы должны увидеть, что письмо имеет цифровую подпись:
pismo.png

Пример заголовков письма mail.google.com с SPF и DKIM:

google.png






 

 

Источник: http://dev.1c-bitrix.ru/community/webdev/user/53386/blog/11674/

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...