объясните мне плиз, использует ли сабж gethostbyname() при вызове в роутере драйвера dnslookup?
есть сервер
есть у него некий ИП серый
извне порт 25 ДНАТится на этот серый ИП
в /etc/hosts прописан внутренний ИП
установлен тестовый ДНС сервер, который выдает внешний
так вот если по теории, то gethostbyname() возвращает серый ИП, что правильно, поскольку /etc/nsswith.conf содержит
Цитата: hosts: files dns
на практике в логах такое:
root@mx1.domain.tld R=dnslookup T=remote_smtp: retry time not reached for any host after a long failure period
роутеры у меня такие:
Код: begin routers
########################################################################
# Обрабатываем наши виртуальные домены
# router
procmail:
debug_print = "R: procmail for $local_part@$domain"
driver = accept
domains = +local_domains
# Дикий запрос чтобы выяснить, есть ли юзер в таблице обычных юзеров ИЛИ админов =)
# SELECT * FROM alias as a LEFT OUTER JOIN admin as b on a.address = b.username \
# WHERE a.address='address@domain.tld' \
# UNION ALL \
# SELECT * FROM alias as a RIGHT OUTER JOIN admin as b on a.address = b.username \
# WHERE a.address is null AND b.username='address@domain.tld';
condition = ${lookup mysql{SELECT a.address FROM \
`alias` as `a` LEFT OUTER JOIN `admin` as `b` on a.address = b.username \
WHERE a.address='${quote_mysql:$local_part@$domain}' \
UNION ALL \
SELECT b.username FROM `alias` as `a` RIGHT OUTER JOIN `admin` as `b` on a.address = b.username \
WHERE a.address is NULL AND b.username='${quote_mysql:$local_part@$domain}'}{yes}{no}}
transport = procmail_pipe
########################################################################
#virtual:
#driver = accept
#domains = +local_domains
#transport = procmail_pipe
# Поиск маршрута к хосту в DNS. Если маршрут не найден в DNS (no_more) -
# то это `унроутабле аддресс`. Не проверяются локальные
# домены, 0.0.0.0 и 127.0.0.0/8
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more