nparab
(Nilesh Parab)
1
我已在 DigitalOcean 上使用一键安装应用部署了 Discourse,并启用了 Let’s Encrypt HTTPS 支持。但我没有收到管理员邮箱的激活邮件。运行 ./discourse-doctor 时,在“邮件发送”步骤出现以下错误:
Net::ReadTimeout
我将 Discourse 托管在子域名上,而我的主站点(主域名)和邮件服务器位于 Hostgator。主域名的 SPF 和 DKIM 记录已生效。我已将 Discourse 的邮件发送配置为端口 465,这是 Hostgator 邮件服务器支持的端口。
有人能帮忙分析一下可能的问题出在哪里吗?
提前感谢。
编辑:当我尝试使用端口 587 运行 ./discourse-doctor 时,出现了另一个错误,如下所示:
发送邮件失败。
nparab
(Nilesh Parab)
2
更新:我通过使用端口 587 并在 app.yaml 文件中设置以下值,使激活邮件功能正常工作:
DISCOURSE_SMTP_ENABLE_START_TLS: false
登录管理界面后,我看到了以下 Sidekiq 错误(可能是之前遗留的):
Jobs::HandledExceptionWrapper: Wrapped OpenSSL::SSL::SSLError: 主机名 “mail.mydomain.com” 与服务器证书不匹配
现在,我明白这个错误之所以消失是因为我将 DISCOURSE_SMTP_ENABLE_START_TLS 设置为 false,但这样做是正确的吗?
Johani
(Joe)
3
你好,欢迎加入 Meta,@nparab 
很抱歉,我们无法支持 DigitalOcean 提供的一键安装功能,因为它并非 Discourse 官方推荐的部署方式。我们强烈建议你遵循我们的官方安装指南。
pfaffman
(Jay Pfaffman)
4
该消息的含义一目了然,表明您的邮件服务器配置有误。
nparab
(Nilesh Parab)
5
但如果我通过以下命令连接:
openssl s_client -starttls smtp -crlf -connect mail.mydomain.com:587
它可以正常连接,我甚至能够发送邮件。如果邮件服务器确实配置有误,那么此命令也不应该工作,对吗?
更新:执行以下命令时:
openssl s_client -servername mail.mydomain.com -starttls smtp -crlf -connect mail.mydomain.com:587
它返回的是 mydomain.com 的证书,而不是 mail.mydomain.com 的证书。
这就是您所说的配置错误吗?
目前,我已在 app.yml 文件中将 Discourse 的 DISCOURSE_SMTP_ADDRESS 配置为 mydomain.com(而不是 mail.mydomain.com),以使证书匹配。这会导致任何问题吗?