Monday, November 25, 2013

Imapsync Tanpa Password User

Wihartoyo     Monday, November 25, 2013    

Imapsync adalah tools untuk melakukan sinkronisasi email berbasis IMAP antara dua server yang berbeda.  Untuk kepentingan migrasi e-mail Zimbra disamping menggunakan internal module zmmailbox untuk ekstrak mailbox dan import message ke mailbox, kita bisa juga menggunakan imapsync.  Namun, kekurangan dari menggunakan zmmailbox adalah bahwa e-mail yang kita import akan mempunyai tanggal "received date" yang seragam yaitu tanggal pada saat message kita import ke mail system kita. Tapi, bila kita menggunakan imapsync, dari sekian banyak contoh yang bertebaran di internet, kita selalu diberikan contoh yang selalu harus memberikan password user.  Meskipun itu dimasukkan kedalam satu file plain text.  Nah, kali ini saya akan mencoba mengurai penggunaan imapsync yang tanpa harus memberikan password user.  Namun, tetap, password admin harus kita punya, atau dengan kata lain kita melakukan sinkronisasi dengan menggunakan privilege admin.

Install Imapsync
Petama kali kita harus menginstall pre-requisite dari aplikasi imapsync

root@mail:~#apt-get install libdate-manip-perl libterm-readkey-perl \
libterm-readkey-perl libdigest-hmac-perl libdigest-hmac-perl \
libdate-manip-perl libmail-imapclient-perl makepasswd \
rcs perl-doc libmail-imapclient-perl make git-core git-doc git-svn git-gui gitk

Kemudian kita clone source imapsync dengan perintah:

root@mail:~#cd /opt
root@mail:/opt#git clone git://github.com/imapsync/imapsync.git

root@mail:/opt#cd imapsync/
root@mail:/opt/imapsync#make install

Sinkronisasi Email
Umumnya untuk melakukan singkronisasi e-mail menggunakan imapsync kita menggunakan perintah yang baku sebagai berikut


root@mail:~#imapsync --host1 [host-sumber] --ssl1(bila digunakan) --user1 [email@domain-sumber] --password1 [passworduser-sumber]\
--host2 [host-target] --ssl2(bila digunakan) --user2 [email@domain-target] --password2 [passworduser-target]

Perhtikan bahwa kita harus mensuplai password.  Permasalahan dengan hal ini adalah bahwa kita harus tahu seluruh username dan password untuk seluruh akun yang terdaftar pada mail system kita. Googling punya googling ternyata ada satu direction yang bisa kita gunakan untuk melakukan singkronisasi tanpa harus mengetahui password user.  Direction yang kita gunakan adalah "--authuser[x]" dimana authenticated user yang digunakan adalah admin user sehingga kita bisa baca dan tulis seluruh content milik seluruh akun yang terdaftar.  Ok kita coba..


Contohnya:

User: saya@domain.co.id host1: 10.11.12.13 host2: 14.15.16.17 ssl

root@mail:~#imapsync --host1 10.11.12.13 --ssl1 --authuser1 admin --user1 saya@domain.co.id \
--host2 14.15.16.17 --ssl2 --user2 saya@domain.co.id

Oppps.......! Tapi ternyata mail system meminta password admin secara interaktif.


root@mail:~#imapsync --host1 10.11.12.13 --ssl1 --authuser1 admin --user1 saya@domain.co.id \
--host2 14.15.16.17 --ssl2 --user2 saya@domain.co.id
Temp directory is /tmp
PID file is /tmp/imapsync.pid
Modules version list:
Mail::IMAPClient 3.30
IO::Socket 1.32
IO::Socket::IP ?
IO::Socket::INET 1.31
IO::Socket::SSL 1.53
Net::SSLeay 1.42
Digest::MD5 2.51
Digest::HMAC_MD5 1.01
Digest::HMAC_SHA1 1.03
Term::ReadKey 2.30
Authen::NTLM ?
File::Spec 3.33
Time::HiRes 1.972101
URI::Escape 3.31
Data::Uniqid ?

Info: turned ON syncinternaldates, will set the internal dates (arrival dates) on host2 same as host1.
Info: will try to use PLAIN authentication on host1
Info: will try to use PLAIN authentication on host2
Info: imap connexions timeout is 120 seconds
Host1: IMAP server [10.11.12.13] port [993] user [saya@domain.co.id]
Host2: IMAP server [14.15.16.17] port [993] user [saya@domain.co.id]
What's the password for admin@10.11.12.13?
What's the password for admin@14.15.16.17?
Host2: * OK IMAP4 ready
Host2: 14.15.16.17 says it has CAPABILITY for AUTHENTICATE PLAIN
Host2: success login on [14.15.16.17] with user [hartoyo_opr@collega.co.id] auth [PLAIN]
Host1: state Authenticated
Host2: state Authenticated
Host1 capability: IMAP4rev1 ACL BINARY CATENATE CHILDREN CONDSTORE ENABLE ESEARCH ESORT I18NLEVEL=1 ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ LOGIN-REFERRALS MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SEARCHRES SORT THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN XLIST
Host2 capability: IMAP4rev1 ACL BINARY CATENATE CHILDREN CONDSTORE ENABLE ESEARCH ID IDLE LIST-EXTENDED LITERAL+ LOGIN-REFERRALS MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SEARCHRES UIDPLUS UNSELECT WITHIN
Host1 separator and prefix: [/][]
Host2 separator and prefix: [/][]

< < dan seterusnya dipotong


Hmmm..... gak masalah harus masukin password admin tapi kok ya harus key-in sih? Tapi, coba kita perhatikan, bahwa password admin untuk satu akun diminta 2 kali.  Satu kali untuk sumber dan satu kali untuk target. Bagaimana kalau kedua password kita rekam dalam satu plain text, sebut aja namanya adminpass.txt dan kita sertakan dalam command line kita sebagai standar input sehingga perintahnya akan menjadi begini.
Content adminpass.txt
root@mail:~#cat adminpass.txt
passadminchar
passadminchar
Eksekusi perintah....
root@mail:~#imapsync --host1 10.11.12.13 --ssl1 --authuser1 admin --user1 saya@domain.co.id \
--host2 14.15.16.17 --ssl2 --user2 saya@domain.co.id <./adminpass.txt
Ok tinggal ditest, dan bila berhasil maka tinggal digabung dengan tools internal zimbra untuk mensingkronisasi seluruh akun.


(Langkah-langkah di atas telah dicobakan untuk installasi zimbra community edition versi 5 dan 8 baik sebagai target maupun sebgai sumber. Zimbra 5 terinstall pada OpenSuSE 10 32bit, sementara Zimbra 8 terintall pada Ubuntu 12.04 64bit)

Recommended