Pull to refresh

Exim: как скрыть связь одного сервера и несколкьких доменов

Reading time2 min
Views9.3K
Заказчики попросили меня добавить на их почтовый сервер Exim еще доменов, но при условии, чтобы не была обнаружена связь их основного домена и каждого следующего доменов.

Естественно обратную запись в ДНС не изменить для каждого домена персонально. Я нашел единственный путь потребовать от провайдера дополнительную сеточку адресов. (Ай-яй-яй! Как плохо! Знаю, в такое тяжелое время такое разгильдяйство!). Но провайдер, как оказалось, с легкостью добавил еще сеть, без проблем.

Адреса получены, можно приступать.


Что нужно? Создать PTR-записи для каждого IP-адреса. Это понятно. Сеть не у меня обслуживается, поэтому провайдеру отправил запрос. Естественно, пришлось для каждой пары ip-domain создавать непохожий домен чтобы при поисках не была заметна тенденция или почерк одного админа.

Создал пары PTR-записей:
10.2.3.4 mail.domain1.ru
10.2.3.5 mx.domain2.ru


В Exim есть параметр smtp_active_hostname, который во многих местах конфига используется. В частности в заголовках Received:.
Для определения этого параметра в соответствии с парой ip-domain я создал такую конструкцию в конфиге Exim:
...
smtp_active_hostname = ${lookup{$received_ip_address}\
nwildlsearch{EXIM_DIR/hostname_incoming_ip}{$value}{$primary_hostname}}
...


Файл hostname_incoming_ip выглядит так:
# cat hostname_incoming_ip
10.2.3.4 mail.domain1.ru
10.2.3.5 mx.domain2.ru


Таким образом значение smtp_active_hostname в Exim становилось mail.domain1.ru, если значение переменной received_ip_address было 10.2.3.4, если адрес не упоминался в файле, то значение переменной smtp_active_hostname становилось равным primary_hostname.

Для отправки исходящего письма нужно указывать корректный src-ip, который бы в ДНС был связан бы со своим доменом, а также указывать подходящий HELO(EHLO).

Сделал я это все в транспорте remote_smtp так:
remote_smtp:
driver = smtp
helo_data = ${lookup{$sender_address_domain}\
nwildlsearch{EXIM_DIR/helo_data}{$value}{$primary_hostname}}
interface = ${lookup{$sender_address_domain}\
nwildlsearch{EXIM_DIR/outgoing_ip}{$value}{EXIM_OUTGOING_IP}}


В ДНС внес соответствующие MX записи для каждого нового домена.

Получил следующее: входящая почта приходит по MX-ам как положено. Удаленный админ по логам видит на какой MX доставилось письмо. Для каждого из моих доменов — разный. Отлично! Исходящая с локальной сети почта уходит, используя свой внешний IP-адрес и указывая подходящее значение HELO(EHLO) и с подходящими значениями для домена в заголовке Received:.

Я считаю, что хорошо бы доделать следующее: выдавать на простое подключение к 25 порту каждого из моих IP-адресов различную инфу для smtp_banner и не принимать почту для домена, который не привязан к адресу, на который пришел коннект. Тогда бы был полный ажур! Ну пока руки не доходят.

Вот так гибко и удобно можно настраивать Exim.
Tags:
Hubs:
+4
Comments1

Articles