Support 频道里有很多关于这个问题的帖子,既然我们似乎已经找到了原因,我认为创建一个 Contribute > Bug 主题来专门描述这个实际问题是个好主意。该主题仅包含以下内容:Email Hostname Certificate Mismatch Causing sidekiq Queue Overload, Severe Site Instability - #47 by RGJ
长话短说:
自 2.9.0 beta 4 版本以来,以下设置
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE 和 DISCOURSE_SMTP_ENABLE_START_TLS 不再能正常工作。
这似乎与迁移到 Rails 7 有关,该版本将 net-smtp 从 0.1.0 更新到了 0.3.1,从而改变了这两个连接参数的默认值。
smtp gem 调用 net-smtp 的方式并不会禁用 enable_starttls_auto 和 openssl_verify_mode,它仅在启用时才进行设置。
关于 smtp gem 的相关报告:SMTP: allow disabling starttls_auto since it's now true by default in Ruby 3 - Pull Request #1435#issuecomment-1044852765 - mikel/mail - GitHub
从技术上讲,这个 bug 不在 Discourse 的代码范围内,因为它发生在 smtp gem 中,但由于该 gem 目前为 Discourse 进行了 fork,我认为这确实值得创建一个 Contribute > Bug 主题。如果无法轻松修复,那么可以从文档中移除这些参数,并显示弃用警告,这样至少可以消除所有的困惑。