LINUX.ORG.RU
ФорумAdmin

Переброска почты через сервер


0

2

Приветствую. Заранее извиняюсь если что не так.

Суть проблемы моей такова:

Serv_world - 2.2.2.2
Serv_db - 1.1.1.1

у обоих серверов глобальные IP и стоят они в ДЦ.
Между серверами тоннель ipip, настроен таким образом что все сервисы настроены на 1.1.1.1, но все подключения идут через 2.2.2.2
В ДНС я прописал настройки так что домен резолвится с IP 2.2.2.2 подключения идут на 2.2.2.2 и перебрасываются на 1.1.1.1 и весь трафф идет через 2.2.2.2. Основная задача что бы сервер 1.1.1.1 не был виден напрямую никому.

Настройки на 2.2.2.2:

local=2.2.2.2
remote=1.1.1.1
ip tunnel add tun100 mode ipip local $local remote $remote
ifconfig tun100 mtu 1500
ifconfig tun100 10.0.0.2 pointopoint 10.0.0.1
ifconfig tun100 up
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -d $local -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1
iptables -t nat -A PREROUTING -d $local -i eth0 -p udp --dport 53 -j DNAT --to-destination 10.0.0.1
iptables -t nat -A PREROUTING -d $local -i eth0 -p tcp --dport 25 -j DNAT --to-destination 10.0.0.1

настройки на 1.1.1.1

setenforce 0
sysctl -w net.ipv4.ip_forward=1
ip tunnel add tun100 mode ipip local 1.1.1.1 remote 2.2.2.2
ifconfig tun100 mtu 1500
ifconfig tun100 10.0.0.1 pointopoint 10.0.0.2
ifconfig tun100 up

ip rule add from 10.0.0.1 table tunnel
ip route add default via 10.0.0.2 table tunnel dev tun100

iptables -t nat -A POSTROUTING -o em1 -s 10.0.0.2 -j SNAT --to-source 1.1.1.1

Все работает и нет проблем, но сейчас возникла необходимость в этой схеме отправлять почту так что бы все кто получали почту видели IP 2.2.2.2 а не 1.1.1.1

Постфикс настроен на данный момент на работу только на интерфейсах: 127.0.0.1 и на 10.0.0.1 почта принимается - никаких проблем.
Вопрос - я не могу вьехать как мне настроить и что прописать в iptables что бы почта ходила через 2.2.2.2 и светило в мире его, а не 1.1.1.1

На всякий случай конфиг постфикса:
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = server.com
mydomain = server.com
inet_interfaces = localhost, 10.0.0.1
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 127.0.0.1/32, 1.1.1.1/32
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id &
sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

Забыл добавить, сейчас при попытке отправить почту с сервака в логи пишет следующее:

Jan 31 19:58:21 server postfix/qmgr[11920]: C449A160963: from=<apache@server.com>, size=1155, nrcpt=1 (queue active)
Jan 31 19:58:21 server postfix/smtp[12546]: connect to gmail-smtp-in.l.google.com[2a00:1450:4001:c02::1b]:25: Network is unreachable
Jan 31 19:58:21 server postfix/smtp[12546]: connect to gmail-smtp-in.l.google.com[173.194.70.27]:25: No route to host
Jan 31 19:58:21 server postfix/smtp[12546]: connect to alt1.gmail-smtp-in.l.google.com[2a00:1450:4010:c04::1a]:25: Network is unreachable
Jan 31 19:58:22 server postfix/smtp[12546]: connect to alt1.gmail-smtp-in.l.google.com[173.194.71.27]:25: No route to host
Jan 31 19:58:22 server postfix/smtp[12546]: connect to alt2.gmail-smtp-in.l.google.com[2607:f8b0:400e:c00::1a]:25: Network is unreachable
Jan 31 19:58:22 server postfix/smtp[12546]: C449A160963: to=<user@gmail.com>, relay=none, delay=235245, delays=235243/0.01/1.3/0, dsn=4.4.1, status=deferred (connect to alt2.gmail-smtp-in.l.google.com[2607:f8b0:400e:c00::1a]:25: Network is unreachable)

Deleted

Ответ на: комментарий от Skolotovich

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

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

такой вариант не очень нравится,

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

после работы постмастером, у меня сложилось твердое убеждение, что натинг смтп до добра не доводит

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

Аргумент серьезный, сейчас буду делать как Вы советуете, спасибо !

ты еще подумай на тему нужен ли вообще смтп на Serv_db, если он у тебя работает только как MDA то проще будет сразу с Serv_world туда по lmtp почту отдавать

в этом случае схема еще проще получиться

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

Вроде у вас всё нормально, только посмотрите FORWARD на 2.2.2.2. Если в FORWARD всё разрешено, то беритесь за tcpdump. Выбирайте адрес какого-нибудь smtp-хоста и пытайтесь сделать telnet на этот ip на 25 tcp-порт. А перед этим запустите по экземпляру tcpdump'а на каждом стевом интерфейса на перехват пакетов для этого ip-адреса. Тогда будет видно куда и какие пакеты идут.

Если вы установите smtp relay на 2.2.2.2 (serv_world), то думайте как его настроить, потому что по идее он должен принимать всю почту для домена (в том числе и для не существующих пользователей) и только при передаче на 1.1.1.1 узнавать что такого пользователя нет...

Ничего старшного в изначальной схеме я не вижу, главное проследить, чтобы smtp-сервер на 1.1.1.1 представлялся DNS-именем 2.2.2.2, а не своим собственным. И в заголовок ″Received:″ писал правильное имя. То есть сначала настроить и оправить одно письмо на тестовый адрес, чтобы убедится в правильности его содержимого, а уже потом рассылать почту на все сервера Инета.

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

Настроил пока так что 2.2.2.2 принимает почту, а так же является релеем для 1.1.1.1 + на 2.2.2.2 настроил что бы менялись заголовки на нужные. Пока временно такого решения хватит, так как сейчас почты особо нет, чуть позже буду рыть дальше в сторону iptables, как нарою отпишу - может кому интересно будет.

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

Ничего старшного в изначальной схеме я не вижу, главное проследить, чтобы smtp-сервер на 1.1.1.1 представлялся DNS-именем 2.2.2.2, а не своим собственны

а соль ты хранишь в банке из под чая с надписью сахар? (:

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

Пищевые продукты храню в банках без надписей, итак всё понятно, надписи для СДЯВ.

Вобще, бывает, что ip-адрес всего один, а нужно отдельный http-сервер и отдельный smtp-сервер и делают NAT на маршрутизаторе. И ничего, всех ещё не заблеклистили.

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

Вобще, бывает, что ip-адрес всего один, а нужно отдельный http-сервер и отдельный smtp-сервер и делают NAT на маршрутизаторе. И ничего, всех ещё не заблеклистили.

и что мешает на точке входа поставить какой нить нжинксопрокси и смтп релей и форвардить трафик по серой сетке? и что будет с натом когда на этот единственный ип надо будет повесить еще один хттп/смтп/етц сервер?

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

Вешать несколько smtp серверов на один ip-адрес уже не совсем типичная задача. Один ip-адрес — одна маленькая фирма с одним доменом. Маршрутизатор (граничный) выполняет только функции маршрутизации и NAT, это может быть железячка или PC, но вместо жёсткого диска (флешка в ro).

А по поводу smtp-relay я уже писал, что с ним возникают сложности относительно bounce-email'ов, ведущие к backscatter-email.

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

Вешать несколько smtp серверов на один ip-адрес уже не совсем типичная задача.

и глупая, один смтп сервер может держать в количестве мх

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

А по поводу smtp-relay я уже писал, что с ним возникают сложности относительно bounce-email'ов, ведущие к backscatter-email

при правильной настройке не возникает

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

при правильной настройке не возникает

Подробности правильной настройки можно узнать? А то ещё окажется, что, либо вы считаете правильным полный отказ от bounce-email, либо у вас на relay'е нужно прописывать список всех почтовых ящиков почтового домена.

Если задача вешать несколько smtp-серверов на один ip для вас глупая, то зачем же было начинать с этого:

и что будет с натом когда на этот единственный ип надо будет повесить еще один ...смтп... сервер?

Уж определитесь со своими фантазиями в необходимости нескольких почтовых серверов.

я тебе говорил за маршрутизацию смтп траффика и про то что это выполнять надо средствами мта

Маршрутизация smtp-траффика не отличается от маршрутизации другого трафика. Ставить MTA на каждый хоп это безумие.

делать это натом, имхо, извращение и следствие непонимания предмета

Да, и установите smtp-сервер на cisco или бездисковый PC'юк.

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

Другой аргумент, что если Serv_world принимает почту из внешнего мира, то именно на нём нужно будет настраивать и регулировать первичную фильтрацию спама (black/while листинг, gray-listing), так как именно он принимает письмо и «знает» с какого ip-адреса идёт попытка передачи письма и, допустим, резолвится ли на момент передачи письма ip-адрес отправителя.

При этом если на Serv_db тоже работает MTA, то мы получим, что нам нужно настраивать два MTA, а не один.

В случае с DNAT у нас один MTA, и коннект идёт к нему и на нём можно делать что угодно с фильтрацией спама.

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

Подробности правильной настройки можно узнать? А то ещё окажется, что, либо вы считаете правильным полный отказ от bounce-email, либо у вас на relay'е нужно прописывать список всех почтовых ящиков почтового домена.

если мне не изменяет склероз, баунц должен идти с смтп который есть МХ, и тут есть несколько вариантов:

1) таки прописываем все почтовые ящики и домены которые он обслуживает, очень даже ничего для конторы с парой доменов и десятком ящиков

2) LMTP в качестве mailbox transport + прописывем все что надо релеить

3) ldap, postgeres, mysql или откуда еще умеет ваш мта выгребать пользователей с доменами

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

Если задача вешать несколько smtp-серверов на один ip для вас глупая, то зачем же было начинать с этого:

и что будет с натом когда на этот единственный ип надо будет повесить еще один ...смтп... сервер?

тут походу друг друга недопоняли, мне показалось что ты имеешь ввиду на том же тазике еще один смтп (слышал и про такое извращение), а я имел ввиду еще один смтп севрер в инфраструктуре

Уж определитесь со своими фантазиями в необходимости нескольких почтовых серверов.

это не моя фантазия, почта для филиала, который в меру особенности местного прова не всегда доступен, например

Маршрутизация smtp-траффика не отличается от маршрутизации другого трафика. Ставить MTA на каждый хоп это безумие.

зачем пользоваться шелом, если все равно все сводиться в вызовам сисколов, можно же просто писать программки си и их выполнять, ведь пофакту эфект будет тот же, правда?

Да, и установите smtp-сервер на cisco

на цыско не надо, и в случае дмз без проброса портов никак, хотя при наличии несколько ипов, один можно и пробросить (:

или бездисковый PC'юк

вот тут не надо, опыт запуска всякой хни на бездисковой машине присутствует

зы: имея в руках молоток, любая проблема рассматривается как гвоздь

ты ведь сетевик?

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

ты ведь сетевик?

Немного, но так я ближе к сисадминам. Несколько лет ативно мучал postfix, правда на лето, когда сетевики уходили в отпуска, мне вручали пароли от цисок и исчёрканый листок A4 со схемой их подключений :-)

Возможно, что это мой личный батхерт против нескольких SMTP, просто в одной конторе мне досталось в наследство заопарк из нескольких SMTP, которые гоняли прочту через друг-друга, в том числе и потому, что только на однин из них была куплена лицензия drweb. Железо было самое дешёвое и глючило, получалось, что уж лучше бы сделали один smtp-сервер за нормальные деньги чем эту кучу Г.

Изначальное нежелание ТС ставить smtp-сервер на Serv_world остаётся загадкой, при условии что он действительно админит оба сервера.

В ряде известных мне небольших фирм почту DNAT'ят по той причине, что маршрутизатор у них админится фрилансером (на договорной оплате), а почту они получают на MS эксчендж, куда пользователей (ящики) добавляет штатный эникейщик. И ничего, как-то работает, во всяком случае работает лучше, чем если бы маршрутизатор админили меняющиеся эникейщики :-)

Если же фирма побольше, то ей, ИМХО, просто нужно получать несколько ip-адресов и выделять под почту отдельный. Сюда же я бы отнёс случай, когда фирме действительно нужны несколько smtp-серверов, допустим для филиалов. На отдельном ip-адресе держать центральный smtp-сервер, который будет делать анти-спам и анти-вирус и раскидывать почту по филиалам. DNAT здесь не нужен.

или бездисковый PC'юк

вот тут не надо, опыт запуска всякой хни на бездисковой машине присутствует


Да, но SMTP-сервер должен где-то хранить почту, и, чтобы она не терялась, лучше бы это был «обслуживаемый» raid. Под обслуживаемым я подразумеваю оперативную замену «сдохшего» диска, а не через неделю, когда админ придёт из отпуска. Причём сейчас, когда госконторы стали использовать e-mail, потери отдельного письма могут быть череваты.

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

Возможно, что это мой личный батхерт против нескольких SMTP, просто в одной конторе мне досталось в наследство заопарк из нескольких SMTP, которые гоняли прочту через друг-друга, в том числе и потому, что только на однин из них была куплена лицензия drweb. Железо было самое дешёвое и глючило, получалось, что уж лучше бы сделали один smtp-сервер за нормальные деньги чем эту кучу Г.

было дело, принимал похожее хозяйство, по итогу все переделал на 3 физических сервера - вход, исход и хранилище

в теории вход и исход можно было бы и объеденить, а на практике оказалось, что таки решение было правильно, исход слишком часто попадал в днсбл

Да, но SMTP-сервер должен где-то хранить почту

lmtp на сосдений «дисковый» сервер с мда (:

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

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