Discourse 连接到 SMTP 服务器但无法通过其发送电子邮件

无法收到首封用户注册邮件:

Discourse Doctor 显示:
SMTP 服务器连接成功。
邮件发送失败。

然而:
通过 Telnet 连接 mail.domain.com 的 587 端口成功,EHLO 命令也能正常执行。

该如何解决?任何帮助都将不胜感激。

您可以查看邮件服务器日志。无论是什么错误,Discourse-doctor 目前都无法识别。

您需要自行搜索如何配置 exim4。

参考链接:7. The default configuration file

当退信消息遇到永久性失败时,会发生“冻结”(Freezing)现象。这通常是因为引发退信的原始邮件的发件人地址无效,导致退信无法送达。

我的推测是,您可能需要更改通知邮箱地址,或者配置 exim 以使用您的子域名。

你是不是忘记重新构建你的容器了?

无论如何,你可以通过以下方式检查你的容器:

docker exec -it app rails c

然后,在 Rails 控制台中执行:

[1] pry(main)> ENV

这样你就可以轻松查看所有 SMTP 环境变量了。

Exim4 已测试验证其能够发送和接收邮件。
Discourse 已使用 discourse-setup 重新构建,并配置了所有正确的凭据:

Hostname      : forum domainname com
Email         : user@test com
SMTP address  : mail forum domainname com
SMTP port     : 587
SMTP username : postmaster@forum domainname com
SMTP password : password

随后运行 discourse-doctor 以测试 Discourse 能否从本地 exim4 邮件服务器发送邮件。

discourse-doctor 显示:
“SMTP 服务器连接成功。”
“发送邮件失败。”

然而,exim4 日志中没有任何错误。

为什么发送邮件会失败?
这是一个常见问题吗?

请注意,SMTP 地址为:mail forum domainname com,
是否应该在开头包含“mail”?

discourse-doctor 显示 Discourse 确实连接到了:
mail forum domainname com,
但 Discourse 并未实际发送邮件。

我的猜测是,您的论坛主机名与邮件服务器发送的域名不匹配。

Discourse 发送邮件时使用的 hostname 是什么?
它使用的是 forum.somedomain.com 吗?
还是
它使用的是 mail.forum.somedomain.com

默认情况下是 email@forum.somedomain.com,我记得是这样。

这会让一些人感到困惑,因为他们期望的是

email@somedomain.com