The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Проблема в тестировании маршрута в Exim-е."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"Проблема в тестировании маршрута в Exim-е."  +/
Сообщение от korbnik email(??) on 01-Авг-17, 10:49 
Есть два хоста relay1.domain.ru и relay2.domain.ru - на них крутится EXIM:
Они друг друга дублируют. Если один выйдет из строя,
другой работает, обеспечивая отказоустойчивость.

Версия EXIM и там и там:   Exim version 4.77 #2 built 29-Oct-2011 09:18:27

Разница в конфигурациях exim-а только в названии имени хоста и в интерфейсе (ну, это понятно)

diff relay2:/etc/exim/exim.conf relay1:/etc/exim/exim.conf

49,50c49,50
< primary_hostname = relay2.domain.ru
< log_file_path = /var/log/exim/%slog : syslog
---
> primary_hostname = relay1.domain.ru
> log_file_path = /var/log/exim/%slog

622c622
<   interface = <; 10.1.10.8
---
>   interface = <; 10.1.10.2 ; 10.1.10.5

Когда я тестирую маршрут доставки до указанного адреса,
то на первом хосте вот что выдаёт:

[root@relay1 exim]# exim -bt user@domain.ru
LOG: MAIN
  lowest numbered MX record points to local host: domain.ru (while routing <user@domain.ru>)
user@domain.ru cannot be resolved at this time: lowest numbered MX record points to local host

а на втором хосте выдаёт нормально:

[root@relay2 exim]# exim -bt user@domain.ru
user@domain.ru
  router = dnslookup, transport = remote_smtp
  host relay1.domain.ru [10.1.10.2]  MX=10
  host relay0.domain.ru [10.1.10.30] MX=20

В ЧЁМ МОЖЕТ БЫТЬ ПРОБЛЕМА?

Подскажите, пожалуйста.


Сетевые службы на первом:

[root@relay1 exim]# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      23359/zabbix_agentd
tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      17517/rsyslogd      
tcp        0      0 10.1.10.5:53                0.0.0.0:*                   LISTEN      31440/named        
tcp        0      0 10.1.10.2:53                0.0.0.0:*                   LISTEN      31440/named        
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      31440/named        
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1715/sshd          
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      31861/exim          
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      31440/named        
udp        0      0 0.0.0.0:514                 0.0.0.0:*                               17517/rsyslogd      
udp        0      0 0.0.0.0:162                 0.0.0.0:*                               1696/snmptrapd      
udp        0      0 10.1.10.5:53                0.0.0.0:*                               31440/named        
udp        0      0 10.1.10.2:53                0.0.0.0:*                               31440/named        
udp        0      0 127.0.0.1:53                0.0.0.0:*                               31440/named        
udp        0      0 10.1.10.5:123               0.0.0.0:*                               2480/ntpd          
udp        0      0 10.1.10.2:123               0.0.0.0:*                               2480/ntpd          
udp        0      0 127.0.0.1:123               0.0.0.0:*                               2480/ntpd          
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               2480/ntpd          

и сетевые службы на втором:

[root@relay2 exim]# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      12587/zabbix_agentd
tcp        0      0 10.1.10.8:53                0.0.0.0:*                   LISTEN      14526/named        
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      14526/named        
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      18969/sshd          
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      2458/exim          
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      14526/named        
udp        0      0 0.0.0.0:514                 0.0.0.0:*                               28687/rsyslogd      
udp        0      0 0.0.0.0:162                 0.0.0.0:*                               1713/snmptrapd      
udp        0      0 10.1.10.8:53                0.0.0.0:*                               14526/named        
udp        0      0 127.0.0.1:53                0.0.0.0:*                               14526/named        
udp        0      0 10.1.10.8:123               0.0.0.0:*                               8948/ntpd          
udp        0      0 127.0.0.1:123               0.0.0.0:*                               8948/ntpd          
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               8948/ntpd          

Заренее благодарен. Борис.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема в тестировании маршрута в Exim-е."  +/
Сообщение от Andrey Mitrofanov on 01-Авг-17, 11:44 
https://github.com/Exim/exim/wiki/Q0301

  + у меня на Debian-е в дистрибутивном конфиге оно в CONFIG/hubbed_hosts

https://wiki.debian.org/PkgExim4UserFAQ#What_do_.22lowest_nu...

///


>[оверквотинг удален]
> Они друг друга дублируют. Если один выйдет из строя,
> другой работает, обеспечивая отказоустойчивость.
> Когда я тестирую маршрут доставки до указанного адреса,
> то на первом хосте вот что выдаёт:
> [root@relay1 exim]# exim -bt user@domain.ru
> LOG: MAIN
>   lowest numbered MX record points to local host: domain.ru (while
> routing <user@domain.ru>)
> user@domain.ru cannot be resolved at this time: lowest numbered MX record points
> to local host

Мммм... Ну, он обнаружил, что ему сказали роутить на него самого -- и недоумевает "чего-чего? куда-куда??".  Подумайте сами: это же странно слать принимаемую почту самому себе (по smtp), ведь её, по логике -- и конфигурации, снова придётся слать себе и дальше по кругу (до истечения loop-счётчикоов~).

Подозреваю, на релеях д.б. отдельные и явные правила доставки для "своих"/локальных доменов ... Пошёл в поиск---^^^^ нашёлся FAQ....

> а на втором хосте выдаёт нормально:
> [root@relay2 exim]# exim -bt user@domain.ru
> user@domain.ru
>   router = dnslookup, transport = remote_smtp
>   host relay1.domain.ru [10.1.10.2]  MX=10
>   host relay0.domain.ru [10.1.10.30] MX=20

Не смотря на то, что, казалось бы с такими MX-ами надо/можно слать на оба релея, говорят -- слыхала я ТМ, что в RFC написано, что слать надо на "первый", а на второй _только_ при отсутствии связи с первым.

> В ЧЁМ МОЖЕТ БЫТЬ ПРОБЛЕМА?

Ну-у-у-у.... Почта не доходит?!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема в тестировании маршрута в Exim-е."  +/
Сообщение от ПавелС email(ok) on 03-Авг-17, 10:44 
>[оверквотинг удален]
>>   interface = <; 10.1.10.2 ; 10.1.10.5
> Когда я тестирую маршрут доставки до указанного адреса,
> то на первом хосте вот что выдаёт:
> [root@relay1 exim]# exim -bt user@domain.ru
> LOG: MAIN
>   lowest numbered MX record points to local host: domain.ru (while
> routing <user@domain.ru>)
> user@domain.ru cannot be resolved at this time: lowest numbered MX record points
> to local host
> а на втором хосте выдаёт нормально:

А если быть внимательным, то relay2 и его IP нет среди MX записей.

> [root@relay2 exim]# exim -bt user@domain.ru
> user@domain.ru
>   router = dnslookup, transport = remote_smtp
>   host relay1.domain.ru [10.1.10.2]  MX=10
>   host relay0.domain.ru [10.1.10.30] MX=20

А почему собственно на релее срабатывает роутер dnslookup причем для локального домена? Этот роутер срабатывает на отправку на чужие домены. Куда в конечном итоге должна попадать почта для @domain.ru?

>[оверквотинг удален]
>            
>            
>      8948/ntpd
> udp        0    
>   0 0.0.0.0:123        
>          0.0.0.0:*  
>            
>            
>        8948/ntpd
> Заренее благодарен. Борис.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Проблема в тестировании маршрута в Exim-е."  +/
Сообщение от korbnik email(??) on 04-Авг-17, 15:22 

> А почему собственно на релее срабатывает роутер dnslookup причем для локального домена?
> Этот роутер срабатывает на отправку на чужие домены. Куда в конечном
> итоге должна попадать почта для @domain.ru?

А вот это я сам не понимаю, почему.
Вот часть конфига по роутерам.

Здесь я организую переменную acl_c5
для того чтобы в зависимости от отправителя посылать сообщение по разному каналу:

####################

warn set acl_c5 = ${eval:0}

warn  message = Alt user
      domains = !+local_domains
      condition = ${if eq {${lookup{$sender_address_domain}lsearch{/etc/exim/sender_domain_alt}}}{yes}}
      set acl_c5 = ${eval:1}

####################

begin routers

my_router:
  driver = manualroute
  transport = remote_smtp
  domains = ! +local_domains
  hosts_randomize = false
  host_find_failed = pass
  route_list = \
        domain.ru                 10.1.10.140     ; \
        reg.domain.ru             10.1.10.140     ; \
        nvs.domain.ru             10.1.10.140     ; \
        krasnodar.domain.ru       10.1.10.140     ; \
        samara.domain.ru          10.1.10.140     ; \
        spb.domain.ru             10.1.10.140     ; \
        nft.domain.ru             10.1.10.140     ; \
        gbk.domain.ru             10.1.10.140     ; \
        subdomain.ru              10.50.1.14      ; \
        *                       10.1.10.31:10.1.10.32 randomize
  condition = ${if eq {$acl_c5}{0}{1}{0}}
  no_more

my_router_alt:
  driver = manualroute
  transport = remote_smtp
  domains = ! +local_domains
  route_list = \
        domain.ru                 10.1.10.130     ; \
        nvs.domain.ru             10.1.10.130     ; \
        krasnodar.domain.ru       10.1.10.130     ; \
        samara.domain.ru          10.1.2.14       ; \
        spb.domain.ru             10.1.10.130     ; \
        *                        10.1.10.31:10.1.10.32 randomize
  condition = ${if eq {$acl_c5}{1}{1}{0}}
  no_more

dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  user = exim
  file_transport = address_file
  pipe_transport = address_pipe

userforward:
  driver = redirect
  check_local_user
  file = $home/.forward
  no_verify
  no_expn
  check_ancestor
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply
  condition = ${if exists{$home/.forward} {yes} {no} }

localuser:
  driver = accept
  check_local_user
  transport = local_delivery

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Проблема в тестировании маршрута в Exim-е."  +/
Сообщение от ПавелС email(ok) on 04-Авг-17, 16:32 
Я бы переписал роутеры в такой последовательности без использования переменной:

my_router_alt:
  driver = manualroute
  transport = remote_smtp
  domains = ! +local_domains
  route_list = \
        domain.ru                 10.1.10.130     ; \
        nvs.domain.ru             10.1.10.130     ; \
        krasnodar.domain.ru       10.1.10.130     ; \
        samara.domain.ru          10.1.2.14       ; \
        spb.domain.ru             10.1.10.130     ; \
        *                        10.1.10.31:10.1.10.32 randomize
  condition = ${if eq {${lookup{$sender_address_domain}lsearch{/etc/exim/sender_domain_alt}}}{yes}}
  no_more

my_router:
  driver = manualroute
  transport = remote_smtp
  domains = ! +local_domains
  hosts_randomize = false
  host_find_failed = pass
  route_list = \
        domain.ru                 10.1.10.140     ; \
        reg.domain.ru             10.1.10.140     ; \
        nvs.domain.ru             10.1.10.140     ; \
        krasnodar.domain.ru       10.1.10.140     ; \
        samara.domain.ru          10.1.10.140     ; \
        spb.domain.ru             10.1.10.140     ; \
        nft.domain.ru             10.1.10.140     ; \
        gbk.domain.ru             10.1.10.140     ; \
        subdomain.ru              10.50.1.14      ; \
        *                       10.1.10.31:10.1.10.32 randomize
  no_more

exim -bt не знает домен отправителя, но так без переменной сработает второй точно.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Проблема в тестировании маршрута в Exim-е."  +/
Сообщение от ПавелС email(ok) on 04-Авг-17, 16:45 
ЗЫ exim -bt тестирует только роутеры, ACL не вызываются, переменные следовательно не назначаются.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Проблема в тестировании маршрута в Exim-е."  +/
Сообщение от korbnik email(ok) on 08-Авг-17, 10:02 
> ЗЫ exim -bt тестирует только роутеры, ACL не вызываются, переменные следовательно не
> назначаются.

Большое спасибо, всё заработало.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру