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

**URL:** <https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501>\
**Category:** Self-hosting\
**Created:** [2020年十二月29日 14:31 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501 "2020-12-29T14:31:36Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![superman](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@superman](https://meta.discourse.org/u/superman)\
**Post date:** [2020年十二月29日 14:31 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/1 "2020-12-29T14:31:36Z")

</div>

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

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

然而：  
通过 Telnet 连接 [mail.domain.com](http://mail.domain.com) 的 587 端口成功，EHLO 命令也能正常执行。

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

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2020年十二月30日 00:31 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/2 "2020-12-30T00:31:42Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2020年十二月30日 09:20 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/4 "2020-12-30T09:20:21Z")

</div>

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

参考链接：[7. The default configuration file](http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_default_configuration_file.html)

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

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

---

<div class="post-metadata">

**Author:** ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)\
**Post date:** [2021年一月6日 07:32 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/7 "2021-01-06T07:32:47Z")

</div>

> [@superman](#):
>
> 为什么当 app.yaml 文件中子域名并未缺失时，Discourse 却忽略了它？

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

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

```plaintext
docker exec -it app rails c

```

然后，在 Rails 控制台中执行：

```plaintext
[1] pry(main)> ENV

```

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

---

<div class="post-metadata">

**Author:** ![superman](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@superman](https://meta.discourse.org/u/superman)\
**Post date:** [2021年一月17日 19:27 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/8 "2021-01-17T19:27:27Z")

</div>

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

```plaintext
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 并未实际发送邮件。

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2021年一月17日 22:17 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/9 "2021-01-17T22:17:13Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![superman](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@superman](https://meta.discourse.org/u/superman)\
**Post date:** [2021年一月18日 02:59 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/10 "2021-01-18T02:59:40Z")

</div>

Discourse 发送邮件时使用的 hostname 是什么？  
它使用的是 [forum.somedomain.com](http://forum.somedomain.com) 吗？  
还是  
它使用的是 [mail.forum.somedomain.com](http://mail.forum.somedomain.com)？

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2021年一月22日 02:23 UTC](https://meta.discourse.org/t/discourse-connects-to-the-smtp-server-but-fails-to-send-email-through-it/174501/11 "2021-01-22T02:23:55Z")

</div>

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

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

`email@somedomain.com`
