メール送信停止(名前解決の一時的な失敗)

こんにちは、

本日管理者画面で 189b4c4992 にアップデートしたところ、それ以降メールの送信が停止しています。Mailgun EU を使用しています。

/logs に以下のエラーが表示されています:Job exception: getaddrinfo: Temporary failure in name resolution
また、Sidekiq には以下が表示されています:Jobs::HandledExceptionWrapper: Wrapped SocketError: getaddrinfo: Temporary failure in name resolution

この問題を修正するためのご助力をいただけますと幸いです!:slightly_smiling_face:

バックトレース

Job exception: getaddrinfo: Temporary failure in name resolution

/usr/local/lib/ruby/2.7.0/net/smtp.rb:539:in `initialize'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:539:in `open'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:539:in `tcp_socket'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:549:in `block in do_start'
/usr/local/lib/ruby/2.7.0/timeout.rb:95:in `block in timeout'
/usr/local/lib/ruby/2.7.0/timeout.rb:105:in `timeout'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:548:in `do_start'
/usr/local/lib/ruby/2.7.0/net/smtp.rb:518:in `start'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:2141:in `do_delivery'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:253:in `block in deliver'
actionmailer-6.1.4.1/lib/action_mailer/base.rb:559:in `block in deliver_mail'
activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `block in instrument'
activesupport-6.1.4.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `instrument'
actionmailer-6.1.4.1/lib/action_mailer/base.rb:557:in `deliver_mail'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:253:in `deliver'
actionmailer-6.1.4.1/lib/action_mailer/message_delivery.rb:119:in `block in deliver_now'
actionmailer-6.1.4.1/lib/action_mailer/rescuable.rb:17:in `handle_exceptions'
actionmailer-6.1.4.1/lib/action_mailer/message_delivery.rb:118:in `deliver_now'
/var/www/discourse/lib/email/sender.rb:267:in `send'
/var/www/discourse/app/jobs/regular/user_email.rb:83:in `send_user_email'
/var/www/discourse/app/jobs/regular/user_email.rb:38:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
sidekiq-6.2.2/lib/sidekiq/processor.rb:196:in `execute_job'
sidekiq-6.2.2/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'
sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:138:in `call'
sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:143:in `invoke'
sidekiq-6.2.2/lib/sidekiq/processor.rb:163:in `block in process'
sidekiq-6.2.2/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.2.2/lib/sidekiq/job_retry.rb:112:in `local'
sidekiq-6.2.2/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.2.2/lib/sidekiq.rb:38:in `block in <module:Sidekiq>'
sidekiq-6.2.2/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.2.2/lib/sidekiq/processor.rb:257:in `stats'
sidekiq-6.2.2/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.2.2/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.2.2/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.2.2/lib/sidekiq/job_retry.rb:79:in `global'
sidekiq-6.2.2/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.2.2/lib/sidekiq/logger.rb:11:in `with'
sidekiq-6.2.2/lib/sidekiq/job_logger.rb:33:in `prepare'
sidekiq-6.2.2/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.2.2/lib/sidekiq/processor.rb:162:in `process'
sidekiq-6.2.2/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.2.2/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.2.2/lib/sidekiq/util.rb:43:in `watchdog'
sidekiq-6.2.2/lib/sidekiq/util.rb:52:in `block in safe_thread'

Discourse インスタンスは Linode でホストされていますか?(おそらくアトランタ、特に)私は過去 1〜2 時間以内に、Linode のデフォルト DNS サーバーが mailgun.org ドメインの要求に対して SERVFAIL を返すという問題に遭遇しました。

なぜそのような状態になったのかは明確ではありませんが、一時的に Google DNS に切り替えたところ、少し経ってから(20〜30 分程度だったと思います)、Linode の DNS が再び mailgun.org ドメインを解決するようになりました。

こんにちは、Simon さん。
素早い返信をありがとうございます。:slightly_smiling_face:
私は Vultr のフランクフルトでホスティングを行っています。以前はこのようなことはなかったのですが、Mailgun がダウンした際のみ発生しました。確認したところ、現在は「すべてのシステムが正常に稼働中」のようです。

Mailgun が利用しているプロバイダーに DNS の問題があるのではないかと疑問に思われます。DNS キャッシングは時に奇妙な動作をすることがあり、あるネームサーバーではほぼ即座に問題が発生しても、別のサーバーではそれに気づかないか、少なくともその情報が伝播しないことがあります。

Google のパブリック DNS(8.8.8.8)は現在も正しく解決しているようですので、一時的にそれに変更するか、サーバーに永続的なフォールバックとして追加すれば、メールの送信が再開されるはずです。

シモンさん、ありがとうございます!:slightly_smiling_face: 完璧に動作しています!:heart: