Sedikit Catatan Migrasi Vpopmail ke Zimbra

zimbra_logoBerikut ini sedikit catatan pengalaman saya yang mungkin bermanfaat sewaktu memigrasikan sejumlah account email (350+) dari vpopmail ke Zimbra beberapa waktu yang lalu. Dalam catatan ini saya akan bahas secara garis besarnya aja.

Sebelumnya perlu diingat bahwa memigrasikan sebuah sistem ke sistem lain itu lebih rumit dari pada membuat sistem baru. Maka dari itu persiapkanlah jauh-jauh hari apa yang bisa dikerjakan terlebih dahulu, meskipun itu hal yang kecil (misalnya dokumentasi) sehingga dalam proses migrasi nanti berjalan smooth dan Anda tidak jatuh dalam DRY/DIE. Jangan lupa catat semua yang dilakukan agar mempermudah tracking jika ada sesuatu yang tidak berjalan.

Beberapa hal yang perlu dipersiapkan sebelum migrasi dari sistem lama adalah :

  • Daftar account dan informasi pendukung yang dibutuhkan seperti password, nama lengkap dan quota
  • Daftar mailing-list
  • Daftar alias (forward .qmail)
  • Data address book webmail (jika ada)

Kemudian pada sistem baru  sebaiknya :

  • Zimbra diinstall pada partisi yang cukup (paling) besar, lebih baik partisi /opt dipisahkan
  • Mengaktifkan clear-text login pada servis IMAP (digunakan untuk sinkronisasi mailbox)
  • Mensetting IMAP agar menerima mail dengan ukuran besar (misalnya 50MB) untuk mengantisipasi email ukuran besar dari sistem lama (zimbraMtaMaxMessageSize dan zimbraMailContentMaxSize)

Account

Data user (account) yang akan dimigrasikan bisa diambil dari vpasswd. Data tersebut meliputi account, password (yang dienkripsi), clear password (kecuali jika vpopmail dikompile dengan –-disable-clear-passwd), nama lengkap dan quota. Sebagian penjelasan struktur field vpasswd adalah seperti ini (seperti yang dijelaskan oleh pak Ken Jones disini) :

passwd

Dengan memanfaatkan perintah zmprov, maka account yang telah ada tersebut bisa dibuat di server baru dengan melakukan looping pada file tersebut. Contoh perintah untuk membuat asfik@domain.tld (nama lengkap Asfihani) dengan password rahasia adalah :

zmprov ca asfik@domain.tld rahasia displayName 'Asfihani'

Password

Di Zimbra selain bisa menerima argumen clear-password pada saat membuat account, bisa dimungkinkan untuk mengganti account yang telah ada dengan cara memodifikasi atribut userPassword account ybs. Yang sudah saya coba adalah algoritma enkripsi CRYPT.  Cara ini sangat berguna untuk memigrasikan sebuah sistem lama ke sistem yang baru tanpa mengganti password user lama. Sehingga dari sisi pengguna, migrasi ini berjalan secara transparan tanpa ada proses reset password.

Quota

Informasi quota di vpopmail bisa diambil dari file vpasswd. Dengan mengubah attribut zimbraMailQuota kita dapat menerapkan quota tersebut.  Contoh untuk menerapkan quota 20MB (20971520 bytes) pada account asfik@domain.tld dengan zmprov adalah :

zmprov ma asfik@domain.tld zimbraMailQuota 20971520

Mailbox

Data paling penting yang harus dipindahkan tentunya adalah email-email account atau kita sebut saja mailbox. Untuk memindahkan data tersebut kita manfaatkan tool imapsync yang berfungsi untuk menyalin data dari sistem lama ke sistem baru menggunakan protokol IMAP. Contoh untuk memigrasikan account asfik@domain.tld dari server lama (10.126.10.10) ke localhost (Zimbra) dengan password rahasia menggunakan imapsync adalah sebagai berikut :

imapsync --buffersize 8192000 --nosyncacls --subscribe --syncinternaldates --noauthmd5 \
--host1 10.126.10.10 --user1 asfik@domain.tld --password1 rahasia \
--host2 127.0.0.1 --user2 asfik@domain.tld --password2 rahasia

Proses ini memakan waktu cukup lama. Pengalaman saya memindahkan 350 mailbox secara sekuensial dengan ukuran total 20 GB memakan waktu +- 5 jam! Mungkin jika Anda mempunya sumber daya perangkat yang memadai hal ini bisa dicoba dilakukan secara pararel :)

Alias

Alias (atau dot-forward) di vpopmail bisa dilihat pada direktori domain ybs dengan memperhatikan file .qmail-* atau menggunakan tool qmailadmin. Contoh untuk menambahkan alias asfihani@domain.tld ke account asfik@domain.tld :

zmprov aaa asfik@domain.tld asfihani@domain.tld

Mailing-list

Memindahkan mailing-list dari sistem vpopmail (tepatnya ezmlm) ke Zimbra memang sedikit tricky. Hal ini disebabkan karena Zimbra belum ada fitur mailing list seperti ezmlm. Memang sudah ada Distribution List yang sudah cukup untuk sekedar meneruskan email ke beberapa orang, namun fitur-fitur sebuah mailing-list seperti proteksi posting hanya dari member masih belum bisa dilakukan.

Untuk mengatasi hal ini kita gunakan GNU Mailman dengan Apache dan Postfix yang listen di port yang lain (karena port default sudah digunakan oleh Zimbra). Kemudian pada Zimbra kita buat seluruh email alias dari Mailman tersebut (admin, bounces, confirm, join, leave, owner, request, subscribe, unsubscribe) untuk diredirect ke Postfix pada port alternatif tersebut dengan cara mengubah atribut zimbraMailTransport. Kalau digambarkan flow email yang mengarah ke mailing list kira-kira seperti ini:

zimbra_mailman

Untuk melihat mailing-list yang ada di sistem lama bisa menggunakan tool qmailadmin  atau beberapa perintah berikut ini yang mungkin bisa membantu:

Daftar moderator:
$ezmlm-list DIR/mod/

Daftar member:
$ezmlm-list DIR/

Prefix subject mailing list :
$cat DIR/prefix

Footer (jika ada) :
$cat DIR/text/trailer

Dimana DIR adalah direktori mailing-list,  misalnya: /home/vpopmail/domains/domain.tld/list-name

Update: jika Anda tidak ingin menginstall Postfix dan Apache tambahan bisa mengikuti tutorial ini (Thanks Mas Dudi).

Address Book

Jika sistem lama menggunakan Squirrelmail sebagai webmailnya, maka data address book masing-masing user bisa dikonversi menjadi format CSV. Di Zimbra, import address book (Contact) menerima file CSV dengan format sebagai berikut :

"First Name","Last Name","E-mail Address","E-mail Display Name"

Untuk mengimport file address book di Zimbra bisa memanfaatkan perintah zmmailbox, misalnya perintah untuk mengimport file asfik_domain_tld.csv yang berisi address book ke account asfik@domain.tld :

zmmailbox -z -m asfik@domain.tld pru /Contacts asfik_domain_tld.csv

Demikian sedikit catatan yang mungkin berguna. Tertarik melakukan migrasi atau punya pengalaman yang bisa dishare? Silakan menulis komentar dibawah ini :)

9 Replies

  • tantangan terberat migrasi mail server itu ada 2 hal kalau menurut saya. yang pertama adalah downtime yang minimal dan yang kedua adalah tidak adanya perubahan preferensi apapun disisi end user.

    kalau memigrasi dari lama ke baru dengan system yang sama mungkin tidak ada masalah, tapi kalau berbeda baru jadi masalah. khususnya masalah enkripsi password yang belum tentu disupport.

    saya pernah punya masalah memindahkan password user di /etc/shadow pada opensuse untuk dipindahkan ke courier-authlib. karena courier-authlib tidak mendukung blowfish, sedangkan opensuse default passwordnya menggunakan blowfish. tapi akhirnya bisa diatasi dengan menggunakan library yang support blowfish untuk courier-nya.

  • @ryosaeba: gambarnya masih pakai edraw di windows mas ryosaeba :)

    @dudi: terima kasih infonya mas dudi, sudah saya update tulisannya diatas, alternatif tersebut bagus sekali, tapi pengalaman saya kalau upgrade zimbra (walaupun sudah modifikasi di localconfig), file main.cf selalu direset jadi bawaannya zimbra :), tapi sekali lagi thans info dan sharenya.

  • bukmak ah,
    sementara masih betah sama postfix+fetchmail+ghosted, entah nanti kalo emang perlu migrasi, sebenernya gatel juga pengen nyoba zimbra tapi berhubung saya sendiri penganut “if it ain’t broken, don’t fix it” jadi mungkin nunggu crash dulu :D

  • @asfik: kalau gak mau direset oleh zimba. settingnya letak-kan di main.cf.in. jadi nanti setiap zimbra direstart tidak akan mengalami perubahan

    @idban: daripada pake zimbra mending pake iredmail (iredmail.org) ban. lebih enteng dan simpel :). *tendang idban balik ke kampung*

Leave a Reply

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