■現象

1通メールを送るのに30秒掛かっている。
telnetでsmtpポートに接続して手動送信してみると、以下のような動作をしていた。

$ telnet localhost smtp
Trying localhost...
Connected to sv1(localhost)
Escape character is '^]'.
220 unknown ESMTP
EHLO mx.hogehoge.jp
250-mx.hogehoge.jp Hello sv1 [192.168.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
MAIL FROM: hoge@hogehoge.jp

(〜〜〜ここで約15秒待ち〜〜〜)

250 2.1.0 hoge@hogehoge.jp... Sender ok
RCPT TO: hoge@hoge.com

(〜〜〜ここで約15秒待ち〜〜〜)

250 2.1.5 hoge@hoge.com... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself


hogehoge

.
250 2.0.0 xxxx Message accepted for delivery
QUIT



その他調査項目:
・DNSへのアクセスなどは問題ない。
・sendmail.cfを別サーバに持っていってみても再現しない。


■対策

(1) /etc/nsswitch.conf ファイルにおいて

aliases: files nisplus
という行があったので、これを
aliases: files
に変更。

本当は、
aliases: nisplus [NOTFOUND=return] files
の方が良いのかも知れないが。。


(2)sendmailを再起動
# /etc/init.d/sendmail restart



以上です。

2008.03.24追記。

上記はうそでした。
結論からいくと/etc/nsswitch.confは無関係。

/etc/resolv.confに書いてあるnameサーバが無反応だったのが原因っぽい。。

sendmailがresolv.confをキャッシュするというのを知らなかったのと、何かのタイミングで勘違いしてしまいました。。


2007-01-21 - りをじの日記
/etc/resolv.confはres_init()で読み込まれるので、デーモンが再起動されない限り、起動時のresolv.confの情報が使われるわけだね。