treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Postfixでメールリレーしてたがエラーに

Sendgridにメールをリレーしている(リレーサーバ的に使っている)Postfixで
Host or domain name not found. Name service error for name=%SMTP Host Name% type=AAAA: Host not found, try again
が出たときの対処法のご報告。

ログで動作不調を発見

定期的なログチェックでPostfixがメールの送信に失敗していたのを発見しました。
--------------------------------------------------------------
%DATE%%TIME% %HOSTNAME% postfix/smtp[qID]: %ID%: to=<%mailAddress%>, orig_to=<%from MailAddress%>, relay=none, (略), dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.sendgrid.net type=AAAA: Host not found, try again)
%DATE%%TIME% %HOSTNAME% postfix/smtp[qID]: %ID%: to=<%mailAddress%>, orig_to=<%from MailAddress%>, relay=none, (略), dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.sendgrid.net type=AAAA: Host not found, try again)
%DATE%%TIME% %HOSTNAME% postfix/smtp[qID]: %ID%: to=<%mailAddress%>, orig_to=<%from MailAddress%>, relay=none, (略), dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.sendgrid.net type=AAAA: Host not found, try again)
--------------------------------------------------------------
mailqで見てみると、いくつかのログメールが失敗していた。
こんな感じ。

f:id:treedown:20191125232323p:plain

--------------------------------------------------------------
%ID% %byte% %DATE% %TIME% MAILER-DAEMON
(Host or domain name not found. Name service error for name=smtp.sendgrid.net type=AAAA: Host not found, try again)
%mailaddress%
--------------------------------------------------------------

AAAAを参照しようとして、ホストが見つからないぞ、と申しております。

IPv4の強制

ひとまず、Postfixのconfファイル(main.cf)で対処することにしました。
(理由は後述)

f:id:treedown:20191125232357p:plain

Postfixの設定ファイル「/etc/postfix/main.cf」に、

inet_protocols = ipv4

この一行を追加して、IPv4での通信を強制することにしました。
完了後にはPostfixをリスタートしてプロセスを再起動することで、追加した設定項目が有効になります。
ちなみにキューに滞留していたメールは「sudo postsuper -r ALL」を実行して再送を実行させると、流れていきました。
実際しばらく経ってから
# mailq
Mail queue is empty
となりました。これでひとまずトラブル解消。

ホントはAAAAでもホスト名が解決できるようにする方がよさそうな気もしますが、sendgridでの対応が見当たらなかったし、ネットワークも(自分のインフラではないので)都合良く勝手に環境を変更するわけにもいかない、という事情があって、今回はサーバで上記対処にとどまることになりました。

AAAA=IPv6での名前解決に失敗していた、ということで、自身が可能なAレコード(IPv4)の名前解決に動作を変更したということで、一旦解決。