受信メールが処理されない、ログに「Email can not be processed: 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'

受信トレイを確認しましたが、怪しいメールは見つかりませんでした…

エラーは拒否リストに表示されておらず、実際、何もリストに表示されなくなっています。

すべてのメールが処理されずに受信トレイに残っているようです。

これは、メールをポップ経由でポーリング中に、受信トレイが大きすぎてタイムアウトが発生した際に一度発生しました

受信したメッセージは削除していますか?

いいえ、ですが、メールはそれほど多くありません。約30通です。

そして、実際にはそれらを処理する必要があります…

こちらを試されましたか?

「いいね!」 1

はい、この設定は以前から有効になっています。

メールプロバイダーに何か問題があると思います。奇妙なことが起こっています…

助けようとしてくれてありがとう。もし解決したら、お知らせします!

私の記憶が正しければ、実行中のDiscourseのコードを修正して、空のメールを無視するようにしました。

18行目の前に return if @mail.blank? を挿入してみてください。

または、sidekiqから失敗したジョブを削除してみてください。

(このような実験を行う前に、バックアップを取ることをお勧めします)

「いいね!」 2

それが修正されれば、これは Bug に移動されるべきです。

「いいね!」 2

お待ちください。メールサーバーに問題があるようです。空のメールエラーに加えて、読み取りタイムアウトも発生していますが、これは元々メールプロセスとは関係ないと思っていました。

現在、メールホスティングサービスと連絡を取っており、彼ら側にも問題があることが確認されました。

詳細が分かり次第、お知らせします!

「いいね!」 2

犯人は特定できました。原因は1通のメールでした。そのメールを別のフォルダに移動したところ、残りのメールは正常に処理されました。

IMAPクライアントではそのメールは問題なく表示されます。もしよろしければ、そのメールの生の内容(ヘッダーを含むすべて)をプライベートメッセージで送りますので、プロセスが停止する原因をチェックしてデバッグしていただけますでしょうか。

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

まだそのメールをお持ちでしたら、確認させていただくことは可能でしょうか?もしお持ちでしたら、プライベートメッセージで拝見できれば幸いです :+1: