Reply-by-Email 回复过短的错误消息不正确

当发送过短的回复(例如“测试邮件回复”)时,我会收到一封退回邮件:

很抱歉,您的邮件消息(主题为“Re: 论坛帖子标题”)发送至 [“discoursereplies+redacted.org”] 未能成功。

您是否使用了多个电子邮件地址?是否从不同的电子邮件地址进行回复?邮件回复要求您在回复时使用相同的电子邮件地址。或者,邮件中的 Message-ID 头可能被修改过。

但较长、多行且包含多个句子的回复则能正常发送。

因此,该错误信息并不准确。

能否在此情况下提供更恰当的错误提示?

是否可配置最小消息长度?论坛回复与邮件回复是否有不同的设置?

类似问题参见:https://meta.discourse.org/t/confused-by-error-message-from-reply-by-email/139841,但此处是另一个问题。

2 个赞

嗯,@tshenry,我们能复现这个问题吗?

我暂时无法复现此问题。

我在 https://try.discourse.org 上进行了测试,该站点的 min post length(最小帖子长度)站点设置保持默认值 20。

我使用用户 A 创建了一个新主题,然后用用户 B 回复了该主题。用户 A 收到了一封邮件,随后我通过邮件回复了一个单词“Test”:

我随即收到了一封包含恰当内容的邮件:

@adrelanos 您能否提供额外的复现步骤?您收到的消息是否有某种情况下是有效的?另外,请确认您使用的是最新版本的 Discourse。

1 个赞

稳定分支。2.6.6(非测试完成分支。)这会有区别吗?

我不敢断言这一定会带来改变,但稳定版中可能存在某个已修复但未向后移植的 Bug,这种情况始终存在可能性。如果您方便的话,我建议您至少先更新到最新的测试版,然后再试一次。

除此之外,还有以下几个问题:

由于在常规场景下我无法复现该问题,因此需要您提供更多线索。

2 个赞

之前曾遇到过以下问题:https://meta.discourse.org/t/postgresql-13-update/172563、https://meta.discourse.org/t/restore-problem-relation-theme-fields-does-not-exist/95500 以及 https://meta.discourse.org/t/how-to-backup-and-restore-a-whole-var-discourse-app-folder/152598/15。现在非常感激你们提供更新较慢的稳定分支服务。:)

我猜你们当前使用的是 2.7 版本。我会等到 2.7 迁移到稳定分支后再进行报告。

您能否提供任何额外的复现步骤?

min post length 设置为 2

delete rejected email after days 仍为默认值 90

现在回复我自己的消息“OK”可以正常工作。

回复另一位用户的“OK”消息后,我现在收到了该消息。

很抱歉,您发送至 [“discoursereplies+redacted@redacted.redacted”](标题为 Re: [redacted] [redacted] redacted)的邮件未能成功。

我们仅接受原始通知发布后 90 天内的回复。请 访问该主题 以继续讨论。

但该消息仅发出约 5 分钟。

通过电子邮件回复另一位用户的帖子,内容为“This is a longer test reply by e-mail. Please ignore.”,没有任何反应,日志中也没有任何记录,也未收到拒绝邮件。

是否有可能您收到的消息在某种情况下是有效的?

您所说的“有效”具体是什么意思?

这是否意味着你的服务器时钟或安装配置有问题?这是标准的默认安装吗?

2 个赞

这是否意味着你的服务器时钟或安装配置有问题?

我不这么认为。我刚检查过,本地计算机时间和服务器时间在 UTC 下的日期、小时和分钟都一致,甚至秒数也几乎相同(通过 SSH 很难精确测量)。

这是标准的默认安装吗?

是的,使用的是 Docker 安装方式。我不想偏离官方推荐的做法。

感谢你们维护 Discourse!

1 个赞

因此,为了将来参考,总结如下:

  1. 原始发帖(OP)中的问题是:你发送了一条过短的回复,却收到了“目标地址错误”的响应,而不是“帖子过短”的响应。以下说法显然不成立:

    你是否使用了多个电子邮件地址?是否从不同的邮箱地址进行了回复?通过邮件回复时,必须使用相同的邮箱地址。或者,邮件中的 Message-ID 头可能被修改过。

  2. 在另一个例子中,你向一位用户发送了一条过短的回复,却收到了“旧目标”错误响应:“我们仅接受原始通知发布后 90 天内的回复。请 访问该主题 以继续讨论。”这也显然不成立,因为你回复的帖子仅发布了 5 分钟。

在你两次发送过短回复的情况下,系统都发送了错误的错误消息。这是否准确?

这听起来不错!我非常期待看看更新是否能解决问题。如果不行,请告诉我们。

1 个赞

泰勒通过 Discourse Meta 发布:

这样表述准确吗?

是的。

1 个赞

我在 2.7.3 版本中不再遇到这个问题,但现在却出现了。

  1. 您是否使用了多个电子邮件地址?您是否从不同的电子邮件地址进行了回复?邮件回复要求您在回复时使用相同的电子邮件地址。或者,邮件中的 Message-ID 头可能被修改过。

这似乎发生在对我所回复的帖子有其他回复之后。

由于这似乎难以调试(用户错误,回复了 From 而不是 Reply-To——在本例中我并未这样做 / 邮件服务器出现问题,和/或 Discourse 的 bug),我提出了以下功能请求以简化调试:

这意味着你触发了其他短帖防护机制之一,例如 body min entropy,其目的是阻止诸如 AAAAAAAAAAAAAAAAAAAAAAAAAAAA 之类的帖子,且该机制没有自定义错误消息。

3 个赞

您有具体的复现步骤吗?能否 100% 复现该错误?

2 个赞

这是一个适用于 Reply with debug info to rejected e-mails 的情况。

并非总能复现。我现在会频繁使用邮件回复功能,并希望随后能提供可复现的操作说明。
可能是需要多次回复才会导致邮件被拒绝,或者与时间有关。不过,较旧的邮件更可能被拒绝,即使 disallow reply by email after days(禁止在多少天后通过邮件回复)已设置为 0

1 个赞