朝のメンテナンス作業中に、いくつかのメールが
deferral: Connected_to_xxx.xxx.xxx.xxx_but_connection_died._Possible_duplicate!_(#4.4.2)/
と言われて遅延しているのを見つけた。普段メールをやり取りしている会社相手だから「何でだろうなぁ...」と思案してふと気がついた。ルータのnet.inet.ip.mtudiscが0のままぢゃん。そうなのだ。会社のゲートウェイに使っているのはNetBSDでこさえたルータであり、ついこの間1.6.1にアップグレードしたばかりなのだが、こいつの/etc/sysctl.confにnet.inet.ip.mtudisc=1を加えるのを忘れていたのだ。以前ルータをLinuxからNetBSDに変更した時にも痛い目に遭っていたのに。
ということで、ルータ上でsudo sysctl -w net.inet.ip.mtudisc=1を実行した上で、メールゲートウェイでsudo svc -a /service/qmailを実行したらあっさり配送されましたとさ。この状態で1週間も放置していたんだからぞっとするね。
それにしても、NetBSDって何でnet.inet.ip.mtudiscがデフォルトで0なんだろう。確かにまぁマルチホームホストでフォワーディングするのでなければ不要な機能だとは思うが、だったらnet.inet.ip.forwading=1の時は同時にnet.inet.ip.mtudisc=1にしてくれればいいのにと思ってしまう。何か理由があるんだろうか。軽くぐぐった範囲ではわからなかった。
[5/28追記]
上記のように書いたが、やはり起点となるホストがnet.inet.ip.mtudisc=0だと同様の配送不具合は発生する。net.inet.ip.mtudisc=1にすれば解消する。ちょっとこのあたりの理解が間違っているようだ。いかんいかん...
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー