У меня в интранете есть несколько внутренних списков рассылки почтальонов. Изменилось доменное имя компании.
Могу ли я автоматизировать процесс увольнения «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 есть множество команд для сброса информации и управления списками. Это команды, которые должны быть актуальны, если вы спрашиваете, как изменить подписанные адреса пользователей с одного домена на другой.
Учитывая эти команды, вы, вероятно, сможете выполнить простой процесс, описываемый этим псевдо-кодом оболочки. Очевидно, вы захотите очистить это, чтобы оно действительно работало, и сначала протестируйте его. На данный момент у меня нет доступной системы, которую я могу протестировать.
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}