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

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…

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

Download Attachment Email Otomatis dengan M$ Outlook

Integrasi dengan sistem lain paling mudah adalah integrasi di level database atau dengan messaging semacam web service (WSDL). Atau  integrasi di level aplikasi yg bisa jadi ribet jika pembuat dan bahasanya beda. Dalam melakukan integrasi perlu dipertimbangan beberapa hal misalnya jaringan, protokol, dan kebijakan di lingkungan IT. Integrasi dua sistem dengan lingkungan dan kebijakan berbeda bisa sulit, terutama jika (pengelola) masing-masing sistem tidak mau membuka diri. Maka cara yang paling mudah tanpa saling mengganggu adalah melalui Email. Memang terdengan cupu tapi cukup efektif untuk memecah kebuntuan. Dengan email, kita bisa kirim file dalam atachment. Dan itulah yang dipertukarkan.

Sebenarnya untuk mennangani attachment tersebut saya lebih suka menggunakan PHP dan dijalankan di background. Cukup dengan fungsi-fungsi imap_*** semua bisa dilakukan. Tapi dalam situasi tertentu, PHP tidak bekerja. Salah satunya situasi yang saya alami dimana mail servernya menggunakan microsoft exchange dan mengaksesnya harus pakai vpn plus tidak bisa otentifikasi pakai plain login. Bukanya harus pakai outlook yang ada sertifikat khusus.

Setelah muter-muter dengan PHP selama 3 hari dan berujung pada kebuntuan, akhirnya menemukan solusi yang sangat sederhana yaitu MACRO pada Microsoft outlook. Intinya memanfaatkan 2 tool di Ms Outlook yaitu macro dan  “Rules and Alert”. Berikut ini saya share caranya:

  1. Buka Ms Outlook
  2. Buka Macro VB Script melalui Tools -> Macro -> Visual Basic Editor (atau tekan Alt+F11)
  3. Klik Insert -> New Module
  4. Copy dan modifikasi script berikut:

    Sub ambilAttachment(msg As Outlook.MailItem)
    Dim attachmentObject As Outlook.Attachment
    Dim FolderToSave As String
    FolderToSave= “D:\data”
    For Each attachmentObject In msg.Attachments
    attachmentObject.SaveAsFile FolderToSave & “\” & attachmentObject.DisplayName
    Set objAtt = Nothing
    Next
    End Sub

  5.  Save dan tutup Visual Basic Editor
  6. Buka Tool -> Rules and Alert dan buat rule jika ada email masuk dengan attachment maka diproses dengan script ambilAttachment. Banyak juga aturan lain misalnya judul, pengirim dan lain-lain, silahkan disesuaikan dengan kebutuhan.

Semoga membantu.

Meneruskan IP pengunjung lewat Nginx ke Apache

Kalau menggunakan Nginx utk reverse proxy atau load balancer, jika pakai setting standar maka apache akan menganggap cliennta adalah nginx, sehingga ip yang ditangkap adalah IP nginx misalnya 127.0.0.1. Untuk menangkap IP sebenarnya dari pengunjung, caranya adalah:

  1. Install apache mod_rpaf

    Kalau di CENTOS:
    # cd /usr/local/src
    # wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
    # tar -xzf mod_rpaf-0.6.tar.gz
    # cd mod_rpaf-*
    # apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

    Kalau di UBUNTU:

    sudo apt-get install libapache2-mod-rpaf
    sudo a2enmod rpaf

    Setelah itu setting httpd.conf / apache2.conf sebagai berikut:

    LoadModule rpaf_module modules/mod_rpaf-2.0.so
    # mod_rpaf Configuration
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1 10.0.0.1 # ganti dengan IP proxy
    RPAFheader X-Forwarded-For

    Restart apache

  2. Setting Nginx
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    restart nginx

Salah satu akal-akalan AHA alias ESIA agar membeli pulsa lebih

Saya adalah pengguna AHA (http://www.aha.co.id) yang sebenarnya puas dengan kualitas jaringannya. Bahkan saya selalu mempromosikan ke orang-orang bahwa AHA bagus dan cepet koneksinya. Tapi akhir-akhir ini saya jengkel dengan AHA. Itu dikarenakan  AHA membuat beberapa hal yang merepotkan dan menjengkelkan bagi saya, yang di antaranya berdampak pada lebihnya pulsa yang harus dibayar. Yang menjengkelkan itu adalah:

  • AHA Mail a.k.a. Google Application

    Mungkin maksud AHA sih baik, memberi hal lebih kepada pengguna AHA. Masalahnya adalah hal tersebut diharuskan oleh AHA. Tidak ada cara untuk menolaknya. Yang menjengkelkan adalah setiap mau cek pulsa  di Customer Area AHA selalu terlebih dahulu diarahkan ke google application. Padahal saya cuma mau cek pulsa lewat internet, karena alat yg saya beli adalah AHA Link yang memang dikhususkan untuk pemakaian internet (tidak bisa dipakai nelpon, paling bisa SMS melalui aplikasi web juga)Saya pakai AHA hanya untuk internet. That’s it. Saya tidak suka menunggu google application yang loading-nya lama hanya untuk ngecek pulsa. Saya sudah punya sendiri dengan domain-domain pribadi. Banyak lagi.

  • Notifikasi AHA saat melewati FUP (Fair Usage Policy)

    Saya sudah tahu dari awal bahwa paket yang saya ambil adalah DINAMIS BULANAN yang quotanya adalah 4 GB dan kalau telah memakai lebih dari itu akan turun kecepatannya.  Itu tidak masalah bagi saya. Awal-awal saya pakai AHA dulu lancar saja, begitu melebihi quota otomatis kecepatnnya berkurang. That’s ok.Tapi kemudian AHA membuat acara lain yaitu jika melewati quota akan masuk ke halaman notifikasi dan saya harus login untuk memilih apakah tetep mau memakai paket dengan kecepatan turun atau membayarRp 1/KB untuk kecepatan yang tidak turun. Walaupun bikin repot, okelah saya lakukan.Yang terakhir ini caranya berubah lagi menjadi lebih menjengkelkan. Ketika melewati quota, maka harus SMS ke nomor 242 dengan pesan BAYAR atau TIDAK. Okelah saya turutin kirim SMS, eh malah mendapat balesan: “Maaf, permintaan Anda tidak dapat diproses. Saat ini Anda tidak dpt memilih krn blm pd kondisi FUP. Paket Anda akan diperbarui pd 27/03/12-15:16” . Lha, gimana sih? Saya buka internet dapat notfikasi suruh SMS tapi ketika di-SMS jawabannya seperti itu. Saya sampai SMS 2 kali untuk memastikan dan hasilnya sama saja. Wal hasil, pulsa saya kepotong Rp 110 dan tetap tidak bisa pakai internet.Akhirnya saya telpon langsung AHA Care di nomor 021 99714098. Untuk berbicara dengan operator prosedurnya lama banget. Pulsa IM3 saya terus kepotong untuk hal-hal gak penting. Kalau anda telepon AHA Care, sebaiknya langsung pencet 0 (nol) aja untuk berbicara dengan operator. Setelah tersambung dengan operator, baru bisa minta dibukakan akses internetnya secara manual oleh dia. Menurut dia, update data quotanya bisa lebih dari 2 jam, sehingga bisa terjadi hal seperti itu. What? update data saja bisa sampai begitu lama, apa tidak bisa sinkronisasi database?

    Kalaupun metode SMS tersebut berhasil(apalagi gagal) , maka pulsa akan kepotong minimal Rp 55 untuk konfirmasi BAYAR atau TIDAK. Bagi saya yang hanya pakai AHA untuk internet, itu artinya harus membeli pulsa lebih, karena pulsa yang seharusnya pas buat langganan (Rp 110,000) menjadi Rp 109,945. Mana ada yang jual pulsa AHA Rp 55 agar genap menjadi Rp 110,000?  Mau tidak mau harus beli pulsa setidaknya paket terkecil. Nah, karena saya hanya memakai untuk internet Rp 110,000 per 30 hari, berarti akan selalu ada saldo pulsa gak kepakai. Itu adalah akal-akalan AHA untuk mendapatkan duit gratis yang menggantung. Atau setidaknya, akal-akalan AHA agar pengguna membeli pulsa yang sebenarnya tidak diperlukan.

  •  Banner

    Sering kali kalau saya membuka sebuah website akan ada banner AHA yg menyebalkan diinsert otomatis.   Menyebalkan banget bukan?  Sudah bayar masih diganggu sama banner. Ini bannernya:

Bagaimana pengalaman menggunakan AHA dari anda?

Perbandingan Database Engine: MySQL vs PostgreSQL vs Oracle vs Microsoft SQL Server

Saat ini sedang mikir-mikir database mana yang paling cocok dengan aplikasi yang akan saya buat. Kebutuhan saya adalah: skalabilitas, biaya, dan performa. Skalabilitas menjadi prioritas pertama mengingat database aplikasi tersebut kemungkinan besar akan tumbuh pesat seiring pengguna dan data yang disimpan di dalamnya.

Setelah mengumpulkan dari berbagai sumber, berikut ini rangkuman yang dapat saya peroleh: Continue reading “Perbandingan Database Engine: MySQL vs PostgreSQL vs Oracle vs Microsoft SQL Server”