情報ありがとうございます。谷川です。

From: Takeda Fumiya <t...@greentag.to>
Subject: [FreeBSD-users-jp 93124] Re: sendmail 'host name lookup failure'
Date: Sat, 07 Aug 2010 19:07:11 +0900
> > mail.rohm.co.jp.    10      IN      A       125.206.241.124
> > mail.rohm.co.jp.    10      IN      A       202.33.138.44
> > mail.rohm.co.jp.    10      IN      A       124.37.35.124
> 
> 上記のアドレスで、125.206.241.124の逆引きが SERVFAIL に
> なるからではないでしょうか。

sendmailは受信時には IPアドレスからの逆引によって host名(PTRレコー
ド)を取得し Receivedヘッダやログの記録に利用したり、更に求めた
host名から IPアドレスを正引きし forged であるか等の判断に利用し
たりもしており、その際には /etc/hosts --> DNS の順に(あるいは
/etc/nsswitch.confでの定義順に?)参照してくれるようです。
もしかして送信時にも /etc/hosts を参照してくれるのではないかと真っ
先に追加してみたのですが効果はありませんでした。
それで自力での解決は難しいと判断したわけです。

> 数年前に当方でもある特定のメールが送信エラーになるという問題が
> ありました。
> 調査したところ、メールエクスチェンジャのアドレスの正引きで、
> Aレコードは正常に引けるのですが、AAAAレコードで SERVFAIL
> が返されていました。正常なAAAAレコードの正引きでは、NOERRORか、
> NXDOMAINが返ります。
> そこで/etc/hostsにそのメールエクスチェンジャのアドレスを登録して、
> とりあえずしのぎました。

さすがに DNSの正引きができなく、他に IPアドレスを求める方法が無
ければ(/etc/hosts に登録が無ければ)どうすることもできないのです
が、上記のとおり Aレコードが引けるのなら何も AAAAレコードが引け
なくとも IPv4 で接続してくれたらいいのにと思います。どうして
IPv6 優先なのでしょうか。
また、なぜ /etc/hosts に IPv4アドレスを書いただけで今度は IPv6
にこだわらなくなるのかも腑に落ちないところです。(AAAAレコードが
引けなければ IPv6アドレスは不明なので /etc/hosts には書けないと
勝手に判断しています。)
この辺も sendmailの堅くて頑固なところだと思います。:-)

確かに sendmailもあるバージョンまでは送信時にも /etc/hosts を優
先的に参照してくれていたような記憶が私にもあるのですが、少なくと
も 8.14.4 は DNS優先なようです。(FreeBSD標準の sendmail.cf によ
るのかも知れません。)
もっとも MXレコード自体 DNSでしか引けないので、MXが引けたのなら
IPアドレスも Aレコードや AAAAレコード等の DNS上の情報から求めよ
うとするのは(/etc/hosts に頼ろうとしないのは)すごく納得のいく仕
様だと思っています。

リトライの度にログには必ず、
Deferred: Name server: mail.rohm.co.jp.: host name lookup failure
と記録が残ります。

% dig mx rohm.co.jp
;; ANSWER SECTION:
rohm.co.jp.             600     IN      MX      5 sfgw.rohm.co.jp.
rohm.co.jp.             600     IN      MX      10 mail.rohm.co.jp.

まず、優先順位の高い方の sfgw.rohm.co.jp が評価され次に
mail.rohm.co.jp が評価されるはずなので、sendmailからは 2台とも同
じ理由で「使えない奴」と判断されていそうです。:-)

# 他にも FreeBSD + sendmail を運用しているサイトはありそうなのに
# @rohm.co.jp ドメイン宛のメールが同じように障害になっている所は
# 無いのだろうか、、、
--
 谷川 達也  TANIKAWA Tatsuya
 mailto: tatsuy...@sannet.ne.jp
 PGP Key fingerprint = 1D 8D CB 10 8A 8B 67 B0  9A B9 9C 14 37 50 BC F5

メールによる返信