邮件列表镜像错误,存在安全隐患

您可以争辩说,因为消息相同,所以它只有一个消息 ID。事实上,对于所讨论的示例,原始发帖人是在 Gmail 中撰写消息(由 Gmail 分配了消息 ID),然后将其发送到同一服务器上的两个列表服务器地址。这并不罕见,例如,这可能是一份新闻稿,对经理和临床医生都适用,他们各自都在自己的邮件列表中。新闻稿中可能存在需要讨论的医疗问题,因此临床医生可能会回复(并且“回复到”地址会被设置为临床医生列表,即使“收件人”标头仍然包含两个邮件列表)。同样,经理们也可能想讨论他们自己对新闻的看法。他们会回复,并且相关的“回复到”标头会用于反映经理列表。如果某位发帖人通过“全部回复”利用了“收件人”地址,那么他们未加入的列表就会生成退信消息。

上述行为并不算特别少见,但似乎 Discourse 在用作邮件列表镜像时无法正确处理它,并且无法将分叉的回复分开,因为它们都会被关联到原始消息 ID 以及该帖子首次出现的类别。

这可能意味着,例如,经理可以看到临床医生的帖子,如果临床医生回复临床医生列表,由于 Discourse 归档消息的方式,该帖子会出现在经理列表的镜像中。

一种解决方案可以是检查传入消息的“收件人”标头中的每个地址,看它是否与“类别设置”中的邮件列表镜像地址匹配。如果匹配,则可以在每个匹配的类别中发布该消息的副本,并且可能在不同类别中有多个帖子副本。然后,如果收到任何回复,就可以像目前一样使用消息 ID,但前提是“收件人”行也与类别匹配。