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

**URL:** https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622
**Category:** Self-hosting
**Created:** [2020年四月11日 13:50 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622 "2020-04-11T13:50:56Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 13:50 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/1 "2020-04-11T13:50:56Z")

</div>

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

我已经做了以下操作：

- 确认 SMTP 在设置中配置正确，并使用在线测试工具 [SMTP Test Tool](https://www.gmass.co/smtp-test) 验证了这些设置确实有效（使用该网站进行测试）。

```plaintext
  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'"`

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

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [2020年四月11日 13:55 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/2 "2020-04-11T13:55:12Z")

</div>

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

```plaintext
cd /var/discourse
./discourse-doctor

```

---

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 13:55 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/3 "2020-04-11T13:55:31Z")

</div>

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

```plaintext

==================== 邮件测试 ====================
要进行全面的测试，请从 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)

```

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

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [2020年四月11日 13:58 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/4 "2020-04-11T13:58:14Z")

</div>

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

---

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 13:59 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/5 "2020-04-11T13:59:00Z")

</div>

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

正在重新构建。

好的，已恢复。请稍等。

同样的错误：

```plaintext

==================== 邮件测试 ====================
若要进行全面测试，请从 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 -- 跳转到文件末尾

```

---

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 17:00 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/6 "2020-04-11T17:00:12Z")

</div>

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

`发送邮件失败。`

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [2020年四月11日 17:16 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/7 "2020-04-11T17:16:29Z")

</div>

我建议您尝试配置 Mailgun。

---

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 17:25 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/8 "2020-04-11T17:25:36Z")

</div>

我现在就试试。谢谢。

在尝试之前，我会先参考 [Discourse app.yml doesn't like email password contain "#" - #15 by elijah](https://meta.discourse.org/t/discourse-app-yml-doesnt-like-email-password-contain/58437/15?u=rakthegoose%EF%BC%8C%E5%9C%A8%E5%AF%86%E7%A0%81%E5%91%A8%E5%9B%B4%E5%8A%A0%E4%B8%8A%E5%8F%8C%E5%BC%95%E5%8F%B7%EF%BC%8C%E6%9C%80%E5%90%8E%E5%86%8D%E8%AE%BE%E7%BD%AE%E4%B8%80%E4%B8%AA%E4%B8%8D%E5%90%AB%E4%BB%BB%E4%BD%95%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AF%86%E7%A0%81%E3%80%82)

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

---

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 17:52 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/9 "2020-04-11T17:52:50Z")

</div>

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

```plaintext
==================== 邮件测试 ====================
为了进行可靠的测试，请从 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)

```

---

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 18:07 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/10 "2020-04-11T18:07:11Z")

</div>

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

---

<div class="post-metadata">

### Author: ![RakTheGoose](https://avatars.discourse-cdn.com/v4/letter/r/e47774/32.png) [@RakTheGoose](https://meta.discourse.org/u/RakTheGoose)
#### Post date: [2020年四月11日 18:28 UTC](https://meta.discourse.org/t/trouble-with-admin-mail-on-signup/147622/11 "2020-04-11T18:28:28Z")

</div>

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

```plaintext

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 的时间到了。
