本番環境の Discourse のログを定期的に確認したところ、Poll Mailbox ジョブが以下のエラーで失敗していることに気づきました。
Job exception: SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate)
関連する注意点:
- このインスタンスは、Digital Ocean 上の標準的な Discourse インストールで、LetsEncrypt 証明書を使用しています。サーバー上には他に何もありません。
- Pop3 メールインポートは、数カ月にわたって問題なく動作していました。
- Gmail 側で問題の兆候(不審なログインなど)は見当たりません。
同じエラーについて言及している興味深いトピックがこちらにありますが、これは実際に自己署名証明書を使用しているインストールに関するもののようです: https://meta.discourse.org/t/reply-by-email-ssl-self-signed-certificate-error/30868。
関連するサイト設定は以下の通りです:
pop3 polling enabled: true
pop3 polling ssl: true
pop3 polling openssl verify: true
pop3 polling period mins: 5
pop3 polling host: pop.gmail.com
pop3 polling port: 995
pop3 polling username: // a gmail username
pop3 polling password: // a gmail password
pop3 polling delete from server: true
当初、pop3 polling enabled の切り替えを試みましたが、効果はなく(エラーも返されませんでした)、コンテナの再構築も行いました。最終的に、pop3 polling openssl verify を false に変更したところ、Poll Mailbox ジョブは再び動作するようになりました。
現時点ではこれが何を意味するのか確信が持てませんが、とりあえず報告しておきます。
余談ですが、Poll Mailbox ジョブが失敗している場合、管理 UI somewhere にログを残すことを検討すると良いでしょう。そこでの「サイレントな」失敗やメッセージのインポート失敗は、大きな問題を引き起こす可能性があります。