26 вересня, Вівторок, 2023
A- A A+

Mailbox Migration2

Зіткнувся з завданням - необхідно перенести один з доменів на інший хост, думаю ок. Погуглити, знайшов стандартні костилі типу zmmboxmove,  все з коробки, але виявляється дане рішення є тільки в платній версії.

Почав дивитися далі, знайшов міграцію за допомогою вбудованого механізму, але там губляться паролі користувачів, що мінус, так як треба генерувати нові, а це стрес для користувачів.

В результаті було вирішено створити аналогічних користувачів або перемістити за допомогою вбудованого механізму, а далі перенести хеші паролів. Знайшщов скріпти, і ось що з цього вийшло. Насамперед необхідно отримати список акаунтів, які ми хочемо перенести:

mkdir /tmp/zimbra
cd /tmp/zimbra
zmprov -l gaa pc-service.cv.ua | grep -v Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. > 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/

Закачуємо все що вийшло на новий сервер і починаємо імпортування скриньок
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

h1d3.org