Hal Menarik Seputar Email

January 11, 2012 by · Leave a Comment 

Beberapa hal menarik tentang email yang saya peroleh menjadi admin mail bisa dilihat pada daftar di bawah ini 😀

  1. Untuk membuat sebuah mail server yang ideal, dibutuhkan paling tidak 4 komponen.
    Komponen yang pertama adalah MTA (Mail Transfer Agent) yang bertugas untuk mengirimkan dan menerima email dari satu server ke server lainnya. Aplikasi yang digunakan misalnya postfix atau sendmail.
    Komponen yang kedua adalah aplikasi retrival email. Biasanya protokol yang digunakan adalah IMAP, POP, dan POP3. Aplikasi yang digunakan misalnya CourierIMAP.
    Komponen ketiga adalah aplikasi untuk autentikasi user (username dan password). Aplikasi yang digunakan misalnya CourierAuthlib.
    Komponen keempat adalah MUA (Mail User Agent) yang bertugas untuk membaca dan memperlakukan email. Contoh yang paling sederhana adalah webmail, misalnya webmail google atau webmail yahoo. Untuk desktop, kita mengenal aplikasi Thunderbird, Outlook, atau Apple Mail.
    Komponen lain misalnya MDA (Mail Delivery Agent) untuk  fasilitas pushmail.
  2. Email-email yang tidak diinginkan yang masuk ke inbox kita sebut spam. Spam sendiri sebenarnya adalah produk berupa daging palsu (fake meat), lalu ke dalam email diistilahkan sebagai surat palsu (fake email).
  3. Lawan dari spam adalah ham (daging), istilah yang diberikan pada email-email yang memang kita harapkan masuk ke inbox email kita.
  4. Email sangat gampang dipalsukan. Namun, tidak sulit untuk melacaknya. Kita bisa saja mengirimkan email dengan menggunakan alamat palsu (Ayu tingting?). Email adalah media yang sangat rawan dengan penipuan layaknya penipuan lewat sms.
  5. Admin email server bisa memblok sebuah email berdasarkan IP pengirim, IP penerima, subjek, email dan nama pengirim, email dan nama penerima, aplikasi yang digunakan untuk mengirim email, attachment (lampiran), dan juga konten email.
  6. Email itu ibarat alamat kontak kita yang krusial di internet. Tidak mempunyai email sama artinya tidak mempunyai kesenangan di internet. Konon di Jepang, sebuah telepon gengga dilengkapi dengan sebuah alamat email. Mereka lebih suka memakai email daripada SMS (Short Message Service), katanya sih lebih murah.
  7. Kepanjangan dari CC adalah carbon copy, sedangkan BCC adalah blind carbon copy. Carbon copy  bisa diartikan sebagai tembusan. Alamat email yang dituliskan dalam CC, maka alamat tersebut akan terlihat di dalam pesan yang diterima oleh penerima yand didefinisikan di dalam To dan Cc. Sedangkan jika alamat email dituliskan dalam Bcc, maka alamat email tersebut akan menerima email namun alamat emailnya tidak akan tercantum di dalam pesan. Blind carbon copy bisa juga diartikan sebagai tembusan yang tidak dituliskan dalam surat.

Migrasi Email Server dari Courier Imap dan Authlib MySQL ke Server Zimbra

January 4, 2012 by · Leave a Comment 

Tiga hari ini saya melakukan migrasi beberapa server email dan dijadikan satu kesatuan dalam sebuah server zimbra. Server lama menggunakan MTA postfix, Courier-Imap, Courier Authlib, dan MySQL sebagai infrastruktur e-mail server nya.

Alasan menggunakan zimbra adalah kualitas layanan yang lebih baik dan manajamen sumber daya yang lebih terkontrol. Ketika melakukan migrasi server ada beberapa kendala yang sedikit sulit untuk ditangani. Beberapa artikel yang ditulis dalam situs resmi zimbra paling tidak bisa membantu proses migrasi server.

Tutorial ini hanya memberikan gambaran umum saja dan tidak mendetail karena akan mencakup banyak hal. Langkah-langkah yang harus dilakukan dalam migrasi server:

1. Instalasi zimbra server

Pada situs resminya, zimbra disedikan dalam beberapa sistem operasi seperti Red Hat, Ubuntu, Debian, dan OS lainnya. Saya sendiri menggunakan sistem operasi CentOS. Untuk sistem operasi lain selain yang disebutkan dalam situs resminya, instalasi zimbra bisa menggunakan parameter –platform-override

# ./install.sh --platform-override

Lakukan konfigurasi awal dan pastikan zimbra berhasil diakses lewat browser. Tutorial yang bagus untuk melakukan instalasi zimbra bisa dilihat di web zimbra indonesia dan di ngadimin.com

2. Migrasi account dan password dari server lama ke zimbra

Selanjutnya kita akan memindahkan akun email dari server lama ke server baru. Jika kamu menggunakan MySQL dan authlib, kamu bisa mengikuti cara di bawah ini. Cara lain bisa dilihat di situs resmi zimbra. Data user dari server lama dieksport dalam sebuah file dengan menggunakan script di bawah ini.

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
#!/usr/bin/php5
// Postfix.admin to Zimbra import
//
// Created by Jarosław Czarniak on 26-10-2008
// Trivial bug fixed by Luca G. on 18-01-2009
 
<?php
    /////////////////////////////////////////////////////////
 
    $user="mysql_login";
    $pass="mysql_pass";
    $base="mysql_database";
    $tabl="mailbox"; //table
    $file="exported.sh";
 
    /////////////////////////////////////////////////////////
    echo "Usage: as \"zimbra\" user on destination server:\n";
    echo "# sh ./exported.sh\n\n";
    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[0]." dsfs123hsdyfgbsdgfbsd displayName '".$row[2]."'\n";
        fwrite($handle, $StringData);
        $StringData = "zmprov ma ".$row[0]." userPassword '{crypt}".$row[1]."'"."\n";
        fwrite($handle, $StringData);
    }
 
?>

Jangan lupa untuk mengganti username, password, dan nama database serta tabel MySQL agar script bisa membaca data pada database. Simpan dengan nama migrasi-kontak.php kemudian jalankan script di atas melalui konsol dengan perintah

# php migrasi-kontak.php

Sebuah file dengan nama exported.sh akan muncul yang berisi perintah-perintah untuk mengimport user-user beserta password email ke server zimbra. Salin file exported.sh tersebut ke server zimbra yang baru. Jalankan dengan perintah:

#./exported.sh

Jika berhasil, maka data-data akun email sudah masuk ke dalam zimbra.

3. Instalasi imapsync di server email lama

Imapsync digunakan untuk mengsinkronisasikan email-email di antara 2 server dengan menggunakan metode IMAP. Beberapa cara instalasi imapsync pada berbagai sistem operasi:

FreeBSD

# cd /usr/port/mail/imapsync
# make install clean

Ubuntu

# apt-get install imapsync

CentOS

# perl -MCPAN -e “install Test::Inter”
# perl -MCPAN -e “install Parse::RecDescent”
# perl -MCPAN -e “install Getopt::Long”
# perl -MCPAN -e “CPAN::Shell-&gt;force(qw(install Date::Manip));”
# perl -MCPAN -e “CPAN::Shell-&gt;force(qw(install Mail::IMAPClient));”
# perl -MCPAN -e “CPAN::Shell-&gt;force(qw(install Term::ReadKey));”
# wget http://packages.sw.be/imapsync/imapsync-1.350-1.el5.rf.noarch.rpm
# rpm -i –nodeps imapsync-1.350-1.el5.rf.noarch.rpm

Jika sudah selesai, pastikan perintah imapsync bisa diakses lewat terminal.

4. Migrasi email dengan menggunakan imapsync dari server lama ke server zimbra baru

Masalah utama yang paling berat dalam migrasi server ke zimbra adalah imapsync membutuhkan user-password jika ingin melakukan imapsync. Untungnya zimbra memberikan kemudahan. Cukup dengan memiliki user-password sebuah akun pada server zimbra dengan status admin, kita tidak perlu mengetahui user-password semua akun pada server baru. Untuk server yang hanya mengandalkan postfix, mysql, courier imap, dan courier authlib, tidak ada fasilitas seperti itu. Trik yang dilakukan untuk mengakalinya adalah dengan menggunakan alias direktori email. Kita membuat sebuah akun yang saya beri nama [email protected] Setelah kita bisa masuk ke akun tersebut, direktori akun tersebut dihapus dan diganti dengan alias ke direktori email akun lain. Script berikut berguna untuk menghasilkan list username dan direktori email masing-masing akun.

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
<?php
    /////////////////////////////////////////////////////////
 
    $user="user_mysql";
    $pass="pass_mysql";
    $base="database";
    $tabl="table_mail"; //table
    $file="user.log";
 
    /////////////////////////////////////////////////////////
    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, maildir 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 = $row[0]."@domain.name ".$row[1]."\n";
        fwrite($handle, $StringData);
    }

Jika field username pada database sudah mengandung alamat email lengkap dengan format @domain.zimbra, maka baris ke 25 bisa harus menghilangkan tanda @domain.name. Jika script di atas dieksekusi dengan menggunakan php, maka akan muncul sebuah file dengan nama user.log. File ini akan berisi informasi email dan direktori tempat email disimpan. Buat sebuah script lagi yang berisi:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    $trimmed = file('user.log', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    foreach ($trimmed as $data) {
        $user = explode(" ", $data);
        $email = $user[0];
        $inboxdir = $user[1];
 
        passthru("ln -s $inboxdir migrasi");
        $command = "/usr/bin/imapsync --buffersize 8192000 --nosyncacls --subscribe --syncinternaldates --host1 domain.mail.lama --user1 [email protected] --password1 migrasi --host2 domain.zimbra --user2 $email --authuser2 [email protected] --password2 passworAdminZimbra --noauthmd5 --authmech1 PLAIN --authmech2 PLAIN";
        passthru($command);
        passthru("rm -r migrasi");
    }

Simpan dengan nama migrasi.php. Setelah itu, pindahkan 2 buah file (migrasi.php serta user.log) ke direktori root email disimpan misalnya /home/vmail atau /home/email yang berisi direktori akun-akun email.

# cp migrasi.php user.log /home/mail
# cd /home/mail
# php migrasi.php

Jika semuanya lancar, maka imapsync akan menjalankan migrasi email secara otomatis.
Sebenarnya tutorial ini terlalu panjang untuk dituliskan di blog ini. Saya sendiri menuliskannya untuk keperluan dokumentasi di dalam 5 halaman A4, itu juga sudah banyak yang dipersingkat. Jika ada langkah-langkah yang terlewatkan atau dirasa tidak efektif, silahkan memberi komentar 😆

Beberapa Tips Email

September 25, 2011 by · Leave a Comment 

Email merupakan salah satu alat komunikasi canggih yang banyak digunakan saat ini. Bahkan surat elektronik ini sudah hampir menggantikan sepenuhnya fungsi surat dengan menggunakan kertas. Penggunaan email yang bebas tanpa biaya bukan tanpa aturan juga. Kita tetap dibatasi oleh tata cara berkomunikasi yang baik dan tetap menjaga sikap dengan orang lain. Ber
hubung saya lumayan sering berhubungan dengan email ini, baik non-teknis sebagai pengguna biasa, maupun secara teknis sebagai admin beberapa server mail, saya akan memberikan beberapa tips seputar email:

  1. Jika berkomunikasi dengan orang yang lebih tua atau orang yang lebih dihormati, jangan lupa mengucapkan salam terlebih dahulu, misalnya menggunakan ucapan “Selamat Siang/Sore” atau menggunakan kalimat “Yang terhormat ..”
  2. Penerima email tidak setiap saat membuka email atau terhubung ke internet. Kadang kala, seseorang mengecek email setiap 3 hari sekali atau bahkan 1 kali seminggu. Bersabarlah menunggu balasan email kamu. Namun kadang kala, penerima email lupa membalas email kamu karena kesibukan lain. Jika memang ingin demikian, kamu bisa mengirim email tersebut sekali lagi sekedar untuk mengingatkan kembali penerima email.
  3. Jika membalas email, jangan lupa memberikan sedikit kutipan email yang akan dibalas. Kutipan email ini biasanya ditandai dengan tanda lebih besar dari (>). Dengan demikian, penerima email akan tau bagian mana dari email sebelumnya yang kamu ingin komentari atau kamu balas.
  4. Jangan membuat password akun email dengan kata-kata yang mudah ditebak. Selain rawan seranganattacker untuk mencuri email kamu, email kamu juga memungkinkan spammer untuk mengirimkan spam kepada orang lain. Jika kamu tidak pernah merasa mengirimkan email kepada orang lain, namun orang tersebut merasa menerima email dari kamu, segera ganti password email kamu. Peristiwa ini mungkin saja menandakan email kamu sudah disusupi dan dimanfaatkan oleh spammer untuk mengirimkan pesan-pesan yang tidak diinginkan (emailspam).
  5. Perhatikan penggunaan attachment (lampiran) pada email. Masing-masing provider email membatasi besar lampiran yang bisa disertakan dalam email. Jika email kamu bisa menerima dan mengirimkan email sebesar 25 MB, belum tentu orang lain yang menerima email tersebut dapat menerima email sebesar 25 MB.
  6. Email sangat mudah dimanipulasi atau dipalsukan. Coba baca tulisan tentang membaca header email dan analogi amplop dalam email. Intinya, email dapat disalahgunakan untuk mengadu domba, menipu, dan kegiatan ilegal lainnya yang seolah-olah membuat penerima email merasa berkomunikasi langsung dengan orang yang asli.
Email itu ibarat pedang bermata dua, bisa digunakan untuk hal-hal yang baik dan bisa juga digunakan untuk hal-hal yang buruk. Saya sendiri berada di posisi antar yang baik dan buruk tersebut. Tentu jika ingin mengamankan sebuah sistem, saya harus tau yang buruk juga bukan?

Analogi Amplop dan Surat dalam Email

April 11, 2011 by · 1 Comment 

Email yang sudah sering kita pakai, bisa kita analogikan sebagai surat yang berbentuk fisik yang kita kenal selama ini. Tentunya adanya kesamaan ini membuat kita bisa lebih mudah memahami bagaimana sebuah email dikirimkan dari sebuah server ke server lain. Jika dalam keseharian, kita hanya membuka email seperti yahoo, gmail, hotmail, mengecek inbox, mengirim email jika ada yang perlu dikirimkan kepada orang lain, tentu kita belum memahami secara mendalam tentang proses pengiriman email ini.

Ketika saya ingin mengirimkan sebuah surat kepada seseorang di Pontianak, yang saya lakukan adalah menuliskan surat ke dalam kertas, bisa itu kertas HVS atau kertas bergaris, lalu memasukkan surat ke dalam amplop. Agar pak pos yang mengantar surat tau alamat tujuan surat kita, tentu kita harus menuliskan alamat tujuan surat tersebut serta alamat kita sebagai pengirim pada bagian amplop.

Mail server juga berperilaku demikian. Mail Transfer Agent (MTA) bertugas seperti pak pos tersebut, yaitu mengirimkan email dari satu tempat ke tempat lain. Jika dikumpulkan, tahapan yang harus kita lakukan agar bisa mengirimkan surat:

  • Menuliskan isi surat (baik itu surat kosong atau berisi, sifatnya wajib)
  • Menuliskan alamat tujuan surat pada amplop surat (wajib)
  • Menuliskan alamat kita sebagai pengirim pada amplop surat (wajib)
  • Menuliskan alamat yang dituju pada kertas isi surat, bukan pada amplop surat (opsional)
  • Menuliskan alamat kita sebagai pengirim pada kertas isi surat, bukan pada amplop surat (opsional)
  • Menuliskan alamat tembusan (opsional)
  • dll

Kita akan fokus pada 5 syarat pertama dari bagian surat di atas. Tembusan saya anggap tidak terlalu penting. Syarat pertama, yaitu isi surat, harus kita buat, walaupun isinya ternyata kosong, surat harus tetap memiliki bagian ini sebelum dikirim. Syarat kedua dan ketiga mutlak harus dipenuhi. Pak pos hanya membaca amplop Anda ketika ingin mengantarkan surat, oleh karena itu, dia harus tau alamat tujuan dan alamat pengirim. Nah, untuk yang keempat dan kelima, syarat tersebut bisa diisi bisa tidak. Ketika kita kembalikan analogi ini ke dalam email, pembaca email hanya membaca isi surat saja, bukan amplopnya. Pengirim email bisa saja menuliskan isi alamat yang berbeda pada amlop dan isi suratnya. Contohnya saya menggunakan telnet port 25 untuk mencoba menuliskan sebuah email:

mail# telnet mail.tl.itb.ac.id 25
Trying 167.205.70.130...
Connected to mail.tl.itb.ac.id.
Escape character is '^]'.
220 mx4.ITB.ac.id Internal SMTP Gateway Ready!
mail from: duken@duken.info
250 2.1.0 Ok
rcpt to: duken@tl.itb.ac.id
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
From: dukenmarga@gmail.com
To: duken@arc.itb.ac.id
email
.
250 2.0.0 Ok: queued as 6BF0C2119C

Saya membuka email di duken [at] tl.itb.ac.id. Namun ketika saya membuka sebuah email, saya melihat bahwa email pengirim adalah dukenmarga [at] gmail.com dan tujuan email adalah duken [at] arc.itb.ac.id. Lalu kenapa bisa masuk ke inbox saya dengan domain [at] tl.itb.ac.id?

Ini bisa terjadi karena saya hanya membaca isi suratnya saja. Pengirim, seperti kita peragakan sebelumnya, menuliskan pada isi surat yang isinya kira-kira begini “Yth duken [at] arc.itb.ac.id di tempat, hormat saya dukenmarga [at] gmail.com”. Padahal pengirim menuliskan alamat yang berbeda di amplop. Pengirim menuliskan isi amplop yang bertuliskan “Kepada duken [at] tl.itb.ac.id, Dari duken [at] duken.info”. Pak pos, dalam hal ini MTA, hanya membaca amplop saja, maka alamat tujuan surat yang tertera di amplop, ke sanalah MTA akan mengirim email. Sedangkan ketika membaca surat, kita hanya melihat isinya saja, tanpa melihat amplopnya. Amplop ini dalam email biasa disebut sebagai header email. Coba lihat header emailnya dan pastikan bahwa sekarang ada 4 buah alamat email yang berbeda 🙂

Bagian di bawah ini berguna untuk menuliskan amplop email (header email).

1
2
3
4
mail from: duken@duken.info
250 2.1.0 Ok
rcpt to: duken@tl.itb.ac.id
250 2.1.5 Ok

Sedangkan bagian ini berguna untuk menuliskan alamat pada isi surat.

1
2
From: dukenmarga@gmail.com
To: duken@arc.itb.ac.id

Biasanya, web mail yang sering kita gunakan, atau mail client seperti thunderbird dan outlook, sudah diatur dan dibuat agar menuliskan alamat pengirim dan penerima yang sama pada bagian header (amplop) dan isi surat. Makanya kita tidak pernah salah dalam menerima dan membaca email. Pengaturan penulisan isi surat dan amplop bisa kita lakukan jika kita berinteraksi langsung dengan aplikasi pengirim email, dalam kasus di atas, saya menggunakan telnet mail service yaitu pada port 25. Pemalsuan alamat email pun dimungkinkan dengan metode di atas. Sama seperti kita menuliskan alamat surat pada amplop, bisa saja kan kita menuliskan alamat palsu ketika mengirimkan surat pada sahabat jauh kita di sana? 😆

Next Page »