【postfix】メールが送られなくなっていた話

私はVPSをいくつか契約しています。
その全てにlogwatchをインストールしていて、1日1回メールでレポートを送信するようにしています。

先日までは問題なく届いていたのですが、ある日を境に1つのVPSからだけメールが届かなくなりました。
何か設定を変えたわけではないのに何故…。

再びメールが届くように対応したのでその件を記事にしたいと思います。

現象

前述の通り、レポートが届かなくなっていました。
試しに、レポートが送られてくるのとは違うメールアドレスにメールを送ってみたのですが同様に届きませんでした。
送信先に問題がある、ということではなさそうです。
また、メール受信は問題なく行うことができました。

メールログの確認

VPSのメールログを確認すると下記のようなメッセージが出力されていました。

status=deferred (Host or domain name not found. Name service error for name={ドメイン名} type=MX: Host not found, try again)

(一部抜粋&一部伏せ字)

原因

送ろうとしているメールアドレス(ドメイン)の名前解決ができないので送れない、ということのようです。

通常の名前解決は問題なし

VPSに入ってdigコマンドで当該ドメインの名前解決を試みたところ、問題なくできました。
どうやらMTAであるpostfixにおいてのみ名前解決ができないということのようです。

resolv.confの確認

/etc/resolv.confにリゾルバのIPアドレスが登録されています。
通常はこのIPアドレスに対して名前問い合わせが行われます。
postfixもこれを参照していれば問題ないはずなのですが、送られていないということは他のどこかを見ている可能性が高そうです。

いろいろと調べると/var/spool/postfix/etc配下にもresolv.confがあるようです。
postfixが起動する際に/etc/resolv.confからコピーしているようなのですが、今回のケースでは中身が空っぽでした。

対応

postfixを再起動させたところ、/var/spool/postfix/etc配下にresolv.confがコピーされ、正常に送信できるようになりました。


まとめ

よくよく考えると、メールが送信されなくなったタイミングはVPSをリブートさせたタイミングと一致するような気がします。
様々なサービスが起動していくタイミングがたまたま良くなくて、resolv.confのコピーに失敗したのかもしれません。
はっきりとした原因は不明のままですが、とりあえずは正常に送信されるようになったので解決ということにしたいと思います。

同じような現象が発生している方の参考になれば幸いです。