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.
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/usr/bin/php5 // Postfix.admin to Zimbra import // // Created by Jarosław Czarniak on 26-10-2008 // Modified By Gigih Forda Nama : 2011 <?php ///////////////////////////////////////////////////////// $user="Your_mysql_login"; $pass="Your_mysql_pass"; $base="Your_mysql_database"; $tabl="Your_Table_mailbox"; //table $file="exported.sh"; ///////////////////////////////////////////////////////// echo "Usage: as "zimbra" user on destination server:n"; echo "# sh ./exported.shnn"; echo ""; $mydb = mysql_connect('localhost',$user, $pass) or die ('Error of connection with server'); mysql_select_db($base); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET NAMES utf8"); $query = "SELECT username,password,name,maildir,quota,domain FROM ".$tabl; $dane = mysql_query($query) or die ('Error during query for bazy1'.mysql_error()); $handle = fopen($file, "w"); while ($row = mysql_fetch_array($dane, MYSQL_NUM)) { $StringData = "zmprov ca ".$row[]." dsfs123hsdyfgbsdgfbsd displayName '".$row[2]."'n"; fwrite($handle, $StringData); $StringData = "zmprov ma ".$row[]." userPassword '{crypt}".$row[1]."'"."n"; fwrite($handle, $StringData); } ?> |
simpan file diatas menjadi backup.php lalu jalankan perintah ini pada terminal anda
1 |
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
1 2 3 |
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
1 2 3 |
"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
1 2 3 4 5 6 |
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# |
1 2 3 4 5 6 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#!/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 $ from inside /var/mail/virtual directory echo $ 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
1 |
root@zimbra:/usr/local/virtual# chmod +x mailconvert.sh |
lalu eksekusi file tersebut
1 2 |
root@zimbra:/usr/local/virtual# su zimbra zimbra@zimbra:/usr/local/virtual$ ./mailconvert.sh |
setelah selesai hasilnya akan seperti dibawah ini
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
bumi
November 25, 2015mas…mau nanya, maksudnya pake screen untuk kalimat berikut ini apa ?, saya tidak mengerti “jangan lupa anda menjalankan perintah diatas menggunakan screen. tujuannya agar anda tidak perlu repot-repot lagi menunggu dan biarkan script itu bekerja hingga selesai”
karena saya ikuti petunjuk diatas ada error seperti ini “[root@webmail2 zimbra]# ./exported.sh
./exported.sh: line 1: zmprov: command not found
[root@webmail2 zimbra]#
“
ArieL FX
November 25, 2015hai mas bumi, silahkan diteliti kembali artikel ini. jalankan perintah tersebut dengan user zimbra. jangan root
untuk mengenal lebih jauh tentang screen, silahkan klik link ini
Arie
January 5, 2018Mas, mau tanya.. saya mau migrasikan mailbox dari ISP Config (Postfix) ke Zimbra.
Saya sudah mengikuti step by step dari tutorial diatas, namun ada perbedaan di format folder emailnya.
Format folder emailnya, sebagai berikut :
psmti.org/admintes/Maildir/cur
Script nya bagaimana ya mas?
Mohon bantuannya.
ArieL FX
March 19, 2018tinggal ganti sesuai nama folder anda mas 🙂