Tips dan Trick

Tips Imapsync Untuk Migrasi Mailbox dari Microsoft Exchange ke Zimbra

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 user1@domain.com --authuser1 akun-migrasi@domain.com --password1 Password_Akun_Migrasi --ssl1 \
--host2 localhost --user2 user1@domain.com --authuser2 admin@domain.com --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 akun-migrasi@domain.com --password1 Password_Akun_Migrasi --ssl1 \
--host2 localhost --user2 $i --authuser2 admin@domain.com --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

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 akun-migrasi@domain.com --password1 Password_Akun_Migrasi --ssl1 \
--host2 localhost --user2 $i --authuser2 admin@domain.com --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 akun-migrasi@domain.com --password1 Password_Akun_Migrasi --ssl1 \ 
--host2 localhost --user2 $i --authuser2 admin@domain.com --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

Share
Published by
Rizky Pratama

Recent Posts

Cara Ubah Port SSH pada Ubuntu 24.04 LTS

Pada bulan April 2024 lalu, Ubuntu telah release versi terbaru yaitu Ubuntu 24.04 LTS, sehingga…

1 month ago

Membuat Command Alias Dengan Parameter pada .zprofile Mac OS

Ngga nyangka akhirnya saya bisa login kembali ke blog saya yang sudah berdebu ini, kali…

3 months ago

Tips Zimbra : Mengatasi Service Cbpolicyd Starting Failed Setelah Migrasi ke Rocky Linux 8

Beberapa waktu lalu, Excellent mendapatkan project migrasi Zimbra dari versi Open Source Ke Zimbra Network…

8 months ago

Mengatasi Error “no matching host key type found. Their offer: ssh-rsa,ssh-dss” Setelah Upgrade MacOS Ventura Saat Melakukan SSH

Bulan Oktober 2022 lalu, Apple resmi release MacOS terbaru mereka, yaitu MacOS Ventura. Beberapa fitur…

2 years ago

Cara Memindahkan Saham ke Sekuritas Lain

Tidak terasa sudah cukup lama saya tidak update tulisan pada blog ini lagi, akhirnya kali…

3 years ago

Tahun Baru, Markas Baru, Tulisan Baru

Tahun baru 2022 telah tiba, tidak terasa waktu berjalan begitu cepat, banyak cerita dan kenangan…

3 years ago