Назад | Перейти на главную страницу

Как перенести списки почтальонов из одного домена в другой?

У меня в интранете есть несколько внутренних списков рассылки почтальонов. Изменилось доменное имя компании.

Могу ли я автоматизировать процесс увольнения «user@old-domain.com» и добавления «user@new-domain.com» из / в список?

У меня 11 списков, в самом загруженном 17 участников. Так что не очень, но очень сложно справиться вручную.

Используя отличные предложения 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 находятся в необычном каталоге (/ usr / lib / mailman / bin в моей системе Fedora).

В 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}