BBSへの鷹の巣さんの書込み、メール等の文面については承諾を頂いた上で掲載しております。
全体的に読み物風にしてありますのでごゆっくりどうぞ。結果だけ知りたい方はこちらへどうぞ

※qmailへの反応がめちゃくちゃ遅いということで検索されて来た方はこちらが参考になるかもしれませんこちらへどうぞ

ある日(2002.5.16)、私が出張中のホテルで寝ていると、鷹の巣さんよりAM雑記帳(BBS)へ書込みが有りました。
そはいうものの出張中であって寝ていたことには別段意味はありません。
どうやら、私のMYサーバーが鷹の巣さんへ、113ポートのパケットが飛ばしている、その見解を、という事です。

最初の質問部分を抜き出してみました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−BBSより抜粋
タイトル:MTAで、identdをご使用されている理由を教えて下さい。

AMMさん、おはようございます。鷹の巣です。
サーバー稼動検査サービスをご利用して頂きありがとうございます。
サービス開始当初から、解っていたのですが、AMMさんのご利用の2サイトのSMTPポート(25番)のチェックですが、
応答が他のサイトに比べてやや遅いので、失礼とは思いましたが、連絡させて頂きます。

MTAで、identdをご使用されている理由を教えて下さい。
設定が間違っているsendmail相手だとidentの応答を永遠に待つ様なことは、なかったでしょうか。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−抜粋終了
そして添付して頂いたログの一部が次のとおり
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−抜粋開始
日付    時刻  IN/OUT  アクセス元     ポート番号 鷹の巣IPアドレスとポート番号=113(auth/ident)
2002/05/16 00:07:56.77 I *.as.wakwak.ne.jp(61.205.*.*) 33016 218.45.*.* 113
2002/05/16 00:07:59.75 I *.as.wakwak.ne.jp(61.205.*.*) 33016 218.45.*.* 113
2002/05/16 00:08:05.76 I *.as.wakwak.ne.jp(61.205.*.*) 33016 218.45.*.* 113
2002/05/16 00:08:17.76 I *.as.wakwak.ne.jp(61.205.*.*) 33016 218.45.*.* 113
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−抜粋終了

さて、解説をしますと
私は鷹の巣さんが提供されています「自宅サーバー監視サービス」を利用させて頂いております。
http://sakaguch.com/JyoujiSetsuzoku.html こちらの 手順G2.サーバーの運用ツール にて受付されてます。
定期的に、あるポートに対してチェックをかけて頂き、もしも、動作していない場合はメールを送っていただけるというサービスです。
有り難いとこに無料で10分間隔という内容でした。
私はSMTP(25)、POP(110)、WWW(80)の3つのポートに対しての依頼をして運用を続けていた訳です。
監視サービスへは私のサーバーだけでなく別のサーバーも合わせて2つお願いしてありまして、この2つのサーバーはほぼ同じ構成になっているものです。

その監視サービスのログから2つの問題を指摘された訳です。
 1、SMTPへの返答が遅い
 2、MTAからidentd(113番ポート)の問い合わせパケットが帰ってくるのはなぜか?

意味合いとしてはidentdが出ているので、その弊害としてSMTPも遅いのでは?そういう意味だとおもいます。

さて、困った事になりました。寝耳に水というか、自分の意としないことについて、指摘を頂いたわけですが、さて、どこから手をつけてみたらよいのやら.....

前置きしておきますが、運用上の実害があった訳ではありません。順調に稼動しています。
もしも、出てくるとしたらその障害は、ご指摘頂いた
設定が間違っているsendmail相手だとidentの応答を永遠に待つ様なことは、なかったでしょうか。
という待ち時間の問題が提示されています。 そこでSMTPの反応が遅いことがイメージとして関連しているのでしょう。
ちょっとidentdに関して事例を検索してみますと、メールの相手のリモートホスト情報を引こうとして返事を要求するものの、パケット113番がルーターなどで止められてしまい、戻らない113パケットを待ちつづけてタイムオーバーになるという、そんな事例が幾つかみられました。これは受信に限らず送信でも報告されていました。

ただし、事例はsenmailに関するものばかりで、我が qmail に関してその様な報告は見つかりません。
確かに見つからないのかもしれません。私自身が113パケットを発していながらそれを障害と判断出来るような状況に至っていないからです。
よく思い返せば、私はもともと、リモートホスト情報を引かないように、53番,113番は停止していたはずなんですが.....(あとで説明します)

まず問題1のSMTPの反応が遅い件です。
遅いといっても、MYサーバーはRAMが32MBしかなくてCPUもP133なので、ちょっとだけ遅いんです。SMTPへのリクエストがあると、ディスクアクセスがあって、ぐりぐりって音がして働いている感じを感じるんです。1秒・・・0.5秒くらいかな。もう一方は早いはず。
そのことかと思って、 両方とも遅いのでしょうか? とお聞きしたところ

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−抜粋
> > サービス開始当初から、解っていたのですが、AMMさんのご利用の2サイトのSMTPポート(25番)のチェックですが、
> > 応答が他のサイトに比べてやや遅いので、失礼とは思いましたが、連絡させて頂きます。
> これは両方ともでしょうか?

はい、両方です。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−抜粋終了

基本的に 遅いという事なんですね(T_T)
でも、
 ・実用上遅くない
 ・telnet 10.0.0.100 25 での反応も別に気になるほど遅くない
だから気にしないことにしました。
きっと、POP before SMTPのせいだろうと思ったからです。
SMTPへのリクエストがあると単に返事をするだけでなく、その一連のデーモンたちが働いて、許可してもよいホスト一覧、が置いてあるディレクトリを探して
そこにリストがあれば接続し、なければ接続しない、という、ちょっと裏方の仕事が入るため多少待たされます。と言っても気になるほどではありません。
たぶんそれが要因に間違い無いとは思いますが突っ込んでもしょうがないので、これはこのままにしておくことにしました。



次の、問題2、identdを ”知らぬ間” に使っている理由を答えなければならない

identdそのもののサービスとして止めてあります。その部分では自動に動作していることはありません。
ではどこに?

疑ったその1
最初に思いついたのは inetd の hosts.deny で不正アクセスを報告させる機能。
ここでホスト情報を引いているのかなと思って、2時間近くこれを停止し、様子をみたのですが意味無く終わりました。
そもそも自分側にログ報告されてないのでそこで引っかかっている訳ではありません。
だからこれは関係なかったみたいです。関係ないので詳細は書きません。

疑ったその2
Apache 。
手塩にかけて育てたMTAであるqmailが勝手にそんな動作するはずありません。そう思って矛先をApacheに向けました。

ちがいますか鷹の巣さん
>意図的に出していないということは、了解しました。Apacheは、出しておりません。
とのお言葉。
確かにその通りです。頂いたこのログ(別のサーバーの方ですが)
2002/05/16 23:09:49.00 O 202.212.*.*(ns.******corp.net) 80 192.168.*.* 2792 <----------Apacheへのチェック
2002/05/16 23:10:33.73 O 202.212.*.*(ns.******corp.net) 25 192.168.*.* 2821<-----------smtpチェック
2002/05/16 23:10:34.06 I ns.******corp.net(202.212.*.*) 4910 218.45.*.* 113<------------identdたち
2002/05/16 23:10:37.05 I ns.******corp.net(202.212.*.*) 4910 218.45.*.* 113
2002/05/16 23:10:43.05 I ns.******corp.net(202.212.*.*) 4910 218.45.*.* 113
2002/05/16 23:10:55.06 I ns.******corp.net(202.212.*.*) 4910 218.45.*.* 113
2002/05/16 23:11:00.12 O 202.212.*.*(ns.******corp.net) 110 192.168.*.* 2823<----------POPチェック
2002/05/16 23:11:00.34 I ns.******corp.net(202.212.*.*) 4911 218.45.*.* 113<------------identdたち
2002/05/16 23:11:03.34 I ns.******corp.net(202.212.*.*) 4911 218.45.*.* 113
2002/05/16 23:11:09.34 I ns.******corp.net(202.212.*.*) 4911 218.45.*.* 113
2002/05/16 23:11:21.34 I ns.******corp.net(202.212.*.*) 4911 218.45.*.* 113

Apache直後では何も動作してなくて、SMTPとPOPが反応しているんです。
しかもリトライ3回

では、ようやくMTAへ調査を進めることにします。
MTAといっても「qmail本体」はどこも調べるところはありません。これ自体なにも悪いことはしませんし調整するところもありません。

qmailというシステムではPOPやSMTPを別のデーモンとして稼動しています。例えばqmail本体とsmtpdだけを稼動させてリレーのみ行う、そういう使い方も出来てしまうので注意が必要なんですけど。
SMTP はqmail-smtpd
POP3は qmail-pop3d
で実装します。
そして、これらを起動させる手順では inetdで起動させる方法だけでなく作者推薦の tcpserver から起動させる方法があります。
私は tcpserver から起動させています。
基本となる起動手順はこんな感じ。
-SMTPの起動
 tcpserver -u ooo -g ooo 0 25 qmail-smtpd &
 一部伏せ字
-POP3の起動
 tcpserver 0 110 qmail-popup ns.ayamizu.com qmail-pop3d Maildir &

TCP/IPのパケット監視はこの tcpserverが一手に仕切っているのです。
でですね、私の場合は SMTPにはホスト名を引かない様に

  tcpserver -HR -u 502 -g 502 0 25 qmail-smtpd &

このような-HRというパラメータを付けていたわけです。
このパラメーター、詳しくはtcpserverのマニュアルを見ていただくとしてhttp://cr.yp.to/ucspi-tcp/tcpserver.html
リモートホスト情報を引かない様にする項目は-HRというパラメーターであることがわかります。
-HRの部分だけ抜粋しますと
  -H: Do not look up the remote host name in DNS; remove the environment variable $TCPREMOTEHOST. To avoid loops, you must use this option for servers on TCP port 53.
  -R: Do not attempt to obtain $TCPREMOTEINFO from the remote host. To avoid loops, you must use this option for servers on TCP ports 53 and 113.
です。これで53(DNS)や113(indentd)への検索を止められます。特に-Rの方ですね。
で、この文面は非常に誤解しやすす、引かないようにする為には-HRをつけるのですが、もしかしたら、「-HRをつけると引く」 という意味に読み取るのか?と思って試したのでしたがやっぱりつけると止まるので正解の訳でした。

なんでダメなんだろう
POP before SMTP はちょっと複雑です。

それぞれ別々に機能しているはずのpopとsmtpですが、POP before SMTP を実装する為に、SMTPへのリクエストがPOPを稼動させているのではないか?
どこにもそんなことはかいてありませんがそうとしか思えません。

SMTPもPOPも relay-ctrl という仲介役でPOP before SMTPの機能を実装しています。
それまで設定していた両者の起動手順をここに書いてみます
-SMTPの起動
/usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/tcpserver -HR -u ooo -g ooo 0 25 /usr/local/bin/relay-ctrl-check /var/qmail/bin/qmail-smtpd &

-POP3の起動
/usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup ns.ayamizu.com /bin/checkpassword /usr/local/bin/relay-ctrl-allo
w /var/qmail/bin/qmail-pop3d Maildir &

何がなんだかわからないですね。見やすいようにパスを消してコマンド名だけに限定して書き出すと

-SMTPの起動
envdir relay-ctrl tcpserver -HR -u ooo -g ooo 0 25 relay-ctrl-check qmail-smtpd &

-POP3の起動
envdir relay-ctrl tcpserver 0 110 qmail-popup ns.ayamizu.com checkpassword relay-ctrl-allow qmail-pop3d Maildir &

こんな感じです。両者にrelay-ctrlが微妙にからんでいて、更にパスワードチェッカーがからんでいてどう関連しているかわかりにくいですね。
でもなんだかSMTPからrelay-ctrl経由でpopへ飛んでいるのかもしれないというそんな気がしなくもありません。でも不明です。


詳細は不明ではあるのですが、
結果というか対策はとっても単純でした。
SMTPの起動
  と
POPの起動
  とで
 envdir relay-ctrl tcpserver -HR 0 110 qmail-popup ns.ayamizu.com checkpassword relay-ctrl-allow qmail-pop3d Maildir &
このように tcpserverの後に-HRオプションを付けて、リモートホストの情報を引かないようにする事で113の発信は止まることが確認できました。
そして、少なくとも、popの起動に -HRをつけないと、smtpリクエストにpopから113が発信される状態も経験しています。


意図的に使う場合もあるでしょうが、無くても問題ない、逆に使うと、動作が遅くなることが可能性としてあり、パケットも無駄という、そんなidentdです。不要なものは停止しておきましょう。

2002.5.20