イントラネットにいくつかの内部メールマンメーリングリストがあります。会社のドメイン名が変更されました。
「[email protected]」を辞任し、「[email protected]」をリストから/リストに割り当てるプロセスを自動化できますか?
私は11のリストを持っています、最も忙しいものは17のメンバーを持っています。したがって、それほど大きくはありませんが、手動で対処するのは非常に困難です。
Mailmanには、情報をダンプしてリストを操作するための多くのコマンドがあります。これらは、ユーザーのサブスクライブされたアドレスをあるドメインから別のドメインに変更する方法を尋ねる場合に関連するはずのコマンドです。
これらのコマンドがあれば、この疑似シェルコードで説明されている簡単なプロセスを実行できるはずです。これをクリーンアップして実際に動作させ、最初にテストすることをお勧めします。現在、テストできるシステムがありません。
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の優れた提案を使用して、各リストを3つの段階で処理することになりました。1つは通常のメンバー用、もう1つはダイジェストメンバー用で、最後のパスで古いアドレスを削除しました。したがって、リストごとにこれを行いました。
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
Mailmanバイナリは珍しいディレクトリ(私のFedoraシステムでは/ usr/lib/mailman/bin)にあるため、PATHステートメントが必要です。