SMTP 用于组:ssl 错误版本号错误

您好,

我正在尝试为群组实现 SMTP,但一直收到以下错误消息。

image

但我使用的是与实例相同的 SMTP 服务器,并且即使使用我在 app.yml 文件中指定的相同凭据,也会收到相同的错误消息……我不明白为什么它的行为不同:使用默认凭据可以完美发送电子邮件。

在我的 SMTP 服务器的日志中,我看到来自 Discourse 服务器的连接,然后我收到以下消息:

smtp bad-input result=“500 5.5.1 Invalid command: Pipelining not supported”
smtp disconnected reason=“io-error: Connection reset by peer”

1 个赞

我怀疑 Discourse 正在尝试使用 TLS 而不是 STARTTLS 连接到 SMTP 服务器。

您能截取相关设置的屏幕截图吗?

请隐藏特定的主机名和用户名,但保留端口信息和其他设置。

1 个赞

配置相当经典:通常的 587 端口,starttls 为 true(默认值)

一般配置:

对于 group smtp:

我一直在进行一些 tcpdump 来查看发生了什么,我注意到 3 种不同的行为。对于前两种情况,正如该帖子中所述

  1. 正常使用
    用户创建主题、回复等。其他用户按预期收到电子邮件通知。
    此外,使用管理界面中的测试发送电子邮件:没问题,发送成功且接收正常。
    使用 tcpdump 可以看到正确的序列,通过 STARTTLS 连接等。

  2. Discourse-doctor 和 rake
    使用 discourse-doctorrake emails:test
    电子邮件未发送,我收到错误:503 5.5.1 Invalid command: Command not supported

  3. group smtp
    在测试 group smtp 时,我看到一个来自 Discourse 的“DATA fragment”数据包紧随 tcp 握手之后,SMTP 服务器响应 220 xxxxxxx ESMTP OpenSMTPD,然后是 500 5.5.1 Invalid command: Pipelining not supported 消息。

1 个赞

587 支持 STARTTLS,但不支持 TLS(连接时)。

我们应该在此处修改选项以允许 STARTTLS。

如果您取消选中“对 SMTP 使用 SSL”,它是否有效?

很遗憾,它不起作用。
取消选中“对 SMTP 使用 SSL”会给我以下错误消息:

image

这很奇怪,因为我知道我的凭据是正确的。

使用 tcpdump 查看时,它的行为正如我在“Discourse-doctor 和 rake”案例中所解释的那样。
Discourse 和 smtp 服务器之间的通信如下所示:

< 220 [redacted] ESMTP ready
> EHLO [redacted]
< 250-[redacted]
< 250-PIPELINING
< 250-SIZE 36700160
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command : commande not supported

就好像 Discourse 没有尝试启动 STARTTLS;这与我在上一篇文章中链接的帖子中所述的完全一样。

我尝试配置 Discourse SMTP 以使用 ImprovMX 电子邮件地址时,现在遇到了同样的问题。

有什么想法吗 @supermathie