Оновлення поштового сервера — це завжди відповідальний процес, особливо коли мова йде про перехід між мажорними версіями, наприклад, з **Zimbra 8 на Zimbra 10**.
Прямий апгрейд «наживо» іноді може принести сюрпризи у вигляді конфліктів конфігурацій чи застарілих залежностей. Тому один із найнадійніших і найчистіших способів міграції — це **експорт/імпорт поштових скриньок через REST API Zimbra (`zmmailbox`)**.
Цей метод дозволяє не лише безпечно перенести листи, папки, календарі та контакти, але й провести **«генеральне прибирання»**: видалити застарілі чи непотрібні акаунти та очистити пошту від старого спаму перед переїздом.
У цій покроковій інструкції ми розберемо, як розгорнути пошту на новому сервері «з чистого аркуша».
---
## Етап 1. Підготовка та аудит користувачів
Перед початком міграції варто сформувати список реальних користувачів і відсіяти системні акаунти Zimbra (такі як `galsync`, `spam`, `ham` тощо).
1. Підключіться до **старого сервера** під користувачем `zimbra`.
2. Вивантажте список акаунтів, виключивши системні скриньки:
```bash
zmprov -l gaa | grep -vE '(galsync|spam\.|ham\.|virus-quarantine)' > /tmp/users.txt
```
> **💡 Порада:** Відкрийте файл `/tmp/users.txt` та перегляньте його вручну (`nano /tmp/users.txt`). Це чудовий шанс видалити звільнених співробітників або застарілі тестові акаунти, щоб не тягнути «сміття» на новий сервер. Також рекомендуємо попросити користувачів почистити свої папки «Видалені» та «Спам».
---
## Етап 2. Експорт поштових скриньок у TGZ
Команда `zmmailbox` дозволяє вивантажити повний дамп акаунта (включаючи структуру папок, листи, календарі та контакти) в один стиснутий архів `.tgz`.
Створимо скрипт автоматичного експорту.
1. Створіть файл `/tmp/export.sh`:
```bash
#!/bin/bash
mkdir -p /tmp/zimbra_export
while read -r user; do
echo "Експортую скриньку: $user..."
# Команда zmmailbox робить повний дамп скриньки в TGZ через REST API
zmmailbox -z -m "$user" getRestURL "//?fmt=tgz" > /tmp/zimbra_export/"$user".tgz
done < /tmp/users.txt
echo "Експорт завершено!"
```
2. Запустіть експорт:
```bash
bash /tmp/export.sh
```
---
## Етап 3. Перенесення даних на новий сервер
Тепер потрібно передати згенеровані архіви та список користувачів на новий сервер із Zimbra 10.
1. Скопіюйте архіви та список користувачів (замініть `new_server_ip` на IP-адресу вашого нового сервера):
```bash
rsync -avz /tmp/zimbra_export/ root@new_server_ip:/tmp/zimbra_import/
scp /tmp/users.txt root@new_server_ip:/tmp/
```
2. Перейдіть на **новий сервер** та виставте правильні права доступу для системного користувача `zimbra`:
```bash
chown -R zimbra:zimbra /tmp/zimbra_import /tmp/users.txt
```
---
## Етап 4. Налаштування та імпорт на новому сервері
> **Важливо:** Перед створенням акаунтів переконайтеся, що на новому сервері Zimbra вже створені всі необхідні поштові домени!
### 1. Автоматичне створення акаунтів
Перейдіть під користувача `zimbra` та створіть акаунти зі списку зі стартовим паролем:
```bash
su - zimbra
while read -r user; do
echo "Створюю акаунт: $user"
# Замініть 'NewPassword123!' на свій тимчасовий складний пароль
zmprov ca "$user" "NewPassword123!"
done < /tmp/users.txt
```
*(За бажанням, ви можете увімкнути опцію обов’язкової зміни пароля при першому вході для кожного користувача).*
### 2. Імпорт поштових даних
Створіть скрипт для імпорту дампів у нові скриньки.
1. Створіть файл `/tmp/import.sh` (або виконайте під користувачем `zimbra`):
```bash
#!/bin/bash
while read -r user; do
if [ -f "/tmp/zimbra_import/${user}.tgz" ]; then
echo "Імпортую дані для: $user..."
# Команда розпаковує tgz прямо в поштову скриньку користувача
# Параметр resolve=skip запобігає дублюванню об'єктів, якщо вони вже є
zmmailbox -z -m "$user" postRestURL "//?fmt=tgz&resolve=skip" /tmp/zimbra_import/"$user".tgz
else
echo "Файл архіву для $user не знайдено, пропускаю."
fi
done < /tmp/users.txt
echo "Імпорт повністю завершено!"
```
2. Запустіть імпорт:
```bash
bash /tmp/import.sh
```
---
## Фінальні кроки та перевірка
Після завершення імпорту рекомендується виконати кілька підсумкових дій:
1. **Перевірка обсягів:** Порівняйте кількість листів або розмір поштових скриньок на старому та новому серверах (`zmprov gqu localhost`).
2. **Переключення DNS:** Оновіть `MX`-записи, `A`-записи та `SPF/DKIM/DMARC` на вашому DNS-сервері, щоб направити новий поштовий трафік на Zimbra 10.
3. **Очищення:** Після успішної перевірки видаліть тимчасові архіви з `/tmp/zimbra_export` та `/tmp/zimbra_import`, щоб звільнити дисковий простір.
---
### Підсумок
Перенесення пошти через `zmmailbox REST API` — це простий, але потужний метод. Він мінімізує ризики пошкодження бази даних при переході між різними версіями Zimbra і дає повний контроль над тим, які саме дані переносяться.
Якщо у вас виникли питання щодо налаштування Zimbra або потрібна допомога з комплексною міграцією IT-інфраструктури — звертайтеся до фахівців **ITDim**!