我已使用 Telnet 测试了 SMTP 服务器:
Telnet 成功连接到 SMTP 服务器。
Telnet 允许我通过 SMTP 服务器进行身份验证。
Telnet 允许我使用 SMTP 服务器成功发送邮件,我在 Telnet 中使用的值与 /var/discourse/containers/app.yaml 文件中的完全一致。
Discourse doctor 指出 Discourse 已成功连接到 SMTP 服务器。
但 Discourse doctor 也指出 Discourse 未能发送测试邮件。
因此,Discourse 存在阻止其发送邮件的缺陷。
HAWK
(Hawk)
2021 年1 月 20 日 02:32
2
我建议问题可能出在你的设置上,而不是 Discourse 本身的 bug。
2 个赞
Syonyk
(Russell Graves)
2021 年1 月 20 日 02:37
3
你碰巧在使用 smtp-relay.gmail.com 吗?也许是从 DigitalOcean 发出的?这个问题最近似乎出现了,但具体原因目前还不太清楚。
不。因为 SMTP 服务器如前所述运行正常,且 Discourse 已正确安装,并能正确显示要求管理员注册邮件的界面。然而,该邮件并未发送。
我正在使用与 Discourse Docker 容器位于同一台机器上的本地 SMTP 服务器。
我在 /var/discourse/shared/standalone/log/rails/production.log 中发现了一个错误:
渲染 layouts/email_template.html.erb
已渲染 layouts/email_template.html.erb(耗时:0.1 毫秒 | 分配:32)
已发送邮件 f915c15e-9c4d-4d4e-9527-81bc4984540c@forum.domain.com(63.7 毫秒)
作业异常:主机名 "mail.forum.domain.com" 与服务器证书不匹配
这个错误是什么意思?
上述错误消息似乎是在谈论服务器的 SSL 证书。
服务器上的 SSL 证书是正确的,并且具有正确的主机名。
这看起来是 Discourse 中的一个错误,导致 Discourse 无法正确检测服务器的 SSL 证书。
这听起来不像是 Discourse 本身的缺陷,更像是主机 DNS 解析器配置或 SSL 证书的问题。
由于 telnet 不使用 SSL,我想这就是为什么您发现它能正常工作。在 Linux 系统上,您可以尝试使用 OpenSSL 来测试连接并检查证书,这样或许能进一步排查问题。
以下信息或许会有所帮助:https://docs.pingidentity.com/bundle/solution-guides/page/iqs1569423823079.html
该网站的 HTTPS 功能正常,因为地址栏中显示了绿色挂锁。该网站的 SSL 证书没有任何问题。问题出在 Discourse 检测 SSL 证书的方式上。
Falco
(Falco)
2021 年1 月 20 日 14:28
12
该错误并非关于网站证书,而是关于您的 SMTP 服务证书。
2 个赞
Falco:
SMTP 服务证书
SMTP 服务证书仅是服务器的 SSL 证书,而非网站的 SSL 证书。服务器的 SSL 证书正确且运行正常。
在 Discourse 容器所在的同一台机器上配置本地 SMTP 服务器时,Discourse 并未明确指定 app.yml 中 SMTP 设置的确切正确值。这导致了大量的困惑和错误。
在 app.yml 设置中,Discourse 并未清晰说明 DISCOURSE_SMTP_ADDRESS 应为何值。
实际上,它应为 subdomain.domain.com ,而非 mail.subdomain.domain.com 。
正确值:
DISCOURSE_SMTP_ADDRESS: forum.domain.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@forum.domain.com
DISCOURSE_SMTP_PASSWORD: "password"
DISCOURSE_SMTP_ENABLE_START_TLS: true # (可选,默认为 true)
在发送初始注册邮件失败后出现的错误信息中,Discourse 也未明确说明“服务器证书”具体指代什么。该错误信息位于:
/discourse/shared/standalone/log/rails/production.log
“Job exception: hostname “mail.forum.domain.com ” does not match the server certificate"。
然而,实际上,“服务器证书”仅仅是服务器的 SSL 证书。
此外,在错误信息中,Discourse 错误地提到了“主机名”,而实际上所指代的正是 DISCOURSE_SMTP_ADDRESS。
由于 Discourse 的表述模糊,我们经历了一番挣扎。
解决方案很简单:将服务器的 SSL 证书设置为正确的 SSL 证书。
当该问题被发布到 Discourse 论坛时,出现了许多误导性且含糊不清的回答。
Discourse 应当修复这些问题。
2 个赞
现在 Discourse 诊断工具显示邮件已发送:
正在向 admin@email.com 发送邮件...
正在使用 forum.domain.com:587 测试向 admin@email.com 发送邮件。
SMTP 服务器连接成功。
正在向 admin@email.com 发送邮件...
邮件已被 SMTP 服务器接受。
然而,收件箱或垃圾邮件箱中均未收到该邮件。
如何解决此问题?
Syonyk
(Russell Graves)
2021 年1 月 20 日 22:43
16
查看您本地 SMTP 服务器的日志。如果 Discourse 已成功将其交付给 SMTP 服务器,那么后续操作便不再受 Discourse 控制。
Exim4 日志中出现了一条错误消息,它是什么意思?
2021-01-21 00:39:39 H=(localhost.localdomain) [172.17.0.2] X=TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=no F=<noreply@forum.domain.com> A=dovecot_plain:postmaster@forum.domain.com rejected RCPT <admin@email.com>: 发件人验证失败