Migrasi Email Antar Server yang Berbeda OS dan Panel

Migrasi data antar server akan lebih mudah kalau platformnya sama (terutama OS dan Panel nya). Misalnya migrasi akun antar server cPanel sangat mudah karena difasilitasi oleh cPanel.

Nah, bagaimana kalau beda? Misalnya yang barusan saya lakukan dari sPanel nya MWN ke cPanel. Kalau kita punya akses root ke server sPanel sih mudah karena sPanel memberikan fasilitas migrasi ke cPanel. Lha kalau hanya sebagai user biasa bagaimana?

Kalau untuk file web dan database mudah migrasinya. Untuk file web tinggal download dan masukkan ke server baru. Untuk database bisa di-dump/export dulu baru dimasukkan ke server baru.

Nah, untuk email ini yang kadang masalah, karena bisa jadi beda software dan letak direktorinya. Cara yang paling efektif adalah login dengan protokol yg sudah disepakati semua server misalnya imap. Ada tool yang sangat membantu migrasi email bernama imapsync.

Berikut ini cara install dan menjalankannya. (Saya menggunakan debian based server)

sudo apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl

git clone git://github.com/imapsync/imapsync.git

sudo cpan
cpan> install Unicode::String
cd imapsync
mkdir dist
sudo make install

#check
imapsync -v
1.678

#jalankan

imapsync –host1 server1 -user1 user@server1 –password1 user1password –ssl1  –host2 server2 –user2 user@server2 –password2 user2password –ssl2

server1 : server asal
user1 : user asal
pass1 : password asal

server2 : server tujuan
user2 : user tujuan
pass2 : password tujuan

Tuning Slow ZFS

Saya telah menginstall ZFS dengan setting default. Ternyata performa untuk write nya sangat lambat sekitar 50 Mb/s, jauh di bawah harapan saya menggunakan ZFS.

Setelah membaca artikel dari https://icesquare.com/wordpress/how-to-improve-zfs-performance/ dan mencoba beberapa sarannya, saya dapat bahwa yang paling berpengaruh adalah kompresi.

Jadi, inilah obat paling mujarabnya:

zfs set compression=lz4 namaPoolAnda

zfs set xattr=sa namaPoolAnda

Setelah itu, performa write menjadi lebih dari 1Gb/s. Mantab.

That’s all folks.

Install Zimbra Collaboration – Open Source Version di Ubuntu 12.04

  • Install ubuntu server 12.04 yang 64bit. Bisa install di server fisik atau sebagai virtual server.
  • Karena ada bug di systat bawaan, maka kita harus menghapusnya dan mengganti dengan versi yg lebih baru.

sudo apt-get remove –purge sysstat

wget https://launchpad.net/ubuntu/+source/sysstat/9.0.6-2/+build/1453608/+files/sysstat_9.0.6-2_amd64.deb

sudo dpkg -i sysstat_9.0.6-2_amd64.deb

sudo apt-mark hold sysstat

  • Hapus semua paket yang bisa bertabrakan dengan zimbra

sudo apt-get remove –purge apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common bind9 bind9-host bind9utils sendmail sendmail-base sendmail-bin sendmail-cf sendmail-doc-sensitive mda rmail samba bsd-mailx

  • Install dependencies

sudo apt-get install netcat-openbsd libgmp3c2 sysstat sqlite3 pax

#nama file bisa berbeda tergantung versi zimbra terbaru.

wget http://files2.zimbra.com/downloads/8.0.6_GA/zcs-8.0.6_GA_5922.UBUNTU12_64.20131203103702.tgz

  • Install

tar -xzvf zcs-8.0.6_GA_5922.UBUNTU12_64.20131203103702.tgz

cd zcs-8.0.6_GA_5922.UBUNTU12_64.20131203103702

./install.sh

Hal hal yang perlu dilakkan setelah selesai install:

  • Membuat ECDSA key

ssh-keygen -b 521 -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

  • Menjalankan zmlog pertama kali

sudo su – zimbra

/opt/zimbra/libexec/zmstatuslog

  • Restart

zmcontrol restart

  • Check Status

zmcontrol status

  • Memulai administrasi zimbra

https://nama-domain-anda::7071/zimbraAdmin/

User: admin

Password: sesuai yang dibuat saat instalasi

  • User biasa masuk ke:

https://nama-domain-anda/

 

 

 

 

 

 

MySQL Auto Increment vs PostgreSQL Sequence untuk Distributed System

Di semua engine database yang  pernah saya pakai, ada fasilitas untuk membuat sebuah baris data unik dengan cara selalu menambahkan angka secara otomatis dari baris sebelumnya. Biasanya menambahkan 1 dari sebelumnya, walaupun sebenarnya tidak harus tambah 1, bisa tambah 2,5, 10, dan seterusnya. Demikian juga dengan database populer seperti MySSQL dan PostgreSQL yang biasa saya pakai. Di MySQL namanya AUTO INCREMENT sedangkan di PostgreSQL namanya SEQUENCE.

Saya tidak akan menjelaskan bagaimana membuatnya, namun saya ingin menyampaikan pendapat pribadi bahwa SEQUENCE di PostgreSQL lebih “keren” dari pada AUTO INCREMENT di MySQL untuk implementasi sistem yang terdistribusi di mana setiap node server bisa menulis baris data sendiri dan di-broadcast ke node yang lainnya. Diperlukan cara agar tidak bentrok nilainya antara node satu dengan node lainnya.

Pendekatan yang sering dipakai adalah dengan membedakan start dan step increment-nya. Misalnya:

  • Node 1: dimulai dari 1 dan step incrementnya 10, artinya akan menghasilkan angka 1, 11, 21, 31, 41, dst.
  • Node 2: dimulai dari 2 dan step incrementnya 10, sehingga akan menghasilkan angka 2,12, 22, 31, 41, dst.

Dengan pendekatan tersebut di atas maka antara node 1 dan node 2 tidak akan bentrok nilainya.

Di MySQL hal tersebut hanya bisa dilakukan dengan melakukan setting di konfigurasi server atau di variable global yang akan mempengaruhi semua database dan tabel yang ada. Di PostgreSQL bisa di-setting di sebuah object sequence sendiri.

bagaimana kalau node nya lebih dari 10? bagaimana kalau lebih dari 100? lebih dari 1000? Maka step increment nya jadi semakin lebar. Ini bisa cepat menghabiskan digit angka. Mungkin untuk record database yang sedikit tidak masalah. Tapi kalau menatat jutaan record setiap hari bagaimana?

Saya tidak suka dengan pendekatan tersebut.  Saya lebih suka menggunakan key lain yang alhanumeric, misalnya UUID, atau microtime + random number yang harus digabung dengan ID dari node. Dengan demikian, akan selalu unik entah dari node mana record berasal.

Namun ada kalanya kita memang harus membuat sebuah key yang berupa angka, misalnya untuk transaksi pembayaran di bank, di mana di ATM tidak bisa input huruf untuk nomor pembayarannya. Untuk itu, SEQUENCE dari PostgreSQL lebih enak digunakan.

bagimana bisa? Lanjut nanti…

perintah “setup” tidak ada atau hilang di centos

[root@tel ~]# setup
-bash: setup: command not found

Biasanya ini terjadi kalau install centos yang minimal

Solusinya:

yum –y install setuptool
yum –y install system-config-network*
yum -y install system-config-firewall*
yum –y install system-config-securitylevel-tui
yum –y install system-config-keyborad

Ketinggalan Pesawat

Seperti halnya kereta api, pesawat itu punya kesaktiannya sendiri. Jika kita yang telat maka akan ditinggal, tapi jika pesawatnya yang telat kita susah untuk ninggalin tuh pesawat. Penumpang sudah harus check in dan menunggu 1 jam sebelum berangkat. Beberapa maskapai memang menerapkan city check in atau web check in, tapi tetap aja penumpang tidak boleh telat. Karena telat itu lah saya sering hampir ketinggalan pesawat. Bahkan ada pesawat di Jambi yang mau terbang gak jadi karena saya baru dateng. Tangga dipasang lagi. hehehe. Dan karena telat itu juga saya beberapa kali ketinggalan pesawat beneran. Hehehe.

Pertama, pagi hari saat mau ke Surabaya bersama teman saya H. Lima belas menit sebelum keberangkatan baru nyampe bandara. Wal hasil, check in sudah tutup dan terpaksa mencari tiket lagi dan dapetlah sore. Saya mengisi masa penantian dengan mainin laptop di bandara. Dan temen saya H, malah memilih pulang ke Depok dulu. Bayangkan Cengkareng Depok berapa lama. Ajaibnya,  1 jam sebelum pemberangkatan H sudah muncul. Masak di Depok cuman mau numpang kencing doang? hehehe.

Kedua, saat mau ke Palembang malam hari bersama S. Kami sudah 2 jam sebelum pemberangkatan nyampe bandara. Check in lancar sampai di ruang tunggu. Aman kan? Ternyata tidak. Kami berdua asyik ngobrol sampai tidak tahu ada pengumuman pemberangkatan di pindah ke gate lain. Begitu pas jam pemberangkatannya saya tanya ke petugas dan diberi tahu kalau melalui gate lain. Saat kami sampai ke gate tersebut pesawat sudah terbang. Nah loh. Karena tidak ada penerbangan lagi setelah itu akhirnya kami kleleran semaleman di bandara. hehehe.

Ketiga, pagi hari saat mau ke Jember lewat Surabaya bersama rombongan Pak D. karena saya telat bangunnya (ataukah jemputan pak D yang telat) akhirnya kami tiba di bandara 5 menit sebelum keberangkatan. Tentu saja sudah telat. Akhirnya berkat kebaikan hati Pak D yang bapaknya artis itu mbayarin tiket kami bertiga, kami bisa ke Surabaya pada penerbanyan pesawat lain. hehehe.

Keempat, sore hari dari Jember bersama Pak D tadi. Kami hanya berdua saja. Kami sudah membeli tiket secara online dari Jember untuk penerbangan jam lima sore melalui Denpasar Bali. Kami berangkat dari Jember dan sampai bandara Ngurah Rai jam empat sore, satu jam sebelum pemberangkatan. Aman kan? Oh tidak. Ternyata di Bali itu Waktu Indonesia Tengah dan jam kami Waktu Indonesia Barat. Jam 5 di Bali itu harusnya jam 4 di Jawa. Dan akhirnya ketinggalan pesawat lagi. Pak D akhirnya membelikan lagi tiket malam ke Jakarta.

Semoga tidak ada yang kelima. 😀

Sleeping Child – Michael Learns to Rock

The Milky Way upon the heavens
Is twinkling just for you
And Mr. Moon he came by
To say goodnight to you
I’ll sing for you I’ll sing for mother
We’re praying for the world
And for the people everywhere
Gonna show them all we care

[Chorus]
Oh my sleeping child the world’s so wild
But you’ve build your own paradise
That’s one reason why I’ll cover you sleeping child

If all the people around the world
They had a mind like yours
We’d have no fighting and no wars
There would be lasting peace on Earth

If all the kings and all the leaders
Could see you here this way
They would hold the Earth in their arms
They would learn to watch you play

[Chorus]

I’m gonna cover my sleeping child
Keep you away from the world so wild