수신 이메일이 더 이상 처리되지 않으며, 로그에 '이메일을 처리할 수 없습니다: Email::Receiver::EmptyEmailError'가 표시됩니다

갑자기 시스템이 이메일 처리를 중단했습니다. 로그에서 다음 항목을 확인할 수 있습니다:

Message (7560 copies reported)

Email can not be processed: Email::Receiver::EmptyEmailError



Backtrace

/var/www/discourse/lib/email/processor.rb:183:in `log_email_process_failure'
/var/www/discourse/lib/email/processor.rb:29:in `rescue in process!'
/var/www/discourse/lib/email/processor.rb:16:in `process!'
/var/www/discourse/lib/email/processor.rb:13:in `process!'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:29:in `process_popmail'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:49:in `block (2 levels) in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each_mail'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:46:in `block in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-pop-0.1.2/lib/net/pop.rb:531:in `start'

수신함을 확인해 보았지만 의심스러운 메일을 찾을 수 없습니다…

실제로 거부 목록에 오류가 표시되지 않으며, 더 이상 아무것도 목록에 표시되지 않습니다.

모든 메일이 처리되지 않은 채로 수신함에 그대로 남아 있는 것 같습니다.

큰 받은편지함으로 인해 타임아웃이 발생하면서 pop을 통해 메일을 폴링하던 중 한 번 이런 일이 있었습니다.

수신된 메시지를 삭제하시나요?

아직 안 했어요, 하지만 메일이 그렇게 많지는 않아요. 30통 정도예요.

그리고 실제로 처리가 필요하거든요…

을 시도해 보셨나요?

네, 이 설정은 처음부터 활성화되어 있었습니다.

이메일 제공업체에 문제가 있는 것 같아요. 이상한 일들이 계속 일어나고 있거든요…

도와주려고 해줘서 감사합니다. 원인을 파악하면 알려드릴게요!

기억이 맞다면, 실행 중인 discourse에 패치를 적용하여 빈 메일을 무시하도록 처리했습니다.

18번째 줄 앞에 return if @mail.blank?를 삽입해 볼 수 있습니다.

또는 실패한 작업을 sidekiq에서 제거해 볼 수도 있습니다.

(이러한 실험 전에 백업을 하는 것이 좋습니다)

그리고 그게 문제를 해결한다면, 이 이슈는 #contribute:bug로 이동되어야 합니다.

조금만 기다려 주세요. 메일 서버에 문제가 있는 것 같습니다. 빈 메일 오류 외에도 원래 이메일 프로세스와 관련이 없다고 생각했던 읽기 시간 초과(read timeout) 오류도 발생하고 있습니다.

현재 메일 호스팅 업체와 상담 중인데, 상대방 측에 문제가 있는 것으로 확인되었습니다.

더 자세한 정보가 파악되는 대로 알려 드리겠습니다!

네, 원인을 찾았습니다. 문제가 된 건 메일 한 통이었는데, 해당 메일을 별도의 폴더로 옮기니 나머지 메일들이 정상적으로 처리되었습니다.

IMAP 클라이언트에서는 해당 메일을 정상적으로 확인할 수 있습니다. 원하시는 경우, 프로세스가 멈추는 원인을 확인하고 디버깅할 수 있도록 해당 메일의 원본 내용(헤더 포함)을 개인 메시지로 보내드리겠습니다.

혹시 그 이메일을 아직 가지고 계신가요? 가지고 계시다면 사적으로(사설로) 보내주시면 직접 확인해 보고 싶습니다 :+1: