我正在投资一个双向 Mailman 同步方案。该社区认为彻底移除 Mailman 是不可行的,他们希望 Mailman 用户继续使用 Mailman,同时仍能与参与单一分类的 Discourse 用户进行互动。
有一段时间,看起来似乎可以通过将 Mailman 分类地址订阅到列表、开启“分类镜像邮件列表”功能,然后再添加一个使用该 Mailman 列表地址并关注该分类的 Discourse 用户,从而几乎实现目标。
我最担心的是邮件循环问题。在第一次测试中,我以为一切运行良好,唯一的问题是邮件列表成员可以取消订阅 Mailman 列表对 Discourse 分类的监控。我编写了一个插件来移除取消订阅链接,以为这样就能万事大吉。但事实证明并非如此。
我认为最大的问题是:当来自 Discourse 的消息被发送到列表时,用户若直接回复该消息,回复会直接发送给 Discourse,而由于该用户并非订阅该列表的 Discourse 用户,消息会被拒绝。我不确定是否有办法解决这个问题。或许我可以覆盖执行该检查的代码,如果发件人地址与预期不同,则将其视为其他待处理用户?这样的话,唯一剩下的问题就是:用户点击“回复”时以为是在回复单个用户,实际上却是发送到了整个列表?
但另一个我认为可能更难解决的问题是:如果 Mailman 用户直接回复 Mailman(而不是之前讨论的回复地址),该回复会通过 Mailman 到达 Discourse,而 Discourse 会将其视为一个新主题。我看不出如何解决这个问题(因为主题行会被 Mailman 和 Discourse 不断添加更多的 [blah] 字符串)。不过,也许仅解决回复问题就已经足够好了。
大家还有其他想法吗?