Imapsync

Tips Imapsync Untuk Migrasi Mailbox dari Microsoft Exchange ke Zimbra

Posted by

Beberapa waktu lalu, saya ada pekerjaan perihal migrasi email server dari Microsoft Exchange ke Zimbra. Proses berjalan lancar sampai export import list akun Exchange ke Zimbra. Selanjutnya pada saat tahapan export import data mailbox, ada beberapa pilihan tools dari Zimbra yang dapat digunakan untuk export import tersebut, seperti ZCS Exchange Migration Wizard, dan Zimbra PST Migration Wizard. Namun kedua tools tersebut setelah digunakan, hasilnya tidak seperti apa yang saya inginkan, dan malah bisa dibilang sangat jauh dari hasil sempurna.

Pertama, tools ZCS Exchange Migration Wizard, hasil export import ke Zimbra, email dengan mode html, body emailnya jadi blank, ditambah tools tersebut sudah deprecated

Kedua, tools Zimbra PST Migration Wizard, untuk menjalankan tools ini dibutuhkan file PST hasil export dari Microsoft Outlook yang sudah terkonfigurasi akun Exchangenya. Dan proses export PST ini bisa dibilang harus dilakukan satu persatu disisi user, sedangkan jika jumlah usernya banyak, lebih dari 1000, tools ini malah jadi merepotkan

Akhirnya opsi terakhir yang dipilih, yaitu menggunakan imapsync. Ada beberapa syarat yang bisa dibilang harus dipenuhi sebelum menjalankan imapsync, diantaranya :

  1. Imapsync normalnya biasanya memerlukan password akun dari mailbox server lama yang akan disinkronisasikan dengan mailbox server baru. Password bisa beda, tapi harus tahu keduanya. Bisa disamakan password-passwordnya, namun untuk hal tersebut, ada beberapa pertimbangan dibawah ini yang harus dipikirkan dahulu seperti :
  2. Menyamakan password untuk 1-2 akun bisa saja, namun kalau jumlah usernya ada ratusan/ribuan, menyamakan password menjadi kendala, meskipun bisa dilakukan by script, tentunya aspek keamanan dan integritas data akan menjadi pertanyaan nantinya

Untungnya imapsync saat ini menyediakan satu parameter yang sangat berguna, yaitu –authuser, artinya dengan parameter tersebut, kita bisa melakukan sinkronisasi mailbox antar kedua server hanya dengan mengetahui password admin dari masing-masing email server.

Namun sebelum menjalankan imapsync, saya mendapat informasi dari beberapa sumber, khususnya dari Microsoftnya langsung, pada Exchange defaultnya akun administrator tidak bisa digunakan sebagai authuser untuk imapsync karena alasan keamanan, bahkan fitur IMAP pada akun administrator statusnya disable dan tidak bisa di enable. Untuk mengatasi masalah tersebut, kita bisa buat satu user baru/jika sudah ada user existing, bisa digunakan lalu berikan hak akses sebagai administrator kepada akun tersebut.

Baca juga : Mengatasi Error 400 Bad Request Setelah Upgrade Zimbra

Jalankan perintah berikut pada Exchange Management Shell

Get-Mailbox -ResultSize Unlimited | Add-MailboxPermission -AccessRights FullAccess -User akun-migrasi
Get-MailboxDatabase | Add-ADPermission -User "akun-migrasi" -AccessRights ExtendedRight -ExtendedRights Send-As,Receive-As,ms-Exch-Store-Admin

Note : akun-migrasi merupakan akun biasa yang saya set sebagai administrator menggunakan command diatas, jadi nanti imapsync bisa pakai authuser dari akun-migrasi

Selanjutnya silakan jalankan imapsync, saya biasanya menjalankan imapsync di destination (server Zimbra) dengan beberapa parameter seperti berikut

imapsync --host1 mail.serverlama.com --user1 [email protected] --authuser1 [email protected] --password1 Password_Akun_Migrasi --ssl1 \
--host2 localhost --user2 [email protected] --authuser2 [email protected] --password2 Password_Admin_Zimbra --ssl2

Perintah diatas dijalankan hanya untuk 1 user saja, bagaimana langsung untuk seluruh user? kita bisa gunakan for untuk looping seluruh akun, jadi seperti berikut

su - zimbra -c "zmprov -l gaa | sort" >> /srv/list-user.txt
for i in `cat /srv/list-user.txt`; do 
imapsync --host1 mail.serverlama.com --user1 $i --authuser1 [email protected] --password1 Password_Akun_Migrasi --ssl1 \
--host2 localhost --user2 $i --authuser2 [email protected] --password2 Password_Admin_Zimbra --ssl2; 
done

Baca juga : Mengatasi S3QL Error “Backend reports that fs is still mounted elsewhere, aborting”

Tips selanjutnya yaitu, pada user-user Exchange biasanya menu seperti Inbox, Draft, Sent, Trash, terkadang ada beberapa user yang menggunakan bahasa Indonesia sehingga menu tersebut berubah menjadi Kotak Masuk, Konsep, Item Terkirim, Tempat Sampah, sehingga ketika di imapsync, hasil pada email server tujuan, yaitu Zimbra, malah jadi buat Folder menu baru seperti berikut

Mail Folder

Untuk mengatasi hal tersebut, kita bisa tambahkan parameter –regextrans2, seperti –regextrans ‘s/Kotak Masuk$/Inbox/’, arti dari regex ini yaitu email yang berada pada folder Kotak Masuk di server lama, akan sinkronisasikan ke folder Inbox pada server baru. Pada imapsync jadinya seperti berikut, saya buat beberapa kemungkinan yang terjadi pada regextrans2

for i in `cat /srv/list-user.txt`; do 
imapsync --host1 mail.serverlama.com --user1 $i --authuser1 [email protected] --password1 Password_Akun_Migrasi --ssl1 \
--host2 localhost --user2 $i --authuser2 [email protected] --password2 Password_Admin_Zimbra --ssl2 \
--regextrans2 's/Kotak Masuk$/Inbox/' \
--regextrans2 's/Item Terkirim$/Sent/' \
--regextrans2 's/Konsep$/Draft/' \
--regextrans2 's/Sent Items$/Sent/' \
--regextrans2 's/Junk Email$/Junk/' \
--regextrans2 's/Deleted Items$/Trash/' \
--regextrans2 's/Email Sampah$/Trash/' \
--regextrans2 's/Tempat Sampah$/Trash/'
done

Tambahan, apabila ingin ditambahkan option date range, jadi tidak semua data di migrasi, misal hanya data dari tanggal sekian hingga sekian, bisa pakai option –search “SENTSINCE 1-Jun-2020”, –search “SENTBEFORE 31-Jun-2020”, atau penggabungan keduanya, –search “SENTSINCE 1-Jun-2020 SENTBEFORE 31-Jun-2020”, berikut contohnya seperti berikut

for i in `cat /srv/list-user.txt`; do 
imapsync --host1 mail.serverlama.com --user1 $i --authuser1 [email protected] --password1 Password_Akun_Migrasi --ssl1 \ 
--host2 localhost --user2 $i --authuser2 [email protected] --password2 Password_Admin_Zimbra --ssl2 \ 
--regextrans2 's/Kotak Masuk$/Inbox/' \ 
--regextrans2 's/Item Terkirim$/Sent/' \ 
--regextrans2 's/Konsep$/Draft/' \ 
--regextrans2 's/Sent Items$/Sent/' \ 
--regextrans2 's/Junk Email$/Junk/' \ 
--regextrans2 's/Deleted Items$/Trash/' \ 
--regextrans2 's/Email Sampah$/Trash/' \ 
--regextrans2 's/Tempat Sampah$/Trash/'
--search "SENTSINCE 1-Jun-2020"
done

Mungkin cukup sekian untuk tips kali ini, semoga bermanfaat

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.