如何从mailman2迁移到discourse

您好,

mailman2discourse 是一个命令行工具,用于将 mailman2 配置(即 config.pck 文件中的配置)导入到 Discourse 类别中可在 PyPI 上获取。系统会为邮件列表的每位成员创建一个用户,并在有新消息发布到该类别时通知他们(除非其在 mailman2 中的设置是“从不接收邮件”)。私有邮件列表的版主将成为 Discourse 群组的一员,他们可以审核每一条新帖子。如果邮件列表的存档不公开,则对应的 Discourse 类别仅对模拟 mailman2 成员列表的 Discourse 群组可见。

安装

$ pipenv install mailman2discourse

使用方法

要求:

  • 来自 /admin/api/keys/new 的 API 密钥,其 User Level(用户级别)需设置为 All Users(所有用户)
  • 一个管理员用户(例如 admin
  • 一个 mbox 导入器 容器,需满足以下条件:
    • DISCOURSE_MAX_ADMIN_API_REQS_PER_KEY_PER_MINUTE: 60000000
    • DISCOURSE_MAX_REQS_PER_IP_MODE: none
    • 不包含 templates/web.ratelimited.template.yml
  • mailman2 邮件列表的 config.pck 文件

要导入名为 listname@example.com 的 mailman2 邮件列表,请执行:

    $ mailman2discourse --url http://172.19.0.2 --api-key APIKEY --api-user admin \
                      --mailman-config config.pck \
                      --list listname --domain example.com

该导入操作具有幂等性,这意味着可以安全地多次运行,例如在操作中断后或 config.pck 文件更新时。

随后即可导入存档内容。

存档导入

邮件列表的存档可使用 mbox 导入器 进行导入。.mbox.mbox.gz 文件必须放置在由 mailman2discourse 创建的类别同名目录中。

错误报告

报告问题的最佳地点是 问题追踪器,但在此主题下发帖也是可以接受的。

我去年开始着手编写这个脚本,并在 2021 年 5 月迁移 Spip 邮件列表 时获得了实际测试的机会。该脚本虽然还很年轻,但我现在确信它已经可以投入使用。

导入过程仍然涉及许多手动步骤,我希望能有一个类似 discourse import --mailman2 config.pck mbox-archives-directory 的命令,能够“开箱即用”。不过,我并没有计划实现这一功能。我对 自定义 Shell 脚本 感到满意,也看不出它们如何能被泛化。无论如何,mailman2discourse 所实现的逻辑是缺失拼图的一块,我很高兴它的存在 :slight_smile: