注册时管理员邮件出现问题

所以……我已经折腾了大约 6 个小时,想着终于得求助一下了。
我在服务器上部署了 Discourse,启动了容器,并尝试注册第一个管理员账户。
问题在于:我没有收到注册邮件。

我已经做了以下操作:

  • 确认 SMTP 在设置中配置正确,并使用在线测试工具 SMTP Test Tool 验证了这些设置确实有效(使用该网站进行测试)。
  DISCOURSE_SMTP_ADDRESS: MY_SMTP_HOST
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: MY_SMTP_USERNAME
  DISCOURSE_SMTP_PASSWORD: MY_SMTP_PASSWORD
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (可选,默认为 true)
  • 确保仅配置了一个邮箱用于管理员账户的初始设置。

  • 检查了 SSL 是否确实正常工作(确实如此!)。

  • 尝试重新安装 Ubuntu 两次,并严格按照网上发布的指南进行设置。

  • 检查了是否有任何网络防火墙阻止了出站或入站连接。

  • 能够从托管 Discourse 的服务器成功 telnet 到我的 SMTP 服务器。

  • 在 app.yml 末尾正确添加了以下内容:
    - exec: rails r "SiteSetting.notification_email='noreply@MY_WEB_SITE'"

目前我不知道还能尝试什么,谢谢。

如果您运行 discourse-doctor,它会显示明显的错误吗?

cd /var/discourse
./discourse-doctor

啊,对了,我忘了提这个。稍等,我重新运行一下以获取我注意到的输出。


==================== 邮件测试 ====================
要进行全面的测试,请从 http://www.mail-tester.com/ 获取一个地址。
或者,只需给自己发送一封测试邮件。
邮件测试地址?(输入 'n' 跳过)[MY_EMAIL]:
正在向 MY_EMAIL 发送邮件...
正在使用 smtp.MY_SMTP:587 测试向 MY_EMAIL 发送邮件。
SMTP 服务器连接成功。
正在向 MY_EMAIL 发送邮件...
发送邮件失败。
正在替换:SMTP_PASSWORD
正在替换:LETSENCRYPT_ACCOUNT_EMAIL
正在替换:DEVELOPER_EMAILS
正在替换:DISCOURSE_DB_PASSWORD
正在替换:正在向...发送邮件

==================== 完成! ====================
您是否希望提供此文件的公开版本?(Y/n)

不知何故我注意到“发送邮件失败”,尽管

如果您的密码中包含某些特殊字符,您是否尝试过用引号将密码括起来?

之前它被引号包围,但我遵循的在线指南中没有使用引号,我将再次尝试使用双引号 "

正在重新构建。

好的,已恢复。请稍等。

同样的错误:


==================== 邮件测试 ====================
若要进行全面测试,请从 http://www.mail-tester.com/ 获取一个邮箱地址。
或者只需给自己发送一封测试邮件。
用于邮件测试的邮箱地址?(输入 'n' 跳过)[MY_EMAIL]: MY_EMAIL
正在向 MY_EMAIL 发送邮件...
正在使用 MY_SMTP_SERVER:587 测试发送邮件。
SMTP 服务器连接成功。
正在向 MY_EMAIL 发送...
邮件发送失败。
正在替换:SMTP_PASSWORD
正在替换:LETSENCRYPT_ACCOUNT_EMAIL
正在替换:DEVELOPER_EMAILS
正在替换:DISCOURSE_DB_PASSWORD
正在替换:正在发送邮件到

==================== 完成! ====================
您是否希望提供此文件的公开版本?(Y/n)n
未生成公开可用的日志。

您可以使用以下命令查看此脚本的输出:
LESS=-Ri less /tmp/discourse-debug.txt

但在此之前,请务必熟悉以下前三个命令!!!

使用上述命令(称为 'less')查看文件时需知命令:
q              -- 退出
/error<ENTER>  -- 搜索单词 'error'
n              -- 搜索下一个匹配项
g              -- 跳转到文件开头
f              -- 向下翻页
b              -- 向上翻页
G              -- 跳转到文件末尾

我尝试了不含任何字符的标准密码,也尝试了带引号和不带引号的情况,但结果仍然没有变化。

发送邮件失败。

我建议您尝试配置 Mailgun。

我现在就试试。谢谢。

在尝试之前,我会先参考 Discourse app.yml doesn't like email password contain "#" - #15 by elijah

如果这不起作用,我会配置 Mailgun(作为最后的手段,因为我当前的邮件服务器上有很多邮件)。

进展!在将密码用双引号包裹成 "'mypass'" 后,出现了一个新的错误消息

==================== 邮件测试 ====================
为了进行可靠的测试,请从 http://www.mail-tester.com/ 获取一个邮箱地址
或者只需发送一封测试邮件给自己。
请输入用于邮件测试的邮箱地址(输入 'n' 跳过)[sender_email]: my_email
正在向 my_email 发送邮件...
正在使用 my_smtp:587 测试向 my_email 发送邮件。
======================================== 错误 ========================================
                                    意外错误

请求了 SMTP-AUTH,但缺少密钥短语

====================================== 解决方案 =======================================
这不是一个常见错误,目前没有推荐的解决方案!

请将上述确切的错误消息报告至 https://meta.discourse.org/
(如果您找到了解决方案,也请一并提交!)
=======================================================================================
正在替换:SMTP_PASSWORD
正在替换:LETSENCRYPT_ACCOUNT_EMAIL
正在替换:DEVELOPER_EMAILS
正在替换:DISCOURSE_DB_PASSWORD
正在替换:Sending mail to

==================== 完成! ====================
您是否希望提供此文件的公开可用版本?(Y/n)

手动使用 telnet 发送邮件似乎可以正常工作,但使用 Discourse 邮件时却不行,看来有些问题。

我在 production.log 中发现了以下内容,这是否导致了该问题?


Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second. Call stack ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second. Call stack ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second. Call stack ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Job exception: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

进一步排查发现 Job exception: SSL_connect returned=1 errno=0 state=error: dh key too small,看来是邮件服务器的 SSL 出了问题。Mailgun 的时间到了。