Rabu, 10 Maret 2010

[II3062] Anatomi Email ?!?

Yup, postingan kali ini akan mencoba mengetahui sebenarnya bagaimana anatomi sebuah email itu, walaupun setiap hari begitu akrab dengan dengan benda bernama surat elektronis ini, saya sendiri kurang mengerti tentang bagaimana sebuah email itu menyimpan data-data nya, hehe :P.

Jujur, dari lubuk hati yang terdalam, ada 2 pertanyaan pribadi yang membuat penasaran, yaitu: (1) Bagaimana sebuah file email membedakan bagian header yang berisi meta data dan isi pesan sebenarnya, lalu (2) Kalau kita memberi attachment, bagaimana jadinya bentuk email itu, apakah email server mengupload di suatu tempat dan yang dibawa email adalah hanya url link nya saja, atau bahkan isi dari attachment tersebut benar-benar ter-attach secara eksplisit di dalam file email tersebut. Jadi, mari kita coba temukan jawabannya bersama :D

Pertama, sebagai informasi, saya memakai Gmail, lalu, saya coba mengirimkan sebuah email kepada diri sendiri dengan isi pesan "Ini adalah body, body adalah ini", dan kemudian melampirkan 2 buah file, sebuah file text (berekstensi .as) dan sebuah file biner (berekstensi .swf), oke, email sent, dan tentu saja email received di waktu yang sama :D, lalu dengan fitur dari Gmail berlabel "Show original", kita bisa melihat bentuk file teks email tersebut, yang setelah beberapa saat saya coba telaah hasilnya adalah seperti berikut,

Header :

MIME-Version: 1.0
Received: by 10.229.218.143 with HTTP; Wed, 10 Mar 2010 03:13:30 -0800 (PST)
Date: Wed, 10 Mar 2010 18:13:30 +0700
Delivered-To: dominikus.d.putranto@gmail.com
Message-ID: <87b6fd0d1003100313o500cd297y24bbe678c5e8a8b7@mail.gmail.com>
Subject: IF3062 - Bedah Email
From: Dominikus Damas Putranto
To: Dominikus Damas Putranto
Content-Type: multipart/mixed; boundary=0016363105f3601f7e0481706304


Di baris yang ber-tag "Content-type", diberi tahu bahwa isi dari email tersebut ber-MIME multipart/mixed, yang artinya kira-kira adalah email itu berisi beberapa Content Type yang memang benar adanya, karena adanya isi email yang merupakan campuran text dan binary. Kemudian ada definisi boundary, yang merupakan tanda batas dari setiap bagiannya, definisi string boundary itu adalah merupakan sebuah string random, dan voila, terjawablah pertanyaan pertama :D

Kemudian, lebih jauh lagi, bagian setelah itu adalah isi pesan / body (yang tentu saya diawali dengan '--0016363105f3601f7e0481706304') itu sendiri isinya sebagai berikut :

Content-Type: multipart/alternative; boundary=0016363105f3601f760481706302

--0016363105f3601f760481706302
Content-Type: text/plain; charset=ISO-8859-1

Ini adalah body, body adalah ini.

--
Regards,

Dominikus D Putranto

--0016363105f3601f760481706302
Content-Type: text/html; charset=ISO-8859-1

Ini adalah body, body adalah ini.

--
Regards,

Dominikus D Putranto


--0016363105f3601f760481706302--


Ternyata Gmail menyediakan 2 alternatif dari isi email itu, yaitu yang berupa plain text dan yang berupa html, hehe, keren juga ya karena email ini mensupport mail client yang bisa menampilkan email plain saja maupun yang bisa menampilkan dengan format html :D

Lalu setelah itu, dipisahkan dengan boundary yang telah terdefinisi di awal tadi, bagian berikutnya adalah attachment itu sendiri, yang isinya adalah (saya ambil bagian awalnya saya :D) :

Content-Type: application/octet-stream; name="CobaFlex.as"
Content-Disposition: attachment; filename="CobaFlex.as"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g6m16tnf0

77u/CWltcG9ydCBmbGFzaC5kaXNwbGF5LlNwcml0ZTsNCglpbXBvcnQgZmxhc2guZXZlbnRzLkV2
ZW50Ow0KCQ0KCWltcG9ydCBteC5jaGFydHMuQ29sdW1uQ2hhcnQ7DQoJaW1wb3J0IG14LmNvbnRh
aW5lcnMuQ2FudmFzOw0KCWltcG9ydCBteC5jb3JlLklVSUNvbXBvbmVudDsNCglpbXBvcnQgbXgu
Y29yZS5VSUNvbXBvbmVudDsNCglpbXBvcnQgbXguY29yZS5TaW5nbGV0b247DQoJaW1wb3J0IGZs ...


Dari situ tertulis juga secara eksplisit encodingnya menggunakan base64, yang konon katanya adalah metode encoding yang efisien untuk file non-text 8 bit maupun file text yang tidak menggunakan karakter ASCII. Dengan teknik encoding ini, isi sebuah file binary dapat dinyatakan dalam sebuah file text.

Kemudian bagian selanjutnya adalah file attachment yang kedua, yaitu

Content-Type: application/x-shockwave-flash; name="expressInstall.swf"
Content-Disposition: attachment; filename="expressInstall.swf"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g6m1737c2

Q1dTBkEFAAB4nIVUzU/UQBT/dXfZLbDAyteilA8hMUoMNfGGIAQIhIQFWUAPxsNsO0Ch2zbtFNyz
iXLiuIkhRo+ePHrRxH+Aq/Hq0SP/wfqmXVhWMfYwfe8372t+7814yGrAxhyyChYStVptVh0HoMCr
byg4ow+5vjOtd+P8/fjnL8NZ7fDjB9Rac2SYINPX6bRCP8yRXmv9ngKSpM4mP5F0/EMZg+0yk/sL
OSYvC2ggzDG4bXOzAS0xS+o7nnmBlJnhu2VKzSYNt4zNSiB4GQE3Qt8SFVA+92jRLTPLoeTGHp8P ...


Maka, terjawablah pula pertanyaan kedua, ternyata file attachment itu di'bawa sekalian', hehe, lalu tiba-tiba ingat dengan netiket di mana jika di sebuah forum milis tidak boleh mengattach file namun cukup memberikan link url tempat mengunduh saja, soalnya ternyata jika kita mengattach file tersebut, untuk setiap email yang diterima pengikut-pengikut milis tersebut disertakan duplikasi dari attachment tersebut, yang tentu saja bisa menggendutkan storage server, hehe.

Terakhir email tersebut diakhiri dengan baris berisi boundary yang di belakangnya diberi lagi double-dash ('--').

Demikianlah kira-kira anatomi sebuah email secara umum, semoga berguna, cheers. :)

1 komentar:

Get free or die tryn mengatakan...

Whattt thee.. ???
It's COOL men..