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

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

我可以自动将“[email protected]”辞职并将“[email protected]”分配给列表中的过程吗?

我有11个名单,最繁忙的有17名成员。 所以,不是很大,但手动处理巨大的痛苦。

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

  • list_lists – 显示所有列表
  • list_members – 显示列表的成员,可以被redirect到一个文本文件。
  • add_members – 将成员添加到列表中,可以将文件作为input
  • remove_members – 从列表中删除成员

给定这些命令,你应该可以通过这个伪代码所描述的一个简单的过程来运行。 你显然希望清理这个实际工作并首先testing它。 我目前没有系统可以testing。

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} 

使用Zoredache的优秀build议,我最终处理了每个列表的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语句是必需的,因为邮递员二进制文件在一个不常见的目录中(我的Fedora系统上的/ usr / lib / mailman / bin)。