이메일 전송이 중단됨 (이름 해석 일시적 실패)

안녕하세요,

오늘 관리자 화면에서 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'

Linode에서 Discourse 인스턴스를 호스팅하고 계신가요? (특히 Atlanta 리전이 해당될 수 있습니다) 지난 1~2시간 동안 Linode의 기본 DNS 서버가 mailgun.org 도메인을 요청할 때 SERVFAIL을 반환하는 문제를 겪었습니다.

이유는 정확히 모르겠지만, 임시로 Google DNS로 전환한 후 약 20~30분이 지나자 Linode의 DNS가 다시 mailgun.org 도메인을 정상적으로 해석하기 시작했습니다.

Simon, 안녕하세요!
빠른 답변 감사합니다. :slightly_smiling_face:
저는 Vultr 프랑크푸르트에서 호스팅을 하고 있어요. 이런 일은 이전에는 한 번도 없었거든요. Mailgun이 장애가 났을 때만 이런 일이 있었는데, 확인해 보니 모든 시스템이 정상 작동 중이라고 나와요.

Mailgun에서 사용하는 DNS에 문제가 있는 것 같다는 생각이 듭니다. DNS 캐싱은 좀 까다로운 부분이 있어서, 하나의 네임서버는 거의 즉시 영향을 받는 반면 다른 네임서버는 전혀 인지하지 못하거나, 적어도 그 문제가 전파되지 않는 경우가 있습니다.

구글의 공용 DNS(8.8.8.8)는 여전히 올바르게 해석되고 있는 것으로 보이므로, 이를 일시적으로 사용하거나 서버에 영구적인 폴백으로 추가하면 이메일 전송이 다시 정상화될 것입니다.

시몬, 감사합니다! :slightly_smiling_face: 완벽하게 작동합니다! :heart: