bind Unbound mailman の関係

ネームサーバー、メールサーバー、メーリングリストサーバーをサービス中のマシンに、LAN側のネームサーバーに Unbound を入れてみました。

Unbound とはDNSキャッシュサーバ(DNSリゾルバ)なのですが、キャッシュサーバーに特化していますので、応答速度など大変優れています。
(bind の 10倍以上は当たり前のような速度です)

インストールと設定は簡単でしたし、すぐに動き出して速度もミリセコンドの領域で1桁早くなって、もうとても幸せに・・・

その後、2~3週間は何も問題が起きずにいたのですが、メーリングリストが配信されないという事に気が付きました。

MTA は Postfix、メーリングリストは mailman で行っていたのですが、mailman が登録会員向けに配信を開始しないのです。ログを見て気が付いたのですが、ローカル配送に使用する localhost が見つけられないようでした。

$ dig @127.0.0.1 localhost.
; <<>> DiG 9.7.2-P2 <<>> @127.0.0.1 localhost.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50248
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;localhost.                     IN      A

;; ANSWER SECTION:
localhost.              10800   IN      A       127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)

と、正常に応答があるのですが、mailman は見つけられないようです。

$ telnet localhost 25
localhost/25: Name or service not known

でも見つからないことがわかりました。いろいろと調べてみたのですが、よくわからず、しかも早急に復旧させたかったため /etc/hosts に localhost を書いて、一件落着としました。

何か情報をお持ちの方いましたら、コメントをお願いします。

その後、unbound.conf に
local-data: “localhost. IN A 127.0.0.1″local-data: “localhost.exsample.jp. IN A 127.0.0.1”
を追記することで、/etc/hosts に localhost を宣言しなくても正しく動作するようになりました。unbound は OSの名前解決手法を使用せず、/etc/resolv.conf の内容に従って独自に検索しているようです。
$ host localhost
を実行すると localhost.exsample.jp を検索していることがわかりました。