Настраивать буду на примере сайта naturbine.ru, домен делегирован на pdd.yandex.ru. На арендованном сервере у одной известной компании, развернут контейнер OpenVZ с Centos 6.5 86_64 + BitrixEnv 5 и демо интернет магазином.
1. В первую очередь настроим доменные записи:
Настроим обычные A записи в зоне домена, на примере pdd.yandex.ru в домене naturbine.ru:
srv01.naturbine.ru - имя для хоста (сервера с BitrixEnv) naturbine.ru www.naturbine.ru - соответственно записи для сайта.
Настроим SPF запись. При делегировании домена на yandex.ru, оный создает такую запись:
тем самым мы указали, что всю почту отправляемую с хоста 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)
Через некоторое время можно проверить, работает ли ваша ptr-запись, из windows это сделать очень просто - командой ping -a ip, если все хорошо ip разрешится в доменное имя:
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
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 должен быть примерно таким:
3. Создадим цифровую подпись DKIM и настроим Exim на ее использование.
Теперь нужно в зоне домена создать 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-----, важно при этом не скопировать пробелы и переносы строки, ключ должен быть в одну строку. Должно получится примерно так:
Укажем exim, что у нас теперь есть подпись DKIM и ей необходимо подписывать все сообщения:
После обновления доменных записей (если ваша зона на яндексе, обычно это несколько минут) можно еще раз себе отослать проверочное письмо, вы должны увидеть, что письмо имеет цифровую подпись:
Пример заголовков письма mail.google.com с SPF и DKIM:
Васильев Кирилл, Здравствуйте, вы можете не указывать конструкцию выбора ключа по имени домена в конфигурации exim, а сделать чтобы ключ использовался для всех отсылаемых писем вне зависимости от указанного домена.
Шамаев Олег, Приветствую! С ключом DKIM я именно так и поступил - одним ключом подписываю почту уходящую со всех доменов на сервере. Кроме DKIM и SPF есть еще один СПАМ фильтр, который применяется на серверах Gmail, mail.nic.ru наверное еще на каких то, но эти два для меня самые приоритетные.
Проверяются соответствия заголовков письма: Return-path: envelope-from: From: Адреса в этих трёх заголовках должны совпадать.
При отправке письма с сайта в From: попадает адрес отправителя - например: shop@moydomen.ru или opt@moydomen.ru, любой адрес который указывается в почтовых шаблонах. А в заголовки envelope-from: и Return-path: попадает адрес который был указан при настройке VM-Bitrix - например: bitrix@moydomen.ru и вся почта отправленная с сайта на Gmail из за этого попадает в СПАМ.
Хотел посоветоваться с Вами, занимались ли Вы этим вопросом?
IP проверял, с ним все порядке, но как только отправляю письмо с адреса bitrix@moydomen.ru и все заголовки совпадают письмо сразу же отображается во входящих. Из чего я собственно и сделал такое заключение.
Шамаев Олег, Проблема в том, что с других адресов в этом же домене заголовки не совпадают и почта падает в СПАМ. Я понял, Вы не сталкивались с этим. Попробую разобраться. В любом случае, за статью спасибо! Очень полезная.
Здравствуйте. Большое спасибо за статью. Настроил exim на отправку почты с нашего домена, всё хорошо, письма с доменной почты проходят все проверки. Но у одного сотрудника подключена своя почта yandex, его почта не всегда доходит до получателя. Подскажите, пожалуйста, что нужно добавить в конфигурацию exim, чтобы почта конкретно этого сотрудника отправлялась через smtp яндекса? Так, чтобы не сбить настройки для основного домена.
Что делать, если два разных домена на одной BitrixVM (условно site1.ru, site2.net)? В каком направлении копать, чтобы каждый сайт смог правильно отправлять почту c DKIM/SPF при использовании многосайтовой конфигурации Bitrix?
Нужно создать для каждого домена свой ключ, ровно по инструкции, тогда будет работать конструкция в конфиге exim - по адресу отправителя определять домен, искать для него файл ключа в каталоге и подписывать письмо если ключ найден. И конечно в зонах доменов опубликовать публичные части ключей для каждого из доменов, но с одинаковым селектором: TXT запись mail_srv01._domainkey "v=DKIM1; k=rsa; p=[публичный ключ домена]"
По SPF - самый простой способ в зонах каждого домена добавить разрешение получать почту с ip сервера, примерно так "v=spf1 ip4:10.10.10.10 include:_spf.yandex.ru ~all"
В файл конфигурации exim нужно добавлять второй домен?
Колодяжин Александр написал(а): В файл конфигурации exim нужно добавлять второй домен?
Наоборот убрать упоминание домена, это будет несерьезной ошибкой в заголовке писем, но зато будут корректно работать DKIM/SPF. Работа с привольным количеством доменов в exim конечно возможна, но это не описать в рамках комментариев.
Наоборот убрать упоминание домена, это будет несерьезной ошибкой в заголовке писем, но зато будут корректно работать DKIM/SPF. Работа с привольным количеством доменов в exim конечно возможна, но это не описать в рамках комментариев
в exim.cof оставил только # primary_hostname = srv01.****.ru, сервер первого домена. со второго домена почта все равно не доходит
2020-01-08 18:01:18 exim 4.92.3 daemon started: pid=9197, -q1h, listening for SMTP on port 25 (IPv6 and IPv4) port 587 (IPv6 and IPv4) and for SMTPS on port 465 (IPv6 and IPv4) 2020-01-08 18:01:18 Start queue run: pid=9201 2020-01-08 18:01:18 End queue run: pid=9201
Очевидно логи нужно смотреть после попыток отправить почту, если это это действительно так, то сайт не обращался к системному MTA(exim) для отправки почты.
Добрый день! Скажите пожалуйста, у нас почта info@командажкх.рф Настроили все по инструкции, в логах ругается...:
Aug 04 15:59:01 host=smtp.yandex.ru tls=on auth=on user=info@командажкх.рф from=info@командажкх.рф recipients=Potapchik1@yandex.ru,info@gkhgorod.ru smtpstatus=501 smtpmsg='501 5.1.7 Bad address mailbox syntax.' errormsg='envelope from address info@командажкх.рф not accepted by the server' exitcode=EX_DATAERR
Как правильно настроить почту на кириллическом домене?
exim 4.94 перестал подписывать по этой инструкции Tainted filename '/etc/exim/dkim/domen.ru.key' unable to open file for reading: /etc/exim/dkim//domen.ru.key права менял - не помогает
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».