Migrasi Zimbra Mail ke Carbonio CE dengan Script

A. Pendahuluan

Menurut informasi dari Zimbra Mail sendiri bahwa Zimbra OSE (Open Source Edition) versi 8.8.15 sudah EOL pada tanggal 31 Desember 2023. Sehingga perbaikan keamanan dan bug sudah tidak disupport lagi. Anda bisa melihat life cyle Zimbra Mail disini. Apabila Anda masih menggunakan versi 8.8.15 opsinya bisa upgrade Zimbra Mail ke versi 9 atau 10 untuk menghindari adanya vulnerability, namun kedua versi tersebut membutuhkan lisensi. Atau Anda juga bisa menggunakan opsi yang kedua yakni migrasi dari Zimbra Mail ke Carbonio CE (Community Edition).

Nah apalagi Carbonio CE sudah rilis versi terbarunya yaitu versi 23.12.0 per tanggal 27 Desember 2023 dengan UI yang ciamik. Bagi Anda yang belum install versi tersebut bisa melihat postingan sebelumnya disini. Migrasi Zimbra Mail ke Carbonio CE kali ini menggunakan tool yang sudah disediakan oleh Carbonio sehingga prosesnya akan lebih cepat dan sederhana. Selain itu keuntungannya menggunakan metode ini adalah kalender dan kontak juga termasuk. Adapun gambaran flow proses migrasinya nanti akan seperti berikut ini :

  1. Extract user data (akun email) Zimbra dan transfer ke server Carbonio CE
  2. Kemudian melakukan import data user (akun email) di server Carbonio CE
  3. Export data email (mailbox) dari Zimbra ke server Carbonio CE dan import mailbox
  4. Verifikasi dan pointing record MX, TXT, PTR ke server Carbonio CE

B. Proses Migrasi

  1. Periksa status service pada Zimbra Mail terlebih dahulu dengan perintah :
    zmcontrol status

Note : Pastikan sudah berada pada user zimbra, jika belum silakan switch user terlebih dahulu :
sudo su - zimbra

Untuk memeriksa versi Zimbra Mail bisa dengan perintah :
zimbra@mail:~$ zmcontrol -v

  1. Lalu silakan buat direktori /opt/backups/zmigrate dan set owner dengan user zimbra. Tujuan dibuatnya folder tersebut adalah untuk tempat menyimpan file hasil export akun email beserta password dan mailbox nya.

    root@mail:~# mkdir -p /opt/backups/zmigrate
    root@mail:~# chown -R zimbra:zimbra /opt/backups/zmigrate
    root@mail:~# cd /opt/backups/zmigrate
  2. Export semua akun pada Zimbra Mail dengan perintah :

    zimbra@mail:/opt/backups/zmigrate$ zmprov -l gad > domains.txt  
    zimbra@mail:/opt/backups/zmigrate$ zmprov -l gaa > emails.txt  
    zimbra@mail:/opt/backups/zmigrate$ ls  
    domains.txt emails.txt
  3. Export semua data user termasuk nama dan passwordnya, sebelumnya buat direktorinya terlebih dahulu untuk data user dan password :

    zimbra@mail:/opt/backups/zmigrate$ mkdir userpass 
    zimbra@mail:/opt/backups/zmigrate$ for i in `cat emails.txt`; do zmprov -l ga $i userPassword | grep userPassword: | awk '{ print $2}' > userpass/$i.shadow; done
    zimbra@mail:/opt/backups/zmigrate$ mkdir userdata 
    zimbra@mail:/opt/backups/zmigrate$ for i in `cat emails.txt`; do zmprov ga $i | grep -i Name: > userdata/$i.txt ; done 

    Untuk melihat hasilnya bisa ketikkan perintah :
    zimbra@mail:/opt/backups/zmigrate$ ls -llR userdata/ userpass/
    enter image description here

Nah sekarang Anda bisa melihat jumlah data email per akun guna melakukan verifikasi ketika selesai proses migrasinya.
zimbra@mail:/opt/backups/zmigrate$ for j in $( zmprov -l gaa | egrep -v "^(spam|ham)"); do total=0; echo -n "Total for $j = "; for i in $( zmmailbox -z -m "$j" gaf | awk '{print $4}' | egrep -o "[0-9]+" ); do total=$((total + i )); done; echo "$total"; done
enter image description here

  1. Langkah berikutnya silakan transfer data user yang sudah diexport sebelumnya dari server Zimbra ke server Carbonio CE. Namun sebelumnya silakan login ke server Carbonio CE terlebih dahulu dan pastikan semua service berjalan dengan normal. Nah untuk memeriksa service Carbonio CE bisa menggunakan perintah yang sama :

zextras@mail:~$ zmcontrol status
Note : Pastikan sudah berada pada user zextras, jika belum silakan switch user terlebih dahulu :
sudo su - zextras

Untuk memeriksa versi Carbonio CE bisa dengan perintah :
zextras@mail:~$ zmcontrol -v

  1. Kemudian, buatlah folder dan user yang sama seperti sebelumnya :

    root@mail:~# mkdir -p /opt/backups/zmigrate 
    root@mail:~# chown -R zextras:zextras /opt/backups/zmigrate 
    root@mail:~# cd /opt/backups/zmigrate 
  2. Untuk melakukan transfer data, Anda bisa menggunakan rsync, sftp, scp, dll. Disini sebagai contoh saya menggunakan tool rsync. Silakan login ke server Zimbra Mail kembali dan jalankan perintah :

    root@mail:/opt/backups/zmigrate# rsync -avp /opt/backups/zmigrate/* [email protected]:/opt/backups/zmigrate/* 
    [email protected]'s password: 
    sending incremental file list
    ...
    ...
    truncated

    Keterangan :

    • 192.168.10.12 : Adalah IP dari Carbonio CE
    • root : Adalah user root yang melakukan transfer data atau Anda bisa menggunakan user biasa dengan privileges sudo.

    Note : Untuk melakukan rsync, pastikan Anda bisa remote SSH antara server Zimbra Mail dengan Carbonio CE baik menggunakan password ataupun pub key.

Tunggu proses transfer datanya selesai, cepat lambatnya bergantung dengan jumlah besaran data dan bandwidth server Anda (jika menggunakan IP Public).

  1. Selanjutnya Anda bisa melakukan import data user yang sudah berhasil ditransfer pada server Carbonio CE.
    zextras@mail:/opt/backups/zmigrate$ carbonio prov -l gad
    zextras@mail:/opt/backups/zmigrate$ for i in `cat /opt/backups/zmigrate/domains.txt `; do carbonio prov cd $i zimbraAuthMech zimbra ;echo $i ;done
    zextras@mail:/opt/backups/zmigrate$ carbonio prov -l gad

    Note :

    • Perintah carbonio prov -l gad untuk melihat daftar domain yang berada pada akun Carbonio CE
    • Pastikan ownership folder zmigrate beserta isinya yaitu zextras:zextras. Jika masih belum sesuai bisa menjalankan perintah chown zextras:zextras /opt/backups/zmigrate -R lalu silakan import.

Silakan buat file dengan nama restore.sh dan isikan script dibawah ini :
vim restore.sh. Script ini berfungsi untuk melakukan restore semua akun email dengan passwordnya yang sudah ditransfer sebelumnya.

[Create a script and modify the execution permission, ownership etc]
#!/bin/bash
#Script for creating the email accounts createacct.sh
USERPASS="/opt/backups/zmigrate/userpass"
USERDATA="/opt/backups/zmigrate/userdata"
USERS="/opt/backups/zmigrate/emails.txt"
for i in `cat $USERS`
do
givenName=$(grep givenName: $USERDATA/$i.txt | cut -d ":" -f2)
displayName=$(grep displayName: $USERDATA/$i.txt | cut -d ":" -f2)
shadowpass=$(cat $USERPASS/$i.shadow)
tmpPass="CHANGEme"
carbonio prov ca $i CHANGEme cn "$givenName" displayName "$displayName" givenName "$givenName"
carbonio prov ma $i userPassword "$shadowpass"
done

Simpan file tersebut dan keluar dengan menekan Esc lalu wq!
Lalu berikan privilege execution dan execute filenya :

chmod +x restore.sh
./restore.sh

Tunggu proses restorenya selesai. Jika sudah selesai, silakan lihat melalui GUI daftar akun emailnya. Caranya dengan masuk ke menu Domains > Pilih nama domain nya dan klik tab Accounts :
enter image description here

enter image description here

  1. Setelah proses export dan import data user (akun email) selesai. Sekarang tahapannya yakni melakukan export data mailbox Zimbra Mail, namun sebelumnya silakan buat folder MBOX terlebih dahulu pada server Zimbra Mail :
    root@mail:/opt/backups/zmigrate# mkdir MBOX
    root@mail:/opt/backups/zmigrate# chown -R zimbra:zimbra MBOX
    root@mail:/opt/backups/zmigrate# su - zimbra
    zimbra@mail:/opt/backups/zmigrate/MBOX$ for email in `cat /opt/backups/zmigrate/emails.txt`; do zmmailbox -z -m $email -t 0 getRestURL '/?fmt=tgz' > $email.tgz ; echo $email ; done

    enter image description here

Catatan Penting :

  • Sebelum melakukan export/import mailbox silakan set socket timeout ( zmlocalconfig -e socket_so_timeout=3000000 )

Untuk melihat daftar isi filenya bisa dengan perintah :
zimbra@mail:/opt/backups/zmigrate/MBOX$ ls -ll

  1. Lalu silakan transfer file tersebut seperti sebelumnya dari server Zimbra Mail ke server Carbonio CE :

    root@mail:/opt/backups/zmigrate/MBOX# rsync -avp /opt/backups/zmigrate/MBOX/ [email protected]:/opt/backups/zmigrate/MBOX
    [email protected]'s password:
    sending incremental file list
    created directory /opt/backups/zmigrate/MBOX
    ./
    ...
    ...
    truncated

    Keterangan :

    • 192.168.10.12 : Adalah IP dari Carbonio CE
    • root : Adalah user root yang melakukan transfer data atau Anda bisa menggunakan user biasa dengan privileges sudo.
  2. Setelah filenya berhasil ditransfer, silakan import file mailbox tersebut pada server Carbonio CE :

Catatan Penting :

  • Sebelum melakukan export/import mailbox silakan set socket timeout ( zmlocalconfig -e socket_so_timeout=3000000 )
  • Jika Anda memiliki batasan attachment, silakan naikkan value selama proses migrasi
  • Set Public Service Host Name dan Public Service Protocol untuk menghindari error seperti dibawah ini :

ERROR: zclient.IO_ERROR (Connection refused) (cause: java.net.ConnectException Connection refused)

Caranya bisa ke Admin Panel Carbonio CE, pilih nama domainnya dan set secure (https).

enter image description here
Setelah itu, masuk ke server Carbonio CE dan import dengan perintah seperti berikut ini :

root@mail:/opt/backups/zmigrate/MBOX# chown zextras:zextras *
zextras@mail:/opt/backups/zmigrate/MBOX$ for i in `cat /opt/backups/zmigrate/emails.txt`; do zmmailbox -z -m $i -t 0 postRestURL "/?fmt=tgz&resolve=skip" /opt/backups/zmigrate/MBOX/$i.tgz ; echo "$i -- finished "; done

enter image description here
Tunggu prosesnya selesai dan bergantung pada besaran data mailbox yang digunakan.

C. Verifikasi

Setelah Anda melakukan export dan import data user/akun beserta password dan mailbox nya. Anda bisa melakukan verifikasi terlebih dahulu sebelum pointing domain ke IP server Carbonio CE, apakah jumlah email pada setiap akun sudah sama atau belum. Untuk melakukan verifikasi jumlah email setiap akun bisa menjalankan perintah sebagai berikut :
zextras@mail:/opt/backups/zmigrate/MBOX$ for j in $( carbonio prov -l gaa | egrep -v "^(spam|ham)"); do total=0; echo -n "Total for $j = "; for i in $( zmmailbox -z -m "$j" gaf | awk '{print $4}' | egrep -o "[0-9]+" ); do total=$((total + i )); done; echo "$total"; done

enter image description here

Selain itu, Anda juga bisa melihat email pada folder Inbox, Sent, Junk/Spam pada akun email. Selain itu Anda juga melihat kontak, kalendar. Contoh berikut adalah isi pesan pada folder Inbox :

enter image description here

Setelah hasil verifikasi email beserta mailboxnya sudah valid, Anda bisa melakukan pointing record A, MX, TXT dan PTR ke IP server Carbonio CE. Kenapa butuh record TXT dan PTR juga ? Hal ini disebabkan menjaga reputasi email Anda atau istilahnya adalah Deliverability Email, selengkapnya Anda bisa melihat postingan saya disini. Pointing record ini disarankan diluar jam operasional ya, karena akan membutuhkan waktu propagasi domain. Adapun cepat lambatnya proses propagasi bergantung pada resolver DNS yang digunakan.

D. Kesimpulan

Itulah cara bagaimana melakukan migrasi Zimbra Mail ke Carbonio CE menggunakan Script. Keuntungannya selain email berhasil dimigrasikan, kalendar dan kontak juga termasuk. Proses migrasinya juga cukup sederhana dengan konsep export dan import data user (akun email) beserta password dan mailbox nya.

Pastikan sebelum melakukan import, ownership filenya sudah sesuai.
Gimana ? Cukup mudah bukan ? Jika Anda kesulitan melakukan migrasi Zimbra Mail ke Carbonio CE, tenang saja Anda bisa menghubungi Kenalinux ID melalui kontak disini.

Referensi : Carbonio CE

Selamat mencoba dan semoga bermanfaat!