如何将邮递员列表从一个域迁移到另一个域?

如何将邮递员列表从一个域迁移到另一个域?

我的内联网上有一些内部邮递员邮件列表。公司域名已更改。

我可以自动完成辞职流程吗?[电子邮件保护]' 并分配 '[电子邮件保护]' 来自/到列表?

我有 11 个列表,最繁忙的列表有 17 个成员。因此,列表虽然不大,但手动处理起来却非常麻烦。

答案1

Mailman 有许多命令可以转储信息和操作列表。如果您要问如何将用户的订阅地址从一个域更改为另一个域,这些命令应该适用。

  • list_lists-显示所有列表
  • list_members—显示列表的成员,可以重定向到文本文件。
  • add_members - 将成员添加到列表,可以将文件作为输入
  • remove_members-从列表中删除成员

有了这些命令,您可能能够运行此伪 shell 代码描述的简单过程。您显然希望先清理它以使其真正发挥作用并对其进行测试。我目前没有可用的系统可以进行测试。

for each list in `list_lists`
  # add members with new addresses
  add_members --welcome-msg=n --admin-notify=n \
   --file <(list_members {listname} | grep '@old-domain.com' | sed -e 's/old-domain.com/new-domain.com/') {listname} 
  # remove old addresses
  remove_members --file=<(list_members {listname} | grep '@old-domain.com') {listname}

答案2

根据 Zoredache 的出色建议,我最终分 3 个阶段处理每个列表,一个阶段用于常规成员,一个阶段用于摘要成员,最后一步是删除旧地址。因此,对于每个列表,我都执行了以下操作:

PATH=$PATH:/usr/lib/mailman/bin; export PATH

list_members --regular list_name | grep '@old_domain.com' | sed -e 's/old_domain/new_domain/' | add_members --welcome-msg=n --admin-notify=n --regular-members-file=- list_name
list_members --digest  list_name | grep '@old_domain.com' | sed -e 's/old_domain/new_domain/' | add_members --welcome-msg=n --admin-notify=n --digest-members-file=- list_name
list_members list_name | grep '@old_domain.com' | remove_members --file=- --nouserack --noadminack list_name

需要 PATH 语句是因为 mailman 二进制文件位于不常见的目录中(在我的 Fedora 系统上是 /usr/lib/mailman/bin)。

相关内容