可能的邮件 bug:证书验证失败 (无法获取本地颁发者证书)

在新的服务器上设置 Discourse 安装时,邮件出现了问题(certificate verify failed (unable to get local issuer certificate)),尽管我可以通过 Mac 和 iPhone 从同一个地址发送/接收电子邮件(没有任何证书错误)。

再次按照此指南进行了测试:mail:test-smtp-auth-telnet-测试通过-235 [] 2.7.0 Authentication successful`。

最后,我按照 @Falco 在另一个帖子中的建议,在 app.yml 中添加了以下内容:

  DISCOURSE_SMTP_ENABLE_START_TLS: false
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

但这仍然感觉像是一个 bug,因为使用相同的电子邮件和凭据在其他地方都可以正常工作,所以我想在这里发帖,以防万一。

您看到的错误与邮件协议有关,并非地址特定。由于某种原因,您的 Discourse 实例在与目标邮件服务器协商 TLS 连接时失败。您通过在邮件发送连接期间关闭 TLS 协商来修复了此问题。

当您使用手机时,它可能通过不同的服务器发送消息,或者如果目标服务器相同,那么手机能够正确协商 TLS。

2 个赞

有什么办法可以排查这个问题吗,Chris?

Mac 和 iPhone 都已配置为使用同一个 mail.domain 服务器发送邮件,并且按照 此测试 进行操作是成功的(尽管我不确定这与 Discourse 的操作有多大的相似性)。

如果您的时钟偏差太大,证书可能会显示已过期,但实际上并未过期。这可能是因为您的邮件提供商使用的 SSL 库不完整。

不建议点击“禁用安全”按钮。

1 个赞

服务器上的时间是正确的,Sam。Discourse 需要邮件服务器具备哪些 SSL 库?

这很奇怪,因为(苹果)邮件通常会很快警告问题,但在我的 Mac 上相同的邮件却能正常工作。

我能想到的唯一其他事情是 DNS 传播,因为这是一个新服务器,并且邮件主机在旧服务器上略有不同(但邮件托管在与论坛相同的服务器上,所以不确定这是否是问题所在)。

1 个赞

谢谢 Sam!搞定了!

不知何故,我忘了在 Postfix 中配置 chain.pem :smiling_face:

1 个赞

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