LINUX.ORG.RU
ФорумAdmin

dnslookup в Exim всегда возвращает TRY_AGAIN


0

0

Памагите! :)

Ставлю exim на RH9.
Получаю проблему: ни один хост не находится dnslookup'ом. Всегда возвращается ошибка TRY_AGAIN:

# exim -d+resolver -bt someuser@test.somewhere.com
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
changed uid/gid: forcing real = effective
  uid=0 gid=0 pid=17031
  auxiliary group list: <none>
configuration file is /etc/exim/exim4.conf
log selectors = 00000ffc 00010400
trusted user
admin user
originator: uid=0 gid=0 login=root name=root
sender address = root@mail.provider.net
Address testing: uid=0 gid=93 euid=0 egid=93
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>
Testing someuser@test.somewhere.com
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>
Considering someuser@test.somewhere.com
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
routing someuser@test.somewhere.com
--------> dnslookup router <--------
local_part=someuser domain=test.somewhere.com
checking domains
test.somewhere.com in "@"? no (end of list)
test.somewhere.com in "! +local_domains"? yes (end of list)
calling dnslookup router
dnslookup router called for someuser@test.somewhere.com
  domain = test.somewhere.com
DNS lookup of test.somewhere.com (MX) gave TRY_AGAIN
test.somewhere.com in dns_again_means_nonexist? no (option unset)
returning DNS_AGAIN
dnslookup router: defer for someuser@test.somewhere.com
  message: host lookup did not complete
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=17031 terminating with rc=1 >>>>>>>>>>>>>>>>
someuser@test.somewhere.com cannot be resolved at this time:
  host lookup did not complete

$ dig -t mx test.somewhere.com

; <<>> DiG 9.2.1 <<>> -t mx test.somewhere.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5769
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1

;; QUESTION SECTION:
;test.somewhere.com.            IN      MX

;; ANSWER SECTION:
test.somewhere.com.     86400   IN      MX      10 test.somewhere.com.

;; AUTHORITY SECTION:
somewhere.com.          86400   IN      NS      ns1.provider.net.
somewhere.com.          86400   IN      NS      ns2.provider.net.

;; ADDITIONAL SECTION:
test.somewhere.com.     86400   IN      A       10.0.0.215

;; Query time: 25 msec
;; SERVER: 10.0.0.199#53(10.0.0.199)
;; WHEN: Sun Aug 15 16:47:03 2004
;; MSG SIZE  rcvd: 115


Пробовал отправлять на другие хосты - то же самое.
dig хост находит, exim - нет. 
anonymous

Re: dnslookup в Exim всегда возвращает TRY_AGAIN

1) не от рута запускать пробовал? 2) MX-запись для домена есть. а A-запись? 3) нарисуй сюда роутер dnslookup плиз

anonymous ()
Ответ на: Re: dnslookup в Exim всегда возвращает TRY_AGAIN от anonymous

Re: Re: dnslookup в Exim всегда возвращает TRY_AGAIN

> 1) не от рута запускать пробовал?

Не от рута не работает, access denied:

$ /usr/sbin/exim -d+resolver -bt someuser@test.somewhere.com
Exim version 4.41 uid=500 gid=500 pid=1767 D=fbf95cfd
Berkeley DB: Sleepycat Software: Berkeley DB 4.0.14: (November 18, 2001)
Support for: iconv() IPv6 PAM Perl TCPwrappers OpenSSL
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch nis nis0 nisplus pas
swd pgsql
Authenticators: cram_md5 plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
changed uid/gid: forcing real = effective
uid=0 gid=500 pid=1767
auxiliary group list: <none>
configuration file is /etc/exim/exim4.conf
log selectors = 00000ffc 00010400
exim: debugging permission denied

Естественно, что просто отправка почты через SMTP тоже не работает с такой же ошибкой.

> 2) MX-запись для домена есть. а A-запись?

Есть обе записи:

# cat /var/named/somewhere.com.zone
...
IN MX 10 test.somewhere.com.
IN A 10.0.0.199
...
test IN A 10.0.0.215
IN MX 10 test.somewhere.com.
...

> 3) нарисуй сюда роутер dnslookup плиз

Он такой же, как в стандартной поставке (exim4.conf вообше практически не менялся):

# cat /etc/exim/exim4.conf
...
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
...


Ещё конфиги, чтобы 2 раза не ходить:

$ cat /etc/resolv.conf
nameserver 10.0.0.199
$ cat /etc/nsswitch.conf
...
hosts: files dns
...

Дальнейшие исследования показали, что
1). Судя по логам named до него не доходит ни один запрос от exim'а
2). Файрволл выключен
И это притом, что и локальный dig, и dig запускаемый с test.somewhere.com работают.


Дальше интереснее.
Следующая программа всегда печатает "-1" (т.е. всегда ошибка) независимо от запрашиваемого хоста и/или используемого DNS-сервера:

==========================================================
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>

#include <stdio.h>

int
main()
{
unsigned char answer[1000];
res_init();

int n = res_search("microsoft.com", C_IN, T_A, answer, 1000);
printf("%d\n", n);
return 0;
}
==========================================================

Вобщем похоже, что системный resolver почему-то сломался...

anonymous ()
Ответ на: Re: Re: dnslookup в Exim всегда возвращает TRY_AGAIN от anonymous

Re: Re: Re: dnslookup в Exim всегда возвращает TRY_AGAIN

права на /etc/resolv.conf, /etc/nsswitch.conf, /etc/hosts не менялись? попробуй на программу запустить так "strace -o restest.output restest" и погляди чего из нее вылезет

anonymous ()
Ответ на: Re: Re: Re: dnslookup в Exim всегда возвращает TRY_AGAIN от anonymous

Re: Re: Re: Re: dnslookup в Exim всегда возвращает TRY_AGAIN

Права не менялись.
Запуск через strace/ltrace виснет/прерывается на вызове функции setuid32. Так что дотрассировать до конца не получается.

$ cat /etc/host.conf
order hosts,bind

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