EHLO が遅い件解決 (1)
原因は、サブネット内部への、宛先ポートを TCP/133 とするパケットを遮断していたせいでした。qmail(に限らず MTA 一般の話?)は SMTP EHLO コマンドを受信すると、接続元のホストに対して IDENT プロトコルで接続を試みます。待たされていたのは、このパケットをファイアウォールで遮断していたため、タイムアウト待ちになるのが原因でした。
ルータ の iptables に次のように仕込むことで解決。
$IPTABLES -A out-in -p tcp --dport 113 -j REJECT --reject-with tcp-reset
out-in チェインは、FORWARD チェインから、SRC が外部ネットワークで DEST がサブネット内部の場合に飛ぶ先です。flatten に書くならこんな感じ?
iptables -A FORWARD -i $ETH_OUTER -p tcp --dport 113 -j REJECT --reject-with tcp-reset
$ETH_OUTER はルータの外側 NIC。eth0 なり eth1 なり……
この問題が示す現象としては、次のようなものがあります。
- MUA で該当サーバを SMTP サーバとしてメールを送信すると、接続開始時になんか待たされる
- 該当サーバにログインして mail コマンド等で送信すると問題ない
- DNS はサーバ・クライアントの正引き・逆引きどれも問題なし
- telnet example.com 25 すると、初回の EHLO だけ待たされる
- サーバとクライアントの間にファイアウォールがあって、パケットフィルタリングをしている
- 遅いときはこんな反応をする
Connected to mail.example.com. Escape character is '^]'. EHLO client.subnet.example.com (この行を入力して Enter すると待たされる) 220 mail.example.com ESMTP 250-mail.example.com 250-PIPELINING 250 8BITMIME
- 問題ないときは、こんな反応をする
Connected to mail.example.com. Escape character is '^]'. 220 mail.example.com ESMTP (入力より先にまずこの行が返ってくる) EHLO client.subnet.example.com (この行を入力するとすぐ次の行が返る) 250-mail.example.com 250-PIPELINING 250 8BITMIME
詳しくはここを参照。http://unixluser.org/techmemo/ident/
今回の件とはあまり関係ないけれど、このへんも参考になります。http://i.loveruby.net/diary.1/200201.html#d02_1
EHLO が遅い件解決 (2)
8さんが指摘してくれた tcpserver のオプションは、
- -H 接続してきたホスト名に対して逆引きをしない
- -R 接続してきたホストに対して IDENT 接続をしない
でした。後者が原因だったわけね。
はてなバグ? (1)
はてなダイアリーへの要望 再現条件判明?
-a >|| b ||< c
のような構造があると、c が p タグで囲まれなくなり、その点からその日の終わりまでレイアウトが変になる。a の後に改行を入れるとこの現象は発生しない。実際に試すと……
はてなバグ? (2)
- 「順序なしリスト」の後に、
改行を入れずに「入力した内容がそのまま表示される整形済みテキストブロック」を入れる
その後に「普通の段落」を入れるとインデントが一段低いことが分かる。"|| <" と "c" の間に空行があってもなくても結果は同じみたい。