URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 75256
[ Назад ]

Исходное сообщение
"MX-записи"

Отправлено sda , 20-Июл-07 13:21 
Добрый день, уважаемые гуру! ПОдскажите как сделать, чтобы почта крректно работала.
Почтовый сервер стоит в локалке. Проброс 25 порта идет через PAT. Так вот.. имеем в dns - mx-гласит, что почтовый сервер mx.xxx.ru для этого домена xxx.ru имеет ip xxx.xxx.xx.xxx (внешний), но когда я отправляю письмо в мир с локальной машины, оно коннектится к этому внешнему ip и естественно получает отлуп ибо работает PAT только для коннектов с внешки. Как правильно разрулить ситуацию?
В /etc/hosts прописал, что aaa.aaa.aaa.aaa mx.xxx.ru
где aaa.aaa.aaa.aaa. - локальный IP этого сервера...

Содержание

Сообщения в этом обсуждении
"MX-записи"
Отправлено psn1982 , 20-Июл-07 14:28 
>Добрый день, уважаемые гуру! ПОдскажите как сделать, чтобы почта крректно работала.
>Почтовый сервер стоит в локалке. Проброс 25 порта идет через PAT. Так
>вот.. имеем в dns - mx-гласит, что почтовый сервер mx.xxx.ru для
>этого домена xxx.ru имеет ip xxx.xxx.xx.xxx (внешний), но когда я отправляю
>письмо в мир с локальной машины, оно коннектится к этому внешнему
>ip и естественно получает отлуп ибо работает PAT только для коннектов
>с внешки. Как правильно разрулить ситуацию?
>В /etc/hosts прописал, что aaa.aaa.aaa.aaa mx.xxx.ru
>где aaa.aaa.aaa.aaa. - локальный IP этого сервера...

Я не понял ничего....
С локалки нужно отправить почту самому себе?
А что в локалке за MTA?


"MX-записи"
Отправлено sda , 20-Июл-07 14:37 
>Я не понял ничего....
>С локалки нужно отправить почту самому себе?
>А что в локалке за MTA?

нарисую схему: internet<->|IP маршрутизатора|<->|IP(локальный) MTA|

Так вот в MX записи содержится внешний IP маршрутизатора
Когда я пытаюсь отправить почту с MTA - он видя эту MX запись пытается коннектиться на внешний IP маршрутизатора. Естественно его там посылают нафиг. Мне надо заставить MTA коннектиться на свой локальный IP для отправки почты :))

в логе MTA:
Jul 20 14:13:06 srv-uln03 postfix/smtp[86740]: 8E0BF2BD944: to=<tjumin@bes.volmrk.ru>, relay=none, delay=30, delays=0.16/0/30/0, dsn=4.4.1, status=deferred (connect to mx.xxx.ru[xxx.xxx.xxx.xxx]: Operation timed out)


"MX-записи"
Отправлено Oyyo , 20-Июл-07 14:46 
>[оверквотинг удален]
> нарисую схему: internet<->|IP маршрутизатора|<->|IP(локальный) MTA|
>
>Так вот в MX записи содержится внешний IP маршрутизатора
>Когда я пытаюсь отправить почту с MTA - он видя эту MX
>запись пытается коннектиться на внешний IP маршрутизатора. Естественно его там посылают
>нафиг. Мне надо заставить MTA коннектиться на свой локальный IP для
>отправки почты :))
>
>в логе MTA:
>Jul 20 14:13:06 srv-uln03 postfix/smtp[86740]: 8E0BF2BD944: to=<tjumin@bes.volmrk.ru>, relay=none, delay=30, delays=0.16/0/30/0, dsn=4.4.1, status=deferred (connect to mx.xxx.ru[xxx.xxx.xxx.xxx]: Operation timed out)

что за ДНС ? для локалки пропиши внутренний ИП МХ записи


"MX-записи"
Отправлено sda , 20-Июл-07 15:09 
>что за ДНС ? для локалки пропиши внутренний ИП МХ записи

да блин.. сервер dns поднят на Windows DNS.. не различает оно работу с различными клиентами dns.. :(


"MX-записи"
Отправлено psn1982 , 20-Июл-07 15:13 
>>что за ДНС ? для локалки пропиши внутренний ИП МХ записи
>
>да блин.. сервер dns поднят на Windows DNS.. не различает оно работу
>с различными клиентами dns.. :(

Я не врубаюсь зачем он лезет в DNS если почта должна сразу на нем осесть, и не пытаться дальше идти...
mydestination
корректно описан?
Можешь показать main.cf ?


"MX-записи"
Отправлено sda , 20-Июл-07 15:15 
>Я не врубаюсь зачем он лезет в DNS если почта должна сразу
>на нем осесть, и не пытаться дальше идти...
> mydestination
>корректно описан?
>Можешь показать main.cf ?

soft_bounce = no
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
default_privs = nobody
myhostname = srv-uln03.xxxx (локальный хост)
mydomain = xxxx.ru (внешний домен)
myorigin = $myhostname
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
local_recipient_maps = unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 10.173.0.0/16, 127.0.0.0/8
relay_domains = $mydestination
relayhost = $mydomain
#relay_recipient_maps = hash:/usr/local/etc/postfix/relay_recipients
in_flow_delay = 1s
alias_maps = hash:/usr/local/etc/postfix/aliases
alias_database = hash:/usr/local/etc/postfix/aliases
mail_spool_directory = /var/mail
fast_flush_domains = $relay_domains
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 20
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
html_directory = no
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no


"MX-записи"
Отправлено psn1982 , 20-Июл-07 15:35 
>[оверквотинг удален]
>         xxgdb $daemon_directory/$process_name $process_id
>& sleep 5
>sendmail_path = /usr/local/sbin/sendmail
>newaliases_path = /usr/local/bin/newaliases
>mailq_path = /usr/local/bin/mailq
>setgid_group = maildrop
>html_directory = no
>manpage_directory = /usr/local/man
>sample_directory = /usr/local/etc/postfix
>readme_directory = no

А не поэтому ли он лезет в DNS?
relayhost = $mydomain
mydomain = xxxx.ru (внешний домен)
А далее начинается поиск MX для xxxx.ru (внешний домен)
И естественно попадает на внешний ip маршрутизатора
Если вот это посмотреть
  Метод доставки: прямой или не прямой

По умолчанию, Postfix пытается посылать почту в Internet напрямую. В зависимости от окружения, в котором функционирует Ваш почтовый сервер, это может быть невозможно или нежелательно. Например, Ваша машина может быть отключена от Internet-а в нерабочее время, она может быть закрыта файрволлом, Ваш провайдер может запрещать пересылку почты в Internet напрямую. В таких случаях Вам необходимо настроить Postfix на пересылку писем через другой почтовый сервер (relay host).

Примеры (укажите только один вариант из следующих):

    /etc/postfix/main.cf:
        relayhost =                   (по умолчанию: посылать в Internet напрямую)
        relayhost = mydomain         (пересылать через локальный почтовый сервер)
        relayhost = mydomain  (пересылать через локальный почтовый сервер)
        relayhost = [mail.isp.tld]    (пересылать через почтовый сервер провайдера)

А если сделать так
relayhost =                   (по умолчанию: посылать в Internet напрямую)
У вас может почтовик сразу наружу выбрасывать по 25 порту?
relayhost это хост на котором стоит другой MTA и разрешен релей для вашего домена (подсети)через него, тут как правило имеет смысл указывать релей провайдера, если не можете швырять напрямую почту (фильтруется 25 порт)


"MX-записи"
Отправлено sda , 20-Июл-07 16:10 
>А если сделать так
>relayhost =          
>        (по умолчанию: посылать
>в Internet напрямую)
>У вас может почтовик сразу наружу выбрасывать по 25 порту?
>relayhost это хост на котором стоит другой MTA и разрешен релей для
>вашего домена (подсети)через него, тут как правило имеет смысл указывать релей
>провайдера, если не можете швырять напрямую почту (фильтруется 25 порт)

Спасибо, помогло!


"MX-записи"
Отправлено Oyyo , 20-Июл-07 15:19 
>>>что за ДНС ? для локалки пропиши внутренний ИП МХ записи
>>
>>да блин.. сервер dns поднят на Windows DNS.. не различает оно работу
>>с различными клиентами dns.. :(
>
>Я не врубаюсь зачем он лезет в DNS если почта должна сразу
>на нем осесть, и не пытаться дальше идти...
> mydestination
>корректно описан?
>Можешь показать main.cf ?

всё правильно ДНАТ внешние запросы отправляет нормально, для локалной сети запросы на внешний ИП нуна дополнительно натить


"MX-записи"
Отправлено Oyyo , 20-Июл-07 15:15 
>>что за ДНС ? для локалки пропиши внутренний ИП МХ записи
>
>да блин.. сервер dns поднят на Windows DNS.. не различает оно работу
>с различными клиентами dns.. :(

Понятно, пользуем тупые ОСи для серьёзных дел

маршрутизатор под какой ОСью и какой фаервол используется?


"MX-записи"
Отправлено sda , 20-Июл-07 15:18 
>>>что за ДНС ? для локалки пропиши внутренний ИП МХ записи
>>
>>да блин.. сервер dns поднят на Windows DNS.. не различает оно работу
>>с различными клиентами dns.. :(
>
>Понятно, пользуем тупые ОСи для серьёзных дел
>
>маршрутизатор под какой ОСью и какой фаервол используется?

Cisco PIX-515E


"MX-записи"
Отправлено Oyyo , 20-Июл-07 15:38 
>>>>что за ДНС ? для локалки пропиши внутренний ИП МХ записи
>>>
>>>да блин.. сервер dns поднят на Windows DNS.. не различает оно работу
>>>с различными клиентами dns.. :(
>>
>>Понятно, пользуем тупые ОСи для серьёзных дел
>>
>>маршрутизатор под какой ОСью и какой фаервол используется?
>
>Cisco PIX-515E

Извини, но с цисками дело не имел
суть в чём, когда запрос приходит на внешний ИП, то подставляетс адрес назначения, а адрес отправителя не меняется и твой почтовик видит адрес клиента локальной сети и пытается отправить ответ прямо в локалку вместо того, чтоб отправить его на шлюз по умолчанию
в результате пакет не проходит обратного действия ДНАТа

на шлюзе для запросов из локалки по почтовым портам нуна делать SHAT тогда пакеты пойдут куда надо, но здесь есть другие грабли, в логах почтовика все обращения из локалки будут выглядет как от одного клиента, а именно с того ИП который подставишь в SHATе


"MX-записи"
Отправлено psn1982 , 20-Июл-07 15:56 
>[оверквотинг удален]
>суть в чём, когда запрос приходит на внешний ИП, то подставляетс адрес
>назначения, а адрес отправителя не меняется и твой почтовик видит адрес
>клиента локальной сети и пытается отправить ответ прямо в локалку вместо
>того, чтоб отправить его на шлюз по умолчанию
>в результате пакет не проходит обратного действия ДНАТа
>
>на шлюзе для запросов из локалки по почтовым портам нуна делать SHAT
>тогда пакеты пойдут куда надо, но здесь есть другие грабли, в
>логах почтовика все обращения из локалки будут выглядет как от одного
>клиента, а именно с того ИП который подставишь в SHATе

Я еще раз спрошу
А не поэтому ли он лезет в DNS?

relayhost = $mydomain
mydomain = xxxx.ru (внешний домен)
А далее начинается поиск MX для xxxx.ru (внешний домен)
И естественно попадает на внешний ip маршрутизатора
Зачем это нужно, лишнее кольцо на себя, я бы понял если бы на внешнем ip висел еще один MTA, другой, а здесь идет возврат через DNAT
Локальная почта при нормальной настройке должна сразу оседать на машине, и никуда не лезть, тем более на внешние ip

Если вот это посмотреть
  Метод доставки: прямой или не прямой

По умолчанию, Postfix пытается посылать почту в Internet напрямую. В зависимости от окружения, в котором функционирует Ваш почтовый сервер, это может быть невозможно или нежелательно. Например, Ваша машина может быть отключена от Internet-а в нерабочее время, она может быть закрыта файрволлом, Ваш провайдер может запрещать пересылку почты в Internet напрямую. В таких случаях Вам необходимо настроить Postfix на пересылку писем через другой почтовый сервер (relay host).

Примеры (укажите только один вариант из следующих):

    /etc/postfix/main.cf:
        relayhost =                   (по умолчанию: посылать в Internet напрямую)
        relayhost = mydomain         (пересылать через локальный почтовый сервер)
        relayhost = mydomain  (пересылать через локальный почтовый сервер)
        relayhost = [mail.isp.tld]    (пересылать через почтовый сервер провайдера)

А если сделать так
relayhost =                   (по умолчанию: посылать в Internet напрямую)
У вас может почтовик сразу наружу выбрасывать по 25 порту?
relayhost это хост на котором стоит другой MTA и разрешен релей для вашего домена (подсети)через него, тут как правило имеет смысл указывать релей провайдера, если не можете швырять напрямую почту (фильтруется 25 порт)


"MX-записи"
Отправлено Oyyo , 20-Июл-07 16:29 
>Зачем это нужно, лишнее кольцо на себя, я бы понял если бы
>на внешнем ip висел еще один MTA, другой, а здесь идет
>возврат через DNAT
>Локальная почта при нормальной настройке должна сразу оседать на машине, и никуда
>не лезть, тем более на внешние ip

согласен, но это пока только почта, завтра например поднимет ВЕБ сервер даст доступ к нему с наружи естественно запись в ДНСе будет с реальным ИПом, для локальных изеров опять те-же грабли


"MX-записи"
Отправлено psn1982 , 20-Июл-07 16:48 
>>Зачем это нужно, лишнее кольцо на себя, я бы понял если бы
>>на внешнем ip висел еще один MTA, другой, а здесь идет
>>возврат через DNAT
>>Локальная почта при нормальной настройке должна сразу оседать на машине, и никуда
>>не лезть, тем более на внешние ip
>
>согласен, но это пока только почта, завтра например поднимет ВЕБ сервер даст
>доступ к нему с наружи естественно запись в ДНСе будет с
>реальным ИПом, для локальных изеров опять те-же грабли

Почта локальная так и должна работать. С клиента пришла на SMTP сервер, а если он же ее и принимает а не релеит, она для него локальная все на этом стоп....., дальше никуда лезть не нужно, ни в DNS ни на другой релей.
С вебом тут совсем другое дело.
Тут 2 варианта:
1. Если есть внутренний DNS, то можно в нем сделать A запись на внутренний ip, если нет
то
2. TCP проксирование (пример с помощью pf)

На системе сетевой защиты может быть установлен универсальный прокси-сервер TCP, или слушающий на порту, который будет перенаправлен, или получающий подключения на внутреннем интерфейсе. Когда локальный клиент соединяется с системой сетевой защиты, прокси-сервер принимает подключение, устанавливает второе подключение с внутренним сервером, и передает данные между этими двумя подключениями.

Простое проксирование можно организовать используя inetd(8) и nc(1). Следущие записи в etc/inetd.conf создают сокет, привязанный к петлевому адресу (127.0.0.1) и порту 5000. Подключения перенаправляются на порт 80 сервера 192.168.1.10.

127.0.0.1:5000 stream tcp nowait nobody /usr/bin/nc nc -w \
   20 192.168.1.10 80

Следущее правило перенапрвляет порт 80 на внутреннем интерфейсе к прокси-серверу:

rdr on $int_if proto tcp from $int_net to $ext_if port 80 -> \
   127.0.0.1 port 5000

3.Комбинация RDR и NAT (пример pf)

С дополнительным правилом NAT на внутреннем интерфейсе может быть решена проблема недостающей переадресации.
rdr on $int_if proto tcp from $int_net to $ext_if port 80 -> \
   $server
no nat on $int_if proto tcp from $int_if to $int_net
nat on $int_if proto tcp from $int_net to $server port 80 -> \
   $int_if

Это заставит начальный пакет от клиента быть оттранслированным снова, когда он пройдет назад через внутренний интерфейс, заменяя исходный адрес клиента на внутренний адрес системы сетевой защиты. Внутренний сервер ответит системе сетевой защиты, которая может полностью изменить и NAT и RDR трансляции при отправке пакета локальному клиенту


"MX-записи"
Отправлено Onn , 23-Июл-07 13:57 
Есть 3 варианта решения задачи:
1. Настароить правильно DNAT, SNAT для коректного проброса портов.
2. Использовать опцию view в bind и запись MX отдавать по разному для внутренних и внешних клиентов.

view "internal" {
    mtach-clients { 192.168.1.0/24; };
    
    zone "test.ua" IN {
    };
};

view "external" {
   match-clients { any ; };
  
   zone "test.ua" IN {
   };
};

3. Взять доп ip блок адресов и огранизовать dmz, с выдачей почтовику, веб серверу и тд чесных адресов.



"MX-записи"
Отправлено sda , 23-Июл-07 17:07 
>[оверквотинг удален]
>
>view "external" {
>   match-clients { any ; };
>
>   zone "test.ua" IN {
>   };
>};
>
>3. Взять доп ip блок адресов и огранизовать dmz, с выдачей почтовику,
>веб серверу и тд чесных адресов.

спасибо, все уже сделано.. достаточно было прописать в main.cf:
relayhost =