LINUX.ORG.RU
решено ФорумAdmin

Postfix и перенаправление входящей почты

 ,


0

1

Нужен совет как правильно так сделать и вообще возможно ли так сделать…

Есть работающий почтарь на postfix - company1.com Есть AD с кучей пользователей связанных с Exchange почтарем - company2.com

Есть идея, чтобы не заводить новых пользователей на postfix из AD company2.com, а делать следующую схему -

Внешний адресат пишет письмо на user1@company1.com - Postfix письмо принимает, естественно такого юзера он в базе не находит, идет смотреть в AD есть ли user1, если есть, то выдергивает его email и релеем сразу перенаправляет входящее письмо на Exchange сервер.

Как такое можно провернуть !?

Вопрос, а зачем ты на почтовом сервере заводишь учётной записи руками? В актив директори есть поле mail, userprincipalname.

Которых достаточно для авторизации по доменной учётной записи на почтовом сервере. Единственное поле которое нужно создать дополнительно - поле под квоту.

То есть тебе нужно подключить просмотр учётных записей на почтовом агенте, postfix, в AD.

И на сервере хранение почты, тоже подключить поиск учётных записей в актив директори и просмотр базы паролей тоже в актив директори.

Как следствие созданию учётной записи в актив директории будут приводить что она будет появляться на почтовом сервере.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Вопрос, а зачем ты на почтовом сервере заводишь учётной записи руками? В актив директории есть поле mail, userprincipalname.

Да в том то и дело, что мне не нужно вообще на почтовом сервере company1.com заводить пользователей, на не есть пару тройку служебных адресов и все. Все основные пользователи сидят на Exchange (company2.com).

У меня желание что если кто то из внешних отправителей отправит письмо на - user1@company1.com, то нужно сперва этого пользователя попробовать найти в локальной базе, а потом в AD (company2.com) и если в локальной базе этого пользователя нет, но он есть в AD, то нужно перенаправить это входящее письмо через Exchange (company2.com)

Jakonda
() автор топика
Ответ на: комментарий от Jakonda

Неужели в postfix нет штатного функционала алиасов? Ящики для этого не нужно заводить, только таблицу соответствия в каком-то виде, может быть даже в произвольном.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Что-то есть, но я этого не настраивал.

Нашёл ссылку на документацию постфикс.

postfix address rewriting readme luser_relay.

Но сайт postfix с IP адресов РФ не открывается, точнее как минимум не резолвится доменное имя.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от anc

Причём тут релей, он хочет редиректить на другие адреса по списку адресов.

firkax ★★★★★
()
Ответ на: комментарий от kostik87

Но сайт postfix с IP адресов РФ не открывается, точнее как минимум не резолвится доменное имя.

Я уверен у него десятки зеркал есть, в т.ч. переведённых на русский.

yandex -> «postifx aliases»

https://docs.altlinux.org/ru-RU/archive/2.2/html-single/master/admin-html/ch0...

https://manpages.debian.org/stretch/postfix/aliases.5.en.html

https://unix.stackexchange.com/questions/595200/postfix-how-and-why-set-up-et...

virtual_alias_maps are a feature of postfix which let it completely re-route an email. They are used at a stage before postfix has decided what to do with an email and thus can be used to re-route specific email to a completely different email server.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 4)
Ответ на: комментарий от firkax

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

Ведь есть же рабочая AD где у тех пользователей у кого есть ящик в домене company2.com заполненный атрибут email.

Нужно вот на этапе проверки существования пользователя в локальной базе company1.com, если таковой не находится, то посмотреть есть ли такой в AD company2.com и если он там есть , то выдернуть значение из атрибута email и через таблицу соответствия маршрутов направить его в доставку на Exchange company2.com

А если же получатель находится в локальной базе company1.com, то просто принимаем письмо и все

Jakonda
() автор топика

Вы хотите, чтобы у ваши пользователей на exchange стало по два почтовых адреса: user1@company1.com и user1@company2.com? И зачем?

Обычно отдельные домены, как-то так: https://blog.bissquit.com/mail-servers/prostejshij-relay-na-postfix-dlya-exch...

Иногда, чтобы AD не сдох от запроса на каждое принимаемое письмо, делают скрипт, который получает с AD список всех адресов и формирует hash map файл для postfix. Скрипт запускают раз в несколько минут. Заодно, в этом случае postfix продолжает принимать почту при выключеном AD-сервере. https://help.ubuntu.ru/wiki/почтовый_сервер_с_интеграцией_с_ad

mky ★★★★★
()
Ответ на: комментарий от mky

Иногда, чтобы AD не сдох от запроса на каждое принимаемое письмо, делают скрипт, который получает с AD список всех адресов и формирует hash map файл для postfix. Скрипт запускают раз в несколько минут. Заодно, в этом случае postfix продолжает принимать почту при выключеном AD-сервере. https://help.ubuntu.ru/wiki/почтовый_сервер_с_интеграцией_с_ad

вот наверное так и надо сделать, направление понятное и наверное правильное.

т.е. скриптом смотрим AD выдергиваем всех пользователей с EMAIL атрибутом, заносим их в отдельный hash map аля alias-company2.cf с содеражинием:

user1@company1.com user2@company2.com

и потом как доп. обработчик цепляем

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf, mysql:/etc/postfix/mysql-virtual-email2email.cf, hash:/etc/postfix/alias-company2.cf

Делаем транспортное правило transport_map с содержанием:

company2.com smtp:[10.0.0.2]:587

transport_maps = hash:/etc/postfix/transport_map

По идее так должно сработать как надо мне, протестирую отпишу если кто будет подобным вопросом задаваться

Jakonda
() автор топика
Ответ на: комментарий от Jakonda

Ну в общем не сработало, надо как то перед отправкой изменить домен получателя, т.е. письмо то приходит на user1@company1.com, даже если и находится алиас на пользователя user1@company2.com, то отправка через Exchange пытается все равно же на user1@company1.com, а надо как то менять перед отправкой домен на company2.com - как это можно провернуть !? Думал конечно над canonical, но так тоже замучаешся…

Jakonda
() автор топика
Ответ на: комментарий от kostik87

Нужно делать rewrite адреса получателя.

Да, попробую поштудировать инфу как это сделать

Jakonda
() автор топика
Ответ на: комментарий от kostik87

Но сайт postfix с IP адресов РФ не открывается, точнее как минимум не резолвится доменное имя.

У меня открывается.

AS ★★★★★
()
Ответ на: комментарий от AS

Как минимум на уровне DNS ответов на доменное имя postfix.org нет.

root@wg:~# nslookup postfix.org 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
*** Can't find postfix.org: No answer

root@wg:~# nslookup postfix.org
Server:         192.168.0.1
Address:        192.168.0.1#53

Non-authoritative answer:
*** Can't find postfix.org: No answer

Возможно, у тебя где-то прописано сопоставление DNS и IP адреса или ты выходишь как-то по другому.

Проверил, что с домашнего ПК, что с ПК на работе доменное имя postfix.org не резолвится.

Провайдеры разные и территориально тоже довольно большое расстояние.

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

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

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Возможно, у тебя где-то прописано сопоставление DNS и IP адреса или ты выходишь как-то по другому.

У меня свои DNS. Но они сами в российском диапазоне всё равно. И он российский лет так 20, уже с лишним.

postfix.org

А его и нет. Есть http://www.postfix.org

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
29 марта 2024 г.

Отвечу сам себе на свой же вопрос.

Описываем в файлике поиск уч. записей в ldap каталоге

cat << EOF > /etc/postfix/ldap_transport_maps_b.cf
server_host = company2.local
server_port = 389
version     = 3
bind        = yes
start_tls   = no

bind_dn = svc.ldap
bind_pw = topsecretpassword

search_base  = DC=company2,DC=local
scope        = sub
query_filter = (&(objectClass=user)(mail=%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

result_filter    = %s
result_attribute = mail
result_format    = smtp:[mail.company2.ru]:25

и в файле main.cf прописываем relay_recipient_maps = ldap:/etc/postfix/ldap_virtual_aliases_maps_b.cf

Теперь при получении письма для пользователя из company2.com, будет выполняться поиск в ldap каталоге company2.com такого получателя и если такой будет найден, то письмо уйдет на указанный в ldap_transport_maps_b.cf релей smtp:[mail.contoso2.ru]:25 описанный в файле в параметре result_format

Jakonda
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.