ネームサーバー、メールサーバー、メーリングリストサーバーをサービス中のマシンに、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 を検索していることがわかりました。