Como posso migrar listas de mailman de um domínio para outro?

2

Eu tenho algumas listas de discussão internas de mailman na minha intranet. O nome de domínio da empresa mudou.

Posso automatizar o processo de demissão de "usuá[email protected]" e atribuir "usuário@novo-domínio.com" de / para a lista?

Eu tenho 11 listas, a mais ocupada tem 17 membros. Então, não é enorme, mas uma dor enorme para lidar manualmente.

    
por dr-jan 01.08.2011 / 18:35

2 respostas

1

O Mailman tem muitos comandos para descarregar informações e manipular as listas. Estes são os comandos que devem ser relevantes se você estiver perguntando como alterar os endereços assinados dos usuários de um domínio para outro.

  • list_lists - exibe todas as listas
  • list_members - exibe os membros de uma lista, pode ser redirecionado para um arquivo de texto.
  • add_members - adiciona membros a uma lista, pode pegar um arquivo como entrada
  • remove_members - remova membros de uma lista

Dados esses comandos, você provavelmente poderá executar um processo simples descrito por este código shell do psuedo. Você obviamente quer limpar isso para realmente funcionar e testá-lo primeiro. Eu não tenho um sistema disponível no momento em que posso testar.

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}
    
por 06.08.2011 / 07:15
1

Usando as excelentes sugestões do Zoredache, acabei processando cada lista em 3 estágios, um para os membros regulares e um para os membros do digest, depois um último passo para remover os endereços antigos. Então, para cada lista eu fiz isso:

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

A declaração PATH é necessária porque os binários do mailman estão em um diretório incomum (/ usr / lib / mailman / bin no meu sistema Fedora).

    
por 10.08.2011 / 17:08

Tags