web-dev-qa-db-ja.com

mailmanリストをあるドメインから別のドメインに移行するにはどうすればよいですか?

イントラネットにいくつかの内部メールマンメーリングリストがあります。会社のドメイン名が変更されました。

[email protected]」を辞任し、「[email protected]」をリストから/リストに割り当てるプロセスを自動化できますか?

私は11のリストを持っています、最も忙しいものは17のメンバーを持っています。したがって、それほど大きくはありませんが、手動で対処するのは非常に困難です。

2
dr-jan

Mailmanには、情報をダンプしてリストを操作するための多くのコマンドがあります。これらは、ユーザーのサブスクライブされたアドレスをあるドメインから別のドメインに変更する方法を尋ねる場合に関連するはずのコマンドです。

  • list_lists-すべてのリストを表示します
  • list_members-リストのメンバーを表示します。テキストファイルにリダイレクトできます。
  • add_members-リストにメンバーを追加し、ファイルを入力として受け取ることができます
  • remove_members-リストからメンバーを削除します

これらのコマンドがあれば、この疑似シェルコードで説明されている簡単なプロセスを実行できるはずです。これをクリーンアップして実際に動作させ、最初にテストすることをお勧めします。現在、テストできるシステムがありません。

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}
1
Zoredache

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ステートメントが必要です。

1
dr-jan