Zimbra - перенос почтовых ящиков
Столкнулся с задачей - необходимо перенести один из доменов на другой хост, думаю ок. Погуглил, нашел стандартные костыли типа zmmboxmove, думаю о как круто, все из коробки, но оказывается данное решение есть только в платной версии. Начал смотреть дальше, нашел миграцию с помощью встроенного механизма, но там теряются пароли пользователей, что минус, так как надо генерить новые, а это стресс для юзеров. В итоге было решено создать аналогичных пользователей или переместить с помощью встроенного механизма, а дальше перенести хеши паролей. По-быстрому решил заскриптовать, и вот что из этого вышло. Первым делом необходимо получить список аккаунтов, которые мы хотим перенести:
Экспортируем ящики
Полезное:
Zmprov
Mailbox Password Migration
mkdir /tmp/zimbra cd /tmp/zimbra zmprov -l gaa example.com | grep -v [email protected] > users.txtДалее нам необходимо получить хеши
pass.sh
#!/bin/bash cat users.txt | while read line do array[i]="$line" zmprov -l ga ${array[i]} userPassword | sed s/#\ name/zmprov\ ma/ | tr '\n' ' ' | sed s/:\ /\ \'/ | sed s/\ \ /\',/ | tr ',' '\n' >> /tmp/zimbra/restore_pass.sh let i++ doneПосле этого у нас есть файл с командами, которые устанавливают старые-новые хеши.
Экспортируем ящики
export.sh
#!/bin/bash cat users.txt | while read line do array[i]="$line" zmmailbox -z -m ${array[i]} -t 0 getRestURL "//?fmt=tgz" > /tmp/zimbra/${array[i]}.tar.gz let i++ doneУстанавливаем права на каталог
chmod -R 777 /tmp/zimbra/Cливаем все что получилось на новый сервер и начинаем импортить ящики
import.sh
#!/bin/bash cat users.txt | while read line do array[i]="$line" zmprov ca ${array[i]} ZmHpg0LeQSPNZE0c zmmailbox -z -m ${array[i]} -t 0 postRestURL "//?fmt=tgz&resolve=reset" /tmp/zimbra/${array[i]}.tar.gz let i++ doneВ этом шаге мы создаем ящики и сразу имортим в них содержимое, ну а далее просто остается установить хеши с помощью
restore_pass.sh
Полезное:
Zmprov
Mailbox Password Migration