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

Заказчики попросили меня добавить на их почтовый сервер 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.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 1

    0
    Наткнулся на статью при поиске похожего решения. Отмечу, что иногда еще используют «smtp_banner»

    В таком случае, конфигруация по части hostname может выглядить так:

    primary_hostname = host.example.com
    
    smtp_active_hostname = ${lookup{$received_ip_address}\
    nwildlsearch{EXIM_DIR/hostname_incoming_ip}{$value}{$primary_hostname}}
    
    smtp_banner = "${smtp_active_hostname} ESMTP Exim ${version_number} \
    \#${compile_number} ${tod_full} \n\
      We do not authorize the use of this system to transport unsolicited, \n\
      and/or bulk e-mail."
    

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое