Есть два хоста 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/%slog622c622
< 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Заренее благодарен. Борис.
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 написано, что слать надо на "первый", а на второй _только_ при отсутствии связи с первым.
> В ЧЁМ МОЖЕТ БЫТЬ ПРОБЛЕМА?
Ну-у-у-у.... Почта не доходит?!
>[оверквотинг удален]
>> 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
> Заренее благодарен. Борис.
> А почему собственно на релее срабатывает роутер 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_moremy_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_morednslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_moresystem_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}
user = exim
file_transport = address_file
pipe_transport = address_pipeuserforward:
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
Я бы переписал роутеры в такой последовательности без использования переменной:
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_moremy_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_moreexim -bt не знает домен отправителя, но так без переменной сработает второй точно.
ЗЫ exim -bt тестирует только роутеры, ACL не вызываются, переменные следовательно не назначаются.
> ЗЫ exim -bt тестирует только роутеры, ACL не вызываются, переменные следовательно не
> назначаются.Большое спасибо, всё заработало.