Страница 1 из 1

MSExchange+Exim+Edge

Добавлено: 2022-12-29 18:19:26
surdus
Добрый вечер господа,

Возникла необходимость поднять чангу с возможностью отправлять почту с нескольких внешних доменов. Чтобы не плодить сайты в AD было решено поднять одну чангу и роутить письма EXIMом на EDGE-сервера, чтобы письма вылетали каждая из своего почтового домена.

В Exim был создан соответствующий роут:

smarthost_my.domain.ru:
driver = manualroute
transport = remote_smtp
condition = ${if match {$sender_address_domain}{my_domain_ru}{true}{false}}
route_list = * EDGE.ADDRESS;

транспорт имеет самые простые параметры:

remote_smtp:
driver = smtp
port = 25

И тут я столкнулся с проблемой маленького опыта и узких сроков, все письма прилетающие на Exim замораживаются по причине:

Unrouteable address

Помогите понять и решить, спасибо

MSExchange+Exim+Edge

Добавлено: 2023-01-18 9:18:52
merlin3334
Приветствую!
Опыта у меня не особо много, расскажу про свои костыли:
У меня схема построена на Ubuntu server x64 18.04

Схема сети:
Exchange -> Exim-Маршрутизатор -> Exim-Релей для каждого домена свой

Exim-Маршрутизатор решает на какой домен будет улетать и отправляет письмо к соответствующему Exim-Релей
Exim-Маршрутизатор в exim4.conf.template добавил смартхосты:
.ifdef DCconfig_internet
# --- BEGIN smarthost block for virtual-domain1.ru --- #
smarthost_virtual_domain1:
driver = manualroute
domains = ! +local_domains
transport = remote_smtp
condition = ${if match{$sender_address_domain}{virtual-domain1.ru}{yes} {no}}
route_list = * 192.168.0.1;
# --- END smarthost block for virtual-domain1.ru --- #
Этот смартхост отправляет все письма отправленные с virtual-domain1.ru на IP адрес указанный в route_list

Exim-Релей по сути просто релеит письма от virtual-domain1.ru наружу и обратно

Уверен что товарищи профессионалы сделали бы один смартхост на все виртуальные домены и решили бы через поиск и подстановку
Но я пока только учусь:)

Генерация smarthost-ов у меня висит на Ansible, поэтому в этом направлении я не парюсь

surdus, А у вас ориентировочно сколько должно быть доменов?
У вас нужно скрывать связь между доменами\организациями?

MSExchange+Exim+Edge

Добавлено: 2023-01-18 11:35:30
surdus
Доброго времени суток merlin3334,

Благодарю за ответ и участие, должен сразу признать что мне удалось разрешить данный вопрос, я просто промедлил тут отписаться.

Конфиг выглядит сейчас следующим образом:

.ifdef DCconfig_satellite

smarthost_domain.msk.ru:
driver = manualroute
transport = remote_smtp
condition = ${if match{$sender_address_domain}{domain.msk.ru}{yes} {no}}
route_list = * 10.168.0.2
no_more

smarthost_domain.spb.ru:
driver = manualroute
transport = remote_smtp
condition = ${if match{$sender_address_domain}{domain.spb.ru}{yes} {no}}
route_list = * 10.168.0.3
no_more

.endif

Слишком длительная работа с Виндой привела к сильным залипаниям моего мозга в процессе решении задач с линухом)

Сейчас есть проблема только с тем, что некоторые письма попадают в заморозку, при этом отправителем значится внешний домен, типа mail.ru, yandex.ru и т.п., я пока не отслеживал весь путь подобных писем, потому сказать точно по какой причине они там - не могу. Будет время выясню и отпишусь тут.

Последнее что хотелось бы реализовать так это роуты "по-умолчанию", чтобы внутренние домены которые не имеют соответствующих роутов в конфиге летели на конкретный EDGE и уже с него вылетали в интернет.

Если делать что-то вроде

smarthost_default:
driver = manualroute
transport = remote_smtp
route_list = * 10.168.0.254

то туда полетят все письма, что и логично, опять же, пока этим вопросом глубоко не занимался, но и по правде говоря я даже и не знаю как правильно спросить у интернетов совета по данной проблеме
merlin3334 писал(а):
2023-01-18 9:18:52
А у вас ориентировочно сколько должно быть доменов?
У вас нужно скрывать связь между доменами\организациями?
Ну, боюсь что прямо на такие вопросы я отвечать не могу, отвечу только то что много, а технические заголовки чистятся.

MSExchange+Exim+Edge

Добавлено: 2023-01-18 12:50:03
merlin3334
surdus, Я думаю мы решаем примерно одну проблему

Из свежего - в служебных заголовках письма отправленного с "Общего почтового ящика" или "Делегированного почтового ящика" идёт много компрометирующего мусора

Роуты по умолчанию непонимаю зачем? Виртуальные домены поднимаются в рамках одного Exchange домена?
Каждая ситуация и конфигурация софта\железа накладывает свои отпечатки
У вас несколько Exchange серверов которые в разных городах настроены?

Исторически так сложилось что у меня организовалась грядка из Exchange серверов, они отправляют все письма на один Exim-маршрутизатор, если это письмо наружу
Однако внутри Exchange домена (под доменом я понимаю свою грядку серверов с настроенными виртуальными доменами на этой грядке)
Так вот между внутренними виртуальными доменами почта ходит свободно, так как это внутренняя почта

Если что - спрашивайте, помогу чем смогу

MSExchange+Exim+Edge

Добавлено: 2023-01-19 14:43:53
surdus
merlin3334, ну, по правде говоря не сказал бы что у меня есть проблемы сейчас, скорее желание сделать так чтобы существование exim'а было едва заметным для меня)

хотя с другой стороны хочется знать и уметь больше, ибо его возможности не могут не очаровывать
merlin3334 писал(а):
2023-01-18 12:50:03
Из свежего - в служебных заголовках письма отправленного с "Общего почтового ящика" или "Делегированного почтового ящика" идёт много компрометирующего мусора
о каком мусоре идёт речь?

чтобы избавиться от лишней инфы в заголовках нужно сделать следующее:

1) в Конфигурации ADSI в Коннекторах нужно убрать галочку в "Свойства/Безопасность" у юзера "АНОНИМНЫЙ ВХОД" в поле "Send Routing Headers"
2) создать правило на Exchange который будет удалять заголовки
"Применить это правило, если... Получатель находится.. Вне организации"
*Выполнить следующие действия... Удалить этот заголовок... 'x-originating-ip'
и
*Установить для этого сообщения значение... Установить для заголовка сообщения 'Message-ID' значение '$null'
"Выберите режим для этого правила:
Принудительно"

_________________________

Как правильно: делается сайт AD под каждый домен, и в каждом сайте размещается свой Exchange, как не трудно догадаться это очень не дешевое удовольствие приобретать лицензии на каждый Exchange, тем более если тебе нужно иметь большое количество БД.

Чтобы не плодить кучу сайтов было сделано так, что у нас несколько серверов Exchange, все они в DAG, и там уже куча почтовых ящиков с множеством почтовых доменов. Внутри они просто общаются между собой, если есть другие домены, то делаются коннекторы напрямую между exchange серверами.

MSExchange+Exim+Edge

Добавлено: 2023-01-19 14:47:51
surdus
merlin3334, по поводу "роута по умолчанию", у меня есть несколько доменов которые должны выходить с одного внешника, вот чтобы не делать роут для каждого из них хотелось бы иметь "путь по умолчанию", чтобы все те письма которые не соответствуют правилам улетали на конкретный Edge.

И я малость ошибся, есть у меня проблема - письма в которых отправителем значится ящик получателя, они вот замораживаются. Но опять же, я пока не разбирался как следует в данной проблеме. Главная печаль в том, что отбойник отправителю не отправляется, в итоге юзер не знает отправилось письмо или нет, ибо оно висит в заморозке с ошибкой - "unroutable address"

MSExchange+Exim+Edge

Добавлено: 2023-01-20 13:47:46
merlin3334
surdus писал(а):
2023-01-19 14:47:51
у меня есть несколько доменов которые должны выходить с одного внешника, вот чтобы не делать роут для каждого из них хотелось бы иметь "путь по умолчанию"
Для почтового сервера надо прописывать PTR запись "mail.<имя домена>"
И у меня нет данных что PTR может иметь множественное значение
Следовательного для одного IP может быть правильно настроен только один почтовый домен

Хотя наверное можно указать в SPF что другой домен использует отправителем такой то сервер

В общем я думаю если нет цели скрывать связь между доменами, то наверное можно намутить что либо, но надо смотреть

По поводу мусора в заголовках
Вот мой файл для фильтрации заголовков:
headers remove Received
headers remove x-originating-ip

Received - содержит всю внутреннюю кухню, но при удалении заголовка, остаются данные только последнего выпускающего Exim
x-originating-ip - IP почтового клиента

Но проблема не в этом:
Если пользователь пишет от своего имени со своего ящика, то все хорошо
Если пользователь пишет с ОБЩЕГО почтового ящика из другого домена или с делегированного ящика с другого домена

То в headers письма остаются следы:
Message-ID: блаблабла@<Исходный домен пользователя>
Content-Type: multipart/alternative;
boundary="_000_блаблабла<Исходный домен пользователя>_"
Так же в ТЕЛО письма добавляются 3 поля
"--_000_блаблабла<Исходный домен пользователя>_"

Таким образом если нельзя раскрывать связь организаций, то происходит палево:)