Доброго дня коллеги.
Задался вопросом. Есть у меня в локалке почтовик. Работает чудно, на роутере проброшены порты и все чудесно работает не один год, но сейчас появилась необходимость поставить второй почтарь, для клиента, свой собственный и разместить его в моей же локалке.
Задача: настроить smtp+imap прокси для распределения почты по нужным серверам. Нашел во такую статейку: https://www.dmosk.ru/miniinstruktions.php?mini=nginx-proxy-mail но там про авторизацию пользователей, для балансировки нагрузки, но это не то что мне нужно.
Итак вводные:
Роутер с белым IP.
сервер1 (стоит внутри сети с серым IP) - почтовик для домена domain.ru
сервер2 (стоит внутри сети с серым IP) - почтовик для домена example.comНужно, чтобы входящие письма для домена domain.ru переправлялись на "сервер1", а для example.com на "сервер2".
Как и чем можно такое реализовать.
Есть FreeBSD, на котором развернут Nginx+php-fpm+mysql он же прорисует веб-морду почтовика, с этим все просто, а как быть с smtp? Да, кстати, через прокси нужно не только получать почту от других почтовых серверов, но и подключаться снаружи почтовыми клиентами.Подскажите пожалуйста решение.
Пока суть до дела, нашел статейку: https://www.vcloudnine.de/load-balancing-inbound-smtp-connec.../
В ней описывается балансировка между двумя почтовыми серверами, но так же я могу не только балансировать, а распределять почту исходя из домена получателя?
Вот кусок кода:
> mode tcp
> no option http-server-close
> balance roundrobin
> option smtpchk HELO mail.terlisten-consulting.de
> server mail1 192.168.200.107:25 send-proxy check
> server mail2 192.168.200.108:25 send-proxy checkТут я понимаю, что анализирую весь TCP-трафик. В данном случае интересует строчка: option smtpchk HELO mail.terlisten-consulting.de
Как я понимаю, поправьте меня, если я ошибаюсь, данной правило срабатывает, то есть передается весь TCP, если срабатывает обращение HELO mail.terlisten-consulting.de
Простите, с английским беда.
Другими словами, если обращение будет к другому серверу, то все замечательно будет срабатывать, вот так:
> mode tcp
> no option http-server-close
> balance roundrobin
> option smtpchk HELO mail.domain.ru
> server mail1 10.10.10.1:25 send-proxy check
> mode tcp
> no option http-server-close
> balance roundrobin
> option smtpchk HELO mail.example.com
> server mail2 10.10.20.1:25 send-proxy checkЯ правильно мыслю?
если да, то другой вопрос, если на этом же сервере работает Nginx, то не будет ли проблем с http(s) трафиком?
Еще нашел такую статью на хабре: https://habr.com/ru/sandbox/34354/
Из описания:
>[оверквотинг удален]
> acl is_site3 hdr_dom(host) -i site3
> acl is_cdn hdr_dom(host) -i cdn
> acl is_cdnt hdr_dom(host) -i cdnt
> acl is_site4 hdr_dom(host) -i site4
> use_backend site1_cluster1 if is_site1
> use_backend site2_cluster1 if is_site2
> use_backend site3_cluster1 if is_site3
> use_backend cdn_cluster1 if is_cdn
> use_backend cdnt_cluster1 if is_cdnt
> use_backend site4_cluster1 if is_site4Понимаю, что при условии(сейчас на свою ситуацию примастырю), что если обращение идет на domain.ru, то грубо говоря, отработает строчка acl is_site1 hdr_dom(host) -i domain.ru и как итог выберется backend site1_cluster: use_backend site1_cluster1 if is_site1
Ну а дальше в разделе backend я прописываю нужно сервера.
Другими словами, я все проверки провожу в разделе frontend, где разбираю какой хост используется и направляю на нужный backend.
Или это работать будет только http трафиком, так как там в запросе указывается имя домена. При SMTP сначала идет приветствие helo mail.server.ru. к серверу, который указан в mx-записи dns
или возможно прописать smtpchk HELO mail.domain.ru; и для каждого из доменов прописываться свой MX?
Отправка должна работать для обоих доменов?
Я бы договорился с провайдером чтобы получить еще один IP для второго домена
Тогда все будет простоили же правильную конфигурацию майл сервера для работы с несколькими доменами
> Отправка должна работать для обоих доменов?
> Я бы договорился с провайдером чтобы получить еще один IP для второго
> домена
> Тогда все будет просто
> или же правильную конфигурацию майл сервера для работы с несколькими доменамиНа самом деле, у меня есть предложение клиентам, о предоставлении корпоративной почты для предприятий на базе Zimbra. Решение бесплатное и его продавать я не собираюсь, а продавать хостинг, где будет работать этот сервак и как следствие я буду его админить, за определенные деньги, я хочу.
Но я не хочу городить огород на одном сервере. Хочу для каждого отдельного клиента делать отдельную виртуалку, но для этого мне нужно будет разруливать почту по доменам.
Как я вас понял и изучил массу литературы, мой вариант я могу решить только установкой почтового релея, который будет определять домен и перенаправлять почту на тот сервер, который обрабатывает этот домен, будь-то sendmail, postfix или exim...Я верно мыслю?
Если да, то как быть с IMAP-перенаправлением, основываясь на домене?
>[оверквотинг удален]
> для предприятий на базе Zimbra. Решение бесплатное и его продавать я
> не собираюсь, а продавать хостинг, где будет работать этот сервак и
> как следствие я буду его админить, за определенные деньги, я хочу.
> Но я не хочу городить огород на одном сервере. Хочу для каждого
> отдельного клиента делать отдельную виртуалку, но для этого мне нужно будет
> разруливать почту по доменам.
> Как я вас понял и изучил массу литературы, мой вариант я могу
> решить только установкой почтового релея, который будет определять домен и перенаправлять
> почту на тот сервер, который обрабатывает этот домен, будь-то sendmail, postfix
> или exim...Можно и так...
> Я верно мыслю?
> Если да, то как быть с IMAP-перенаправлением, основываясь на домене?nginx с модулем imap и проксируйте наздоровье, правда разгребалку доменов придется скорее всего самому ваять.
>[оверквотинг удален]
>> разруливать почту по доменам.
>> Как я вас понял и изучил массу литературы, мой вариант я могу
>> решить только установкой почтового релея, который будет определять домен и перенаправлять
>> почту на тот сервер, который обрабатывает этот домен, будь-то sendmail, postfix
>> или exim...
> Можно и так...
>> Я верно мыслю?
>> Если да, то как быть с IMAP-перенаправлением, основываясь на домене?
> nginx с модулем imap и проксируйте наздоровье, правда разгребалку доменов придется скорее
> всего самому ваять.Так Nginx-ом понятно как и что, а вот как быть с доменами... Наверняка же есть уже решения на этот счет.
> Нужно, чтобы входящие письма для домена domain.ru переправлялись на "сервер1", а для
> example.com на "сервер2".В почтовом сервере sendmail это делается несколькими строчками.
Еще как вариант, использовать procmail-fetchmail.