Назад | Перейти на главную страницу

Проблема с разрешением имени sendmail

Меня попросили взглянуть на старый сервер RedHat (со старым, как в uname -a давая Linux server 2.4.20-27.7 #1 Thu Dec 11 15:04:48 EST 2003 i686 unknown), у которого проблема с sendmail. Сервер был установлен в 2003 году, и с тех пор, насколько я узнал, его не трогали. После сбоя питания ему потребовалось fsck для загрузки, и с тех пор пользователи не получают свою почту.

Я смотрел на /var/log/maillog, и таких строк множество:

Aug 22 21:26:22 server sendmail[12250]: p7KIujl05665: to=<id5367@demons.murgent.com>, delay=2+00:22:16, xdelay=00:00:20, mailer=esmtp, pri=4369005, relay=demons.murgent.com., dsn=4.0.0, stat=Deferred: Name server: demons.murgent.com.: host name lookup failure
Aug 22 21:27:22 server sendmail[12250]: p7KHujo05650: to=<apache@sweclo-web02.driften.net>, delay=2+00:27:53, xdelay=00:00:20, mailer=esmtp, pri=4404312, relay=sweclo-web02.driften.net., dsn=4.0.0, stat=Deferred: Name server: sweclo-web02.driften.net.: host name lookup failure
Aug 22 21:27:43 server sendmail[12435]: p7MJNuk12435: SYSERR: putoutmsg ([190.242.41.83]): error on output channel sending "250 2.1.5 <user@domain.com>... Recipient ok (will queue)": Connection reset by [190.242.41.83]
Aug 22 21:27:43 server sendmail[12435]: p7MJNuk12435: lost input channel from [190.242.41.83] to MTA after rcpt
Aug 22 21:27:43 server sendmail[12435]: p7MJNuk12435: from=<no-reply.1@nyc.gov>, size=0, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[190.242.41.83]
Aug 22 21:28:22 server sendmail[12250]: p7KIujm05665: to=<noreply@cgsociety.org>, delay=1+23:39:41, xdelay=00:00:20, mailer=esmtp, pri=4413757, relay=cgsociety.org., dsn=4.0.0, stat=Deferred: Name server: cgsociety.org.: host name lookup failure

Однако разрешение имен работает из командной строки со всеми утилитами, которые я пробовал (ping, host, dig...). На сервере также работает named, но, похоже, в какой-то момент он был переведен на использование другого сервера имен (/etc/resolv.conf имеет IP-адрес сервера в списке, но закомментирован и вместо этого указывает на маршрутизатор, который перенаправляет на DNS-серверы провайдера). Делает sendmail есть какой-то внутренний способ разрешения имен?

Я никогда не смотрел на sendmail.cf файл до сегодняшнего дня (то, что было видно, не может быть невидимым), но не мог извлечь из этого много пользы. Кажется, не упоминается разрешение имен. Есть идеи, что я должен проверить?

РЕДАКТИРОВАТЬ: Запрошенные файлы конфигурации:

resolv.conf: (192.168.0.25 - сервер, 192.168.0.1 - шлюз / маршрутизатор)

# nameserver 192.168.0.25
nameserver 192.168.0.1

named.conf:

// generated by named-bootconf.pl

options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
};

// 
// a caching only nameserver config
// 
zone "." IN {
        type hint;
        file "named.ca";
};

zone "localhost" IN {
        type master;
        file "hosts.domain.com";
        allow-update { none; };
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "db.192.168.0";
        allow-update { none; };
};
key "key" {
        algorithm hmac-md5;
        secret "secret-key-edited-out";
};

РЕДАКТИРОВАТЬ 2: Я переставил resolv.conf файл для возврата к самому серверу в случае сбоя, и теперь он медленно, но верно (700 МГц Celeron, ух!) обрабатывает почтовую очередь. Я не уверен, как долго это было закомментировано, но, возможно, кого-то еще недавно попросили взглянуть ... В любом случае, почему это будет работать только при использовании собственного DNS?

Это может помочь.

https://stackoverflow.com/questions/43970/configuring-sendmail-behind-a-firewall

Коротко:

Обновлен sendmail.mc:

 define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl

А затем настройте файл mail.switch:

 # cat /etc/mail/service.switch
  hosts files

РЕДАКТИРОВАТЬ: давайте посмотрим на результат resolv.conf. Кроме того, можем ли мы получить вывод named.conf?

EDIT2: похоже, что у этого компьютера есть собственный главный DNS-сервер с определенными записями зоны в «hosts.domain.com», которые разрешались до перезагрузки. Я предполагаю, что если вы посмотрите на этот файл зоны, вы увидите, что домены в этом файле зоны соответствуют доменам, которые sendmail не может разрешить. Конечно, учитывая, что сервер имен был закомментирован в /etc/resolv.conf, это маловероятно. Но на всякий случай раскомментируйте эту строку и посмотрите, разрешит ли sendmail домены.

Раньше я сталкивался с проблемами с sendmail и неправильным разрешением имен ...

Проблема заключалась в том, что мой «общедоступный» IP-адрес не был назначен ни одному интерфейсу в моем почтовом ящике sendmail. Sendmail будет пытаться выполнить разрешение домена в моих электронных письмах, чтобы направить его на соответствующий почтовый сервер ... и будет повторно пытаться пересылать входящие сообщения на его публичный адрес NAT. Единственным исправлением было настроить сервер привязки локально и дать ему записи, которые разрешают частный адрес в этом поле.

Я только что читаю ответ Рилиндо ... и это похоже на лучшее решение. Возможно, мне придется когда-нибудь попробовать это.