正在编写一个 mailman2 到 discourse 的迁移脚本

大家好,

今天我开始编写一个 Python 脚本,仅使用 Discourse API 来迁移 Mailman 2 邮件列表(包括归档和 config.pck 文件)。如果有人感兴趣,项目正在 这里 进行,我会在此主题中更新进度。

当然,欢迎大家提出任何关于需求或如何改进的建议:slight_smile

祝好

3 个赞

digest_members:已弃用。无法按类别请求摘要模式。

也许“关注首帖”是一个粗略的等价选项,具体取决于新帖子/话题出现的频率,以及实际上列表发送摘要的频率。

3 个赞

脚本的第一个版本已发布在 Client Challenge

1 个赞

from_is_list 设置为“修改发件人”或“包裹消息”(或使用了等效的仅 DMARC 设置)时,它是如何处理列表的?它能否确定这些消息是由哪位用户发送的?

不行,我来看看需要些什么。

1 个赞

谢谢。如果有帮助的话,原始发件人的电子邮件地址通常会(总是?)出现在电子邮件的“Cc:”标头中,至少在 from_is_list 为 Munge From 时如此。

1 个赞

from_is_list

from_is_list

  • 此设置适用于列表发送的所有非摘要消息。对于仅适用于发件人域发布 DMARC p=reject 或 p=quarantine 策略的消息的设置,请参阅 发件人过滤器 部分中的 dmarc_moderation_action 描述。

如果设置为“混淆发件人(Munge From)”,它将把 From: 标头地址替换为列表的发帖地址,以减轻由原始 From: 域的 DMARC 或类似策略引发的问题,并将原始 From: 地址放入 Reply-To: 标头中。

如果设置为“包裹消息(Wrap Message)”,它会将原始消息作为外部消息的 MIME 子部分进行包裹,其 From: 和 Reply-To: 标头如上所述。

我认为 Discourse 没有提供类似的功能。我尚未见过任何与之匹配的网站设置。在过去几天里,鉴于正在进行中的 Mailman 2 迁移工作,我已多次浏览了所有与电子邮件相关的设置。

1 个赞

也许你的问题与邮件如何从存档中导入有关,而不是在 Discourse 中实现该功能?

1 个赞

Discourse 的基本运作方式与 Mailman 2 在启用 from_is_list = Munge From 设置时相同:在此设置下,每条 Mailman 列表邮件的发件人均为“From: listname@example.com”(而非“From: joebloggs@email.com”);同样,Discourse 发出的每封邮件通知也均来自同一个论坛邮箱地址(例如 noreply@forum.example.com 或其他地址)。

不过,我原本并非询问如何在 Discourse 中复现该功能。[编辑——正如你所意识到的——我刚刚看到了你的第二条回复!]

我的意思是:当启用此 Mailman 设置时,你的脚本会将这些消息导入为来自单个 Discourse 用户(其邮箱地址为 listname@example.com),还是能够识别出原始发件人?

希望这样解释能让人明白!

1 个赞

感谢您的解释。mailman2discourse 脚本在此过程中并不起作用,因为它并不导入邮件。邮件的导入是通过 Discourse 的 mbox 导入器 完成的。

我认为这会将所有邮件的作者设置为 listname@example.com。我在 discourse/script/import_scripts/mbox/importer.rb 中没有看到任何表明情况并非如此的内容。这可以作为一个新增功能,或许可以通过 settings.yml 文件中的 use_reply_to_instead_of_from 字段进行控制?

2 个赞

我明白了,谢谢。

不幸的是,我还将 reply_goes_to_list 设置为“此列表”(这会修改“Reply-To:”邮件头),所以我们得想想其他解决方案。或者也许不必如此……我会在另一个话题下发帖提问。感谢您的帮助。

特此说明,迁移脚本已进展至可用阶段,并提供了操作指南:

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.