Sesuai dengan tulisan saya sebelumnya mengenai Cara Install Zimbra 8 Di CentOS 6 mari kita lanjut artikel tersebut dengan judul Cara Migrasi Email Dari Postfix Ke Zimbra

dengan sangat kebetulan ada relasi yang request migrasi Email Server dari Postfix Ke Zimbra. dikarenakan relasi tidak terbiasa dengan tampilan postfixadmin.

dikarenakan guide dari wiki zimbra terlalu banyak dan tidak ada feedback dari yang penggunanya. saya menggunakan metode migrasi menggunakan LDAP.

lalu apa LDAP itu?

Lightweight Directory Access Protocol atau lebih dikenal dengan singkatan LDAP adalah protokol perangkat lunak yang memungkinkan semua orang mencari resource organisasi, perorangan dan lain-lain seperti file atau printer di dalam jaringan baik di internet atau intranet. LDAP sering digunakan di cloud system. LDAP dapat digunakan sebagai sumber authentikasi aplikasi jaringan seperti authentikasi mail server, vpn server, file server, dan layanan server lainnya yang mendukung LDAP.

ldap
Mengenal LDAP

 

Sebagai contoh, sebuah direktori telepon yang memiliki berbagai nama pelanggan yang diurutkan secara alfabetis dengan nomor telepon dan alamat yang terkait adalah contoh dari sebuah direktori. Struktur semacam ini dengan mudah dapat diimplementasikan menggunakan LDAP. protokol LDAP tidak terbatas hanya untuk mengakses informasi kontak tentang orang-orang saja. Hal ini dapat menemukan sumber daya berbagi pada jaringan seperti printer dan scanner, dan memungkinkan orang untuk menggunakan sumber daya dan layanan bersama lainnya menggunakan password tunggal.

oke kita lanjut lagi bagaimana Cara Migrasi Email Dari Postfix Ke Zimbra.

Cara Migrasi Email Dari Postfix Ke Zimbra

1. Migrasi Email User dari server lama dengan format mysql ke LDAP
Kita akan menggunakan script PHP untuk menarik dan membuat data backup dari database dan bash script untuk membuat user ke LDAP.

pertama-tama check terlebih dahulu database pada server lama

fx@fx:~$ mysql -u admin -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 23145 to server version: x.x.xx
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> use postfix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_mail        |
+-----------------------+
| admin                 |
| alias                 |
| alias_domain          |
| config                |
| domain                |
| domain_admins         |
| fetchmail             |
| log                   |
| mailbox               |
| quota                 |
| quota2                |
| vacation              |
| vacation_notification |
+-----------------------+
13 rows in set (0.00 sec)

jika sudah ketahuan dari hasil intip database postfix pada server lama. mari kita buat file bash script

#!/usr/bin/php5
// Postfix.admin to Zimbra import
//
// Created by Jarosław Czarniak on 26-10-2008
// Modified By Gigih Forda Nama : 2011



simpan file diatas menjadi backup.php lalu jalankan perintah ini pada terminal anda

fx@fx:~$ php backup.php

otomatis hasil eksekusi file backup.php akan menghasilkan file bash script dengan nama exported.sh yang nantinya akan di jalankan pada server baru yang akan di install zimbra

lalu setelah file exported telah di upload ke server baru

jalankan perintah seperti dibawah ini

root@zimbra:# su zimbra
zimbra@zimbra:$
zimbra@zimbra:./exported.sh

jangan lupa anda menjalankan perintah diatas menggunakan screen. tujuannya agar anda tidak perlu repot-repot lagi menunggu dan biarkan script itu bekerja hingga selesai

2. Pemindahan data email
Data email pada server lama (postfix) berada pada direktory /data/mail_user/ menggunakan format Maildir-nya Postfix

silahkan anda upload isi dari direktori tersebut menggunakan scp atau rsync dan arahkan file tersebut ke /usr/local/virtual/ pada server zimbra

biasanya format baku dari folder email biasanya adalah

"domain/username/{cur|new|tmp}"
"domain/username/subfolder1/{cur|new|tmp}"
"domain/username/subfolder2/{cur|new|tmp}"

jika proses upload data email pada server lama ke server baru sudah selesai
silahkan cek kembali hasilnya

root@zimbra:/usr/local/virtual# pwd
/usr/local/virtual
root@zimbra:/usr/local/virtual# ll
-rwxr-xr-x  1 root root 2083 2011-08-04 02:28 mailconvert.sh*
drwxr-xr-x  3 root root 4096 2011-08-04 02:26 gemaroprek.com/
root@zimbra:/usr/local/virtual#
root@zimbra:/usr/local/virtual# du -h | more
4.0K    ./gemaroprek.com/fx/.inbox_baru/new
4.0K    ./gemaroprek.com/fx/.inbox_baru/courierimapkeywords
4.0K    ./gemaroprek.com/fx/.inbox_baru/tmp
22M     ./gemaroprek.com/fx/.inbox_baru/cur
22M     ./gemaroprek.com/fx/.inbox_baru

jika semua data sudah benar-benar dipindah. mari kita membuat file mailconvert.sh dan akan dieksekusi oleh user zimbra

#!/bin/bash

# Postfix virtual transport -> Zimbra mailbox migration
# written by NERvOus (http://www.nervous.it) - 2009-12-25, Modified By Gigih Forda Nama 2011

# base folder where msgs will be imported
BFOLDER="Arsip-Mail"
ZMMBOX="/opt/zimbra/bin/zmmailbox"
BDIR=$(pwd)

echo You must run $0 from inside /var/mail/virtual directory
echo $0 expects to find the mailboxes in the current path!
echo The structure of maildirs must be as follows:
echo
echo "domain/username/{cur|new|tmp}"
echo "domain/username/subfolder1/{cur|new|tmp}"
echo "domain/username/subfolder2/{cur|new|tmp}"
echo ...
echo
echo All folders will be stored in a subfolder called $BFOLDER
echo The hierarchy of subfolders will be maintained under $BFOLDER.
echo
echo Press Enter to start, CTRL+C to abort.
read

# handle folders with a space inside, they are more common than you may
# think
IFS='
'
for p in $(find . -type d -name cur); do
        DOMAIN=`echo $p | cut -d'/' -f2`
        UNAME=`echo $p | cut -d'/' -f3`
        DIRNAME=`echo $p | cut -d'/' -f4`
        # this may fail, if folder already exists. Who cares. Ignore the
        # error.
        echo createFolder /$BFOLDER | $ZMMBOX -z -m $UNAME@$DOMAIN
        if [ "$DIRNAME" == "cur" ]; then
                echo Importing INBOX folder for $UNAME@$DOMAIN from $BDIR/$DOMAIN/$UNAME/ 1>&2
                # we are importing the top level folder
                echo addMessage /$BFOLDER $BDIR/$DOMAIN/$UNAME/cur | $ZMMBOX -z -m $UNAME@$DOMAIN
                echo addMessage /$BFOLDER $BDIR/$DOMAIN/$UNAME/new | $ZMMBOX -z -m $UNAME@$DOMAIN
        else
                DIRNAME=$(echo $DIRNAME | sed -e 's//cur$//')
                echo Importing folder $DIRNAME for $UNAME@$DOMAIN from $BDIR/$DOMAIN/$UNAME/$DIRNAME 1>&2
                echo createFolder '/$BFOLDER/$DIRNAME' | $ZMMBOX -z -m $UNAME@$DOMAIN
                echo addMessage '/$BFOLDER/$DIRNAME' '$BDIR/$DOMAIN/$UNAME/$DIRNAME/cur' | $ZMMBOX -z -m $UNAME@$DOMAIN
                echo addMessage '/$BFOLDER/$DIRNAME' '$BDIR/$DOMAIN/$UNAME/$DIRNAME/new' | $ZMMBOX -z -m $UNAME@$DOMAIN
        fi
done

simpan file diatas pada folder /usr/local/virtual lalu edit permission filenya

root@zimbra:/usr/local/virtual# chmod +x mailconvert.sh

lalu eksekusi file tersebut

root@zimbra:/usr/local/virtual# su zimbra
zimbra@zimbra:/usr/local/virtual$ ./mailconvert.sh

setelah selesai hasilnya akan seperti dibawah ini

Cara Migrasi Email Dari Postfix Ke Zimbra
Cara Migrasi Email Dari Postfix Ke Zimbra

Selamat mencoba artikel Cara Migrasi Email Dari Postfix Ke Zimbra 🙂

jika anda mengalami kendala atau tidak paham silahkan kirim komentar atau anda juga dapat menggunakan jasa instalasi zimbra yang kami sediakan

Referensi:
Password Migration
Maildir to zmmailbox with bash
– Pengalaman pribadi penulis