POP3 轮询 SSL 问题

在生产环境的 Discourse 日志中进行常规检查时,我注意到 Poll Mailbox 任务因以下错误而失败:

任务异常: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: // 一个 Gmail 用户名
pop3 polling password: // 一个 Gmail 密码
pop3 polling delete from server: true

我最初尝试切换 pop3 polling enabled 设置,但没有任何效果(也未返回错误)。我还重新构建了容器。最后,我将 pop3 polling openssl verify 改为 false,Poll Mailbox 任务随即恢复正常运行。

目前我尚不确定具体原因,但先在此报告该问题。

另外,如果 Poll Mailbox 任务失败,最好在管理员界面中记录日志,因为这种“静默”失败以及邮件导入失败可能会引发一些问题。

3 个赞

我在其中一个网站上看到了同样的问题。我正在查看…

2 个赞

这是由 TLS 1.3 与 Ruby 之间的不兼容性引起的。我已提交了一个临时解决方案,并将尝试在源头修复此问题。

我同意,我们应在管理仪表板中显示所有 POP3 错误,而不仅仅是超时和认证错误。我也会修复这一点。

10 个赞