我终于解决了这个问题。
问题出在 Discourse 默认使用的发件人邮箱地址。该地址是根据设置中输入的主机名构建的(在我的例子中类似于 v220200xxxxxxxxxxxx.powersrv.de),从而生成了发件人地址 noreply@v220200xxxxxxxxxxxx.powersrv.de,该地址被 SMTP 服务器拒绝。
那么,我为什么要使用这个不友好的主机名呢?只是因为这台服务器旨在替换现有的服务器,而现有服务器对于我们日益壮大的 Discourse 社区来说已经太小了。我正在准备和测试新服务器,稍后将切换 DNS 设置以指向这台新服务器。我只是想节省时间,避免在这里创建临时的友好 DNS 设置。
如何解决这个问题?
在 app.yml 文件末尾查找以下行:
## 如果您想为首次注册设置“发件人”邮箱地址,请取消注释并修改:
## 在收到第一封注册邮件后,请重新注释该行。它只需要运行一次。
取消注释并修改最后一行,将其更改为您的 SMTP 服务器接受的有效发件人地址,例如:
- exec: rails r "SiteSetting.notification_email='USER@DOMAIN.TLD'"
现在运行 ./launcher rebuild app 使更改生效,好了——现在激活邮件已发送,您可以激活管理员账户并完成设置。
我是如何发现的?
我向网络托管服务提供商申请了一个新的邮件账户,并使用这些 SMTP 凭证重新运行了 Discourse 设置——并如预期收到了激活邮件。因此,我知道问题一定与 SMTP 设置有关(而与 Ubuntu / Docker / Discourse 设置的其他方面无关)。
在使用另一个 SMTP 服务器激活管理员账户后,我进入 设置 > 邮件 > 已跳过,发现了发送激活邮件失败的尝试:553 5.7.1 <noreply@v220200xxxxxxxxxxxx.powersrv.de>:发件人地址被拒绝:不属于用户 USER@DOMAIN.TLD
结论
我想提请 Discourse 开发团队注意以下功能请求:建议 - 允许在设置期间可选地设置系统邮件“发件人”。请考虑测试安装(例如,作为实际升级实例前的副本以运行一些测试)可能没有友好的主机地址的情况。如果不必进入 app.yaml 就能完成这些设置,将会顺畅得多。此外,我认为让管理员有权选择使用不绑定于 Discourse 主机名的邮箱地址是个好主意。
谢谢 ![]()
同时也感谢 @codinghorror 指点我如何发布代码块。