MSExchange+Exim+Edge
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2022-12-29 18:06:41
MSExchange+Exim+Edge
Добрый вечер господа,
Возникла необходимость поднять чангу с возможностью отправлять почту с нескольких внешних доменов. Чтобы не плодить сайты в 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
Помогите понять и решить, спасибо
Возникла необходимость поднять чангу с возможностью отправлять почту с нескольких внешних доменов. Чтобы не плодить сайты в 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
Тарифы на хостинг в России, от 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/
Тарифы на виртуальные сервера (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/
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2023-01-18 9:01:18
MSExchange+Exim+Edge
Приветствую!
Опыта у меня не особо много, расскажу про свои костыли:
У меня схема построена на 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, А у вас ориентировочно сколько должно быть доменов?
У вас нужно скрывать связь между доменами\организациями?
Опыта у меня не особо много, расскажу про свои костыли:
У меня схема построена на 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, А у вас ориентировочно сколько должно быть доменов?
У вас нужно скрывать связь между доменами\организациями?
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2022-12-29 18:06:41
MSExchange+Exim+Edge
Доброго времени суток 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
то туда полетят все письма, что и логично, опять же, пока этим вопросом глубоко не занимался, но и по правде говоря я даже и не знаю как правильно спросить у интернетов совета по данной проблеме
Благодарю за ответ и участие, должен сразу признать что мне удалось разрешить данный вопрос, я просто промедлил тут отписаться.
Конфиг выглядит сейчас следующим образом:
.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А у вас ориентировочно сколько должно быть доменов?
У вас нужно скрывать связь между доменами\организациями?
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2023-01-18 9:01:18
MSExchange+Exim+Edge
surdus, Я думаю мы решаем примерно одну проблему
Из свежего - в служебных заголовках письма отправленного с "Общего почтового ящика" или "Делегированного почтового ящика" идёт много компрометирующего мусора
Роуты по умолчанию непонимаю зачем? Виртуальные домены поднимаются в рамках одного Exchange домена?
Каждая ситуация и конфигурация софта\железа накладывает свои отпечатки
У вас несколько Exchange серверов которые в разных городах настроены?
Исторически так сложилось что у меня организовалась грядка из Exchange серверов, они отправляют все письма на один Exim-маршрутизатор, если это письмо наружу
Однако внутри Exchange домена (под доменом я понимаю свою грядку серверов с настроенными виртуальными доменами на этой грядке)
Так вот между внутренними виртуальными доменами почта ходит свободно, так как это внутренняя почта
Если что - спрашивайте, помогу чем смогу
Из свежего - в служебных заголовках письма отправленного с "Общего почтового ящика" или "Делегированного почтового ящика" идёт много компрометирующего мусора
Роуты по умолчанию непонимаю зачем? Виртуальные домены поднимаются в рамках одного Exchange домена?
Каждая ситуация и конфигурация софта\железа накладывает свои отпечатки
У вас несколько Exchange серверов которые в разных городах настроены?
Исторически так сложилось что у меня организовалась грядка из Exchange серверов, они отправляют все письма на один Exim-маршрутизатор, если это письмо наружу
Однако внутри Exchange домена (под доменом я понимаю свою грядку серверов с настроенными виртуальными доменами на этой грядке)
Так вот между внутренними виртуальными доменами почта ходит свободно, так как это внутренняя почта
Если что - спрашивайте, помогу чем смогу
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2022-12-29 18:06:41
MSExchange+Exim+Edge
merlin3334, ну, по правде говоря не сказал бы что у меня есть проблемы сейчас, скорее желание сделать так чтобы существование exim'а было едва заметным для меня)
хотя с другой стороны хочется знать и уметь больше, ибо его возможности не могут не очаровывать
чтобы избавиться от лишней инфы в заголовках нужно сделать следующее:
1) в Конфигурации ADSI в Коннекторах нужно убрать галочку в "Свойства/Безопасность" у юзера "АНОНИМНЫЙ ВХОД" в поле "Send Routing Headers"
2) создать правило на Exchange который будет удалять заголовки
"Применить это правило, если... Получатель находится.. Вне организации"
*Выполнить следующие действия... Удалить этот заголовок... 'x-originating-ip'
и
*Установить для этого сообщения значение... Установить для заголовка сообщения 'Message-ID' значение '$null'
"Выберите режим для этого правила:
Принудительно"
_________________________
Как правильно: делается сайт AD под каждый домен, и в каждом сайте размещается свой Exchange, как не трудно догадаться это очень не дешевое удовольствие приобретать лицензии на каждый Exchange, тем более если тебе нужно иметь большое количество БД.
Чтобы не плодить кучу сайтов было сделано так, что у нас несколько серверов Exchange, все они в DAG, и там уже куча почтовых ящиков с множеством почтовых доменов. Внутри они просто общаются между собой, если есть другие домены, то делаются коннекторы напрямую между exchange серверами.
хотя с другой стороны хочется знать и уметь больше, ибо его возможности не могут не очаровывать
о каком мусоре идёт речь?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 серверами.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2022-12-29 18:06:41
MSExchange+Exim+Edge
merlin3334, по поводу "роута по умолчанию", у меня есть несколько доменов которые должны выходить с одного внешника, вот чтобы не делать роут для каждого из них хотелось бы иметь "путь по умолчанию", чтобы все те письма которые не соответствуют правилам улетали на конкретный Edge.
И я малость ошибся, есть у меня проблема - письма в которых отправителем значится ящик получателя, они вот замораживаются. Но опять же, я пока не разбирался как следует в данной проблеме. Главная печаль в том, что отбойник отправителю не отправляется, в итоге юзер не знает отправилось письмо или нет, ибо оно висит в заморозке с ошибкой - "unroutable address"
И я малость ошибся, есть у меня проблема - письма в которых отправителем значится ящик получателя, они вот замораживаются. Но опять же, я пока не разбирался как следует в данной проблеме. Главная печаль в том, что отбойник отправителю не отправляется, в итоге юзер не знает отправилось письмо или нет, ибо оно висит в заморозке с ошибкой - "unroutable address"
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2023-01-18 9:01:18
MSExchange+Exim+Edge
Для почтового сервера надо прописывать 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_блаблабла<Исходный домен пользователя>_"
Таким образом если нельзя раскрывать связь организаций, то происходит палево:)