URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97843
[ Назад ]

Исходное сообщение
"Настройка EXIM для домена + поддомена"

Отправлено Rayled , 05-Апр-22 14:49 
Добрый день. Помогите, пожалуйста, настроить exim.
Имеется VDS-сервер с CentOS 7. На нём:
1. Домен domain.ru, IP-адрес IP1, значение PTR: domain.ru
На нём работает сайт с CMS, включая все PHP-скрипты отправки писем
Часть скриптов отправляет письма с ящиков вида *@domain.ru (регистрация, восстановление пароля и т.д.)
Часть отправляет письма с ящиков вида: *@subdomain.domain.ru (рассылка разных типов по пользователям)

2. Поддомен subdomain.domain.ru, IP-адрес IP2, значение PTR: subdomain.domain.ru
Пустой поддомен, имеется только стартовая страница HTML, создавался, чтобы от его имени проводить рассылку сайта, как рекомендуют почтовые сервисы яндекс, мэйл и т.д.

Оба домена имеют каждый свой DKIM, DMARC, SPF.

При отправке из CMS писем с ящиков вида *@domain.ru всё в порядке:
- IP = IP1
- HELO = domain.ru
- Message-ID: id@domain.ru
- From: *@domain.ru
- и т.д.

При отправке из CMS писем с ящиков вида *@subdomain.domain.ru проблемы:
- IP = IP1, а нужно IP2
- HELO = domain.ru, а нужно subdomain.domain.ru
- Message-ID: id@domain.ru а нужно id@subdomain.domain.ru
- From: *@subdomain.domain.ru, тут всё в порядке

Хотелось бы, чтобы при отправке писем с *@subdomain.domain.ru в заголовках были IP2, HELO=subdomain.domain.ru, Message-ID: id@subdomain.domain.ru

Я создал файл /etc/exim/interfaces, куда вписал:
domain.ru: IP1
subdomain.domain.ru: IP2

А в /etc/exim/exim.conf в блоке remote_smtp: указал:

helo_data = ${lookup dnsdb{ptr=$sending_ip_address}{$value}{$primary_hostname}}
interface = ${if exists {/etc/exim/interfaces}{${lookup{$sender_address_domain}lsearch{/etc/exim/interfaces}{$value}{}}}{}}

Но это не помогло. Если правильно понимаю, то так как отправка идёт из CMS с сайта domain.ru, то exim'ом берётся IP1 и $sender_address_domain = domain.ru, хотя в письме отправителем и указывается *@subdomain.domain.ru

Я пробовал указывать так
helo_data = ${domain}
interface = ${if exists {/etc/exim/interfaces}{${lookup{${domain}}lsearch{/etc/exim/interfaces}{$value}{}}}{}}
и так
helo_data = $original_domain
interface = ${if exists {/etc/exim/interfaces}{${lookup{$original_domain}lsearch{/etc/exim/interfaces}{$value}{}}}{}}

Но это не сработало, и в нужных местах стал прописываться домен почтового сервиса получателя например: Message-ID: id@mail.ru, HELO=mail.ru, а IP1 остался неизменным. Я так понимаю это потому, что те параметры относятся к локальным.

Единственный вариант, который сработал для поддомена, это когда я вручную добавил его имя:
helo_data = subdomain.$sender_address_domain
interface = ${if exists {/etc/exim/interfaces}{${lookup{subdomain.$sender_address_domain}lsearch{/etc/exim/interfaces}{$value}{}}}{}}

Но конечно это не то, что нужно...


Содержание

Сообщения в этом обсуждении
"Настройка EXIM для домена + поддомена"
Отправлено izyk , 11-Апр-22 22:13 
> А в /etc/exim/exim.conf в блоке remote_smtp:

remote_smtp1:
...
interface = IP1
...

remote_smtp2:
...
interface = IP2
...