Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

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

はてなバグ? (1)

はてなダイアリーへの要望 再現条件判明?

 -a
 >||
 b
 ||<
 c

のような構造があると、c が p タグで囲まれなくなり、その点からその日の終わりまでレイアウトが変になる。a の後に改行を入れるとこの現象は発生しない。実際に試すと……

はてなバグ? (2)

  • 「順序なしリスト」の後に、
改行を入れずに「入力した内容がそのまま表示される整形済みテキストブロック」を入れる

その後に「普通の段落」を入れるとインデントが一段低いことが分かる。"|| <" と "c" の間に空行があってもなくても結果は同じみたい。