MSExchange+Exim+Edge

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
surdus
проходил мимо
Сообщения: 4
Зарегистрирован: 2022-12-29 18:06:41

MSExchange+Exim+Edge

Непрочитанное сообщение surdus » 2022-12-29 18:19:26

Добрый вечер господа,

Возникла необходимость поднять чангу с возможностью отправлять почту с нескольких внешних доменов. Чтобы не плодить сайты в 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

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

merlin3334
проходил мимо
Сообщения: 4
Зарегистрирован: 2023-01-18 9:01:18

MSExchange+Exim+Edge

Непрочитанное сообщение merlin3334 » 2023-01-18 9:18:52

Приветствую!
Опыта у меня не особо много, расскажу про свои костыли:
У меня схема построена на 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, А у вас ориентировочно сколько должно быть доменов?
У вас нужно скрывать связь между доменами\организациями?

surdus
проходил мимо
Сообщения: 4
Зарегистрирован: 2022-12-29 18:06:41

MSExchange+Exim+Edge

Непрочитанное сообщение surdus » 2023-01-18 11:35:30

Доброго времени суток 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
А у вас ориентировочно сколько должно быть доменов?
У вас нужно скрывать связь между доменами\организациями?
Ну, боюсь что прямо на такие вопросы я отвечать не могу, отвечу только то что много, а технические заголовки чистятся.

merlin3334
проходил мимо
Сообщения: 4
Зарегистрирован: 2023-01-18 9:01:18

MSExchange+Exim+Edge

Непрочитанное сообщение merlin3334 » 2023-01-18 12:50:03

surdus, Я думаю мы решаем примерно одну проблему

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

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

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

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

surdus
проходил мимо
Сообщения: 4
Зарегистрирован: 2022-12-29 18:06:41

MSExchange+Exim+Edge

Непрочитанное сообщение surdus » 2023-01-19 14:43:53

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 серверами.

surdus
проходил мимо
Сообщения: 4
Зарегистрирован: 2022-12-29 18:06:41

MSExchange+Exim+Edge

Непрочитанное сообщение surdus » 2023-01-19 14:47:51

merlin3334, по поводу "роута по умолчанию", у меня есть несколько доменов которые должны выходить с одного внешника, вот чтобы не делать роут для каждого из них хотелось бы иметь "путь по умолчанию", чтобы все те письма которые не соответствуют правилам улетали на конкретный Edge.

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

merlin3334
проходил мимо
Сообщения: 4
Зарегистрирован: 2023-01-18 9:01:18

MSExchange+Exim+Edge

Непрочитанное сообщение merlin3334 » 2023-01-20 13:47:46

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_блаблабла<Исходный домен пользователя>_"

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