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

但我使用的是与实例相同的 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 个赞
gde
3
配置相当经典:通常的 587 端口,starttls 为 true(默认值)
一般配置:
对于 group smtp:
我一直在进行一些 tcpdump 来查看发生了什么,我注意到 3 种不同的行为。对于前两种情况,正如该帖子中所述。
-
正常使用
用户创建主题、回复等。其他用户按预期收到电子邮件通知。
此外,使用管理界面中的测试发送电子邮件:没问题,发送成功且接收正常。
使用 tcpdump 可以看到正确的序列,通过 STARTTLS 连接等。
-
Discourse-doctor 和 rake
使用 discourse-doctor 或 rake emails:test
电子邮件未发送,我收到错误:503 5.5.1 Invalid command: Command not supported
-
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”,它是否有效?
gde
5
很遗憾,它不起作用。
取消选中“对 SMTP 使用 SSL”会给我以下错误消息:

这很奇怪,因为我知道我的凭据是正确的。
使用 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;这与我在上一篇文章中链接的帖子中所述的完全一样。
galligan
(Matt Galligan)
6
我尝试配置 Discourse SMTP 以使用 ImprovMX 电子邮件地址时,现在遇到了同样的问题。
有什么想法吗 @supermathie?