所以……我已经折腾了大约 6 个小时,想着终于得求助一下了。
我在服务器上部署了 Discourse,启动了容器,并尝试注册第一个管理员账户。
问题在于:我没有收到注册邮件。
我已经做了以下操作:
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 -- 跳转到文件末尾
我尝试了不含任何字符的标准密码,也尝试了带引号和不带引号的情况,但结果仍然没有变化。
发送邮件失败。
进展!在将密码用双引号包裹成 "'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 的时间到了。