downey
(Michael Downey)
1
复现步骤
- 从 Discourse 站点 A 收到一封有用的电子邮件通知,该通知来自你设置为“关注首帖”的类别。
- 将该电子邮件通知转发到 Discourse 站点 B,使用已配置为向现有群组创建新消息的电子邮件地址。
预期结果
内容被正确处理,并生成一条私信。
实际结果
电子邮件未被处理,消息未创建,并收到以下退信通知给转发者:
很抱歉,您发送至 discourse-site-b@example.org 的电子邮件(标题为 Fw: [Discourse 站点 A] [公告] 大新闻)未能成功。在处理您的邮件时发生了无法识别的错误,因此邮件未被发布。请重试,或联系工作人员。
2 个赞
downey
(Michael Downey)
3
感谢你的想法。由于我是从邮件客户端手动转发该邮件的,因此并未发送该头部信息,但你的评论启我去查看错误日志中是否确实存在类似的问题。
错误出现在 /admin/email/rejected 中:
undefined method 'lines' for nil:NilClass
不确定这对比我更懂行的人是否有帮助。
更新: 另一个数据点。当我尝试转发另一个人的邮件时,收到了同样的拒收邮件和上述相同的日志错误。这让我认为问题可能更多与 Microsoft Outlook/Exchange 客户端处理转发邮件的方式有关。我将继续进行排查。
4 个赞
sam
(Sam Saffron)
4
这听起来确实是一个我们需要修复的 bug。不过,即使修复了这个问题,你转发的邮件中仍包含一些让我们认为它是某种群发工具的邮件头,你需要以某种方式将其加入白名单。
@zogstrip 我们是不是应该把那个 lines nil 类的问题分配出去?
3 个赞
downey
(Michael Downey)
5
表面上看,如果这个漏洞得到修复,我能否获得更多关于邮件被拦截原因的洞察?
我会更仔细地检查我的服务器可能添加的邮件头。如果其他人想更仔细地查看,我也很乐意单独分享它们;但目前可能还为时过早。
3 个赞
sam
(Sam Saffron)
6
是的,这个 bug 可能掩盖了真正的问题。解决它会让事情稍微好转一些。
5 个赞
@gerhard 既然你最后动过那段代码路径,方便看一下吗?
5 个赞
gerhard
(Gerhard Schlager)
10
我无法复现该问题,但我看到了代码可能出错的地方。
@downey 能否请您通过私信将原始邮件发给我?我想确保我应用了正确的修复方案。
5 个赞
gerhard
(Gerhard Schlager)
12
我从未收到过示例邮件,但我已修复了根本问题。
如果您在转发邮件方面仍遇到问题,请创建新的错误报告。
4 个赞