Sabtu, 06 Maret 2010

Struktur Email

OK, dalam tulisan ini saya akan berbagi (sekaligus mengerjakan tugas Keamanan Informasi Pak Budi Rahadjo, Ph.D) mengenai struktur email.

Nah, ketika kita menulis email, biasanya semua informasi tersebut akan dikirim dalam bentuk file teks. Setiap file ini akan dikirim dalam format header dan body. Kalau misalnya ada attachment, maka pada file tersebut akan diencode dengan suatu algoritma yang disebut dengan base64, juga menjadi file teks. Mengapa itu bisa terjadi?

Setiap file, baik itu file gambar maupun file teks, pada hakikatnya secara fisik hanya terdiri hanya angka 1 dan o (biner). Sehingga, gampangnya, semua jenis file gambar akan dapat direpresentasikan dengan teks, tetapi pastinya menjadi suatu meaningless jika dibuka sebagai file teks.

Nah, saya mencoba mengirimkan sebuah email dari hotmail saya ke gmail saya. Saya kemudian menghidupkan client Mozilla Thunderbird dan mencoba mendapatkan informasi "Source" dari email yang dikirim. Nah, untuk membuktikan bahwa setap attachment juga dikirim dalam bentuk teks, maka saya juga mencoba untuk meng-attach dua buah file, sebuah file teks dan sebuah file image.

Berikut ini adalah bagian header dari source file nya :

From - Sat Mar 06 23:28:13 2010
X-Account-Key: account2
X-UIDL: GmailId12736e14a504efad
X-Mozilla-Status: 0001
X-Mozilla-Status2: 10000000
X-Mozilla-Keys:
Delivered-To: zulfikar.hakim@gmail.com
Received: by 10.151.11.1 with SMTP id o1cs251268ybi;
Sat, 6 Mar 2010 20:28:07 -0800 (PST)
Received: by 10.223.7.88 with SMTP id c24mr1299299fac.59.1267936086730;
Sat, 06 Mar 2010 20:28:06 -0800 (PST)
Return-Path:
Received: from blu0-omc1-s15.blu0.hotmail.com (blu0-omc1-s15.blu0.hotmail.com [65.55.116.26])
by mx.google.com with ESMTP id 26si6157666fxm.53.2010.03.06.20.28.06;
Sat, 06 Mar 2010 20:28:06 -0800 (PST)
Received-SPF: pass (google.com: domain of zulfikar.hakim@hotmail.com designates 65.55.116.26 as permitted sender) client-ip=65.55.116.26;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of zulfikar.hakim@hotmail.com designates 65.55.116.26 as permitted sender) smtp.mail=zulfikar.hakim@hotmail.com
Received: from BLU121-W21 ([65.55.116.7]) by blu0-omc1-s15.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.3959);
Sat, 6 Mar 2010 20:27:15 -0800
Message-ID:
Return-Path: zulfikar.hakim@hotmail.com
Content-Type: multipart/mixed;
boundary="_da3101e7-b1fa-4842-a42e-47f19db73b22_"
X-Originating-IP: [167.205.22.105]
From: Zulfikar Hakim
To: Zulfikar Hakim
Subject: Testing lagi
Date: Sun, 7 Mar 2010 11:27:15 +0700
Importance: Normal
MIME-Version: 1.0
X-OriginalArrivalTime: 07 Mar 2010 04:27:15.0953 (UTC) FILETIME=[7773FE10:01CABDAE]

Nah, banyak informasi yang tersimpan di dalam header. Berikut ini adalah penjelasannya :
  • FROM (tanpa titik dua) di sini, sampai dengan beberapa baris di bawahnya menyatakan bagaimana email yang kirimkan diproses. Setiap kali pesan diproses, maka sebuah baris mengenai server yang memprosesnya akan ditambahkan di header, sampai mencapai server terakhir. Urutannya terbalik, dibaca dari bawah ke atas
  • Return-path menyatakan kemana email ini harus dibalas. Fungsinya sebenarnya tidak jauh berbeda dengan reply-to
  • Content-type menyatakan apakah tipe konten yang ada di email, misalnya text, image, dan lain sebagainya
  • Di header inijuga terdapat bberapa informasi mengenai pengirim, subject, date, dan lain sebagainya.
  • MIME Version, menunjukkan versi berapakah MIME yang digunakan. MIME adalah sebuah standar yang menyatakan seperti apakah email harus mendukung format informasi sehingga email client yang berbeda dapat menampilkan informasi yang sama.
  • X-OriginalArrivalTime. Setiap header yang diawali dengan "X-" adalah header yang didefinisikan sendiri oleh salah satu mailclient, sehingga seringkali sangat berguna ketika mailclient berkomunikasi dengan tipenya sendiri.
  • Content-type menyatakan apakah tipe konten yang ada. Dalam kasus email yang saya kirim, tipe konten adalah multipart, maksudnya email terdiri dari beberapa part sekaligus. Nah, separator dari tipe tersebut juga didefinisikan pada bagian ini. Seperti yang bisa Anda lihat,part konten pertama yang ditemui setelah bagian header ini dipisahkan oleh separator yang sama dengan yang didefinisikan di header di atas.
  • Dan lain sebagainya. Hohohoho
Nah, kemudian kita masuk ke bagian body. Bagian body juga menyatakan separator (seperti yang telah dijelaskan di atas, dan dipisahkan dengan sebuah karakter break "/r/n". :

--_da3101e7-b1fa-4842-a42e-47f19db73b22_
Content-Type: multipart/alternative;
boundary="_8329635f-7b95-460f-bd28-6ae9b90f0f2d_"

Part berikutnya dari email ini adalah text dengan tipe plain. Charsetnya adalah tipe Windows-1252. Part ini berisi isi email yang akan tampil di mail client sebagai isi dari email rekan kita :

--_8329635f-7b95-460f-bd28-6ae9b90f0f2d_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable


Test kk yak :D

Zulfikar Hakim
Department of Informatics Engineering
School of Electrical Engineering and Informatics
Bandung Institute of Technology
---------------------------------------------
Student

Mobile +62852 2083 5837
http://zulfikarh.blogspot.com
Yahoo! ID : ferdhy_hakim


=20
_________________________________________________________________
Edit your photos like a pro with Photo Gallery.
http://www.get.live.com/wl/all=

Seringkali sebuah browser juga mendukung tipe HTML untuk memberikan view yang lebih bagus di browser. Oleh karena itu beberapa mail client sengaja meredundansi isi email yang dikirimkan, satu dalam bentuk HTML, dan yang lainnya dalam bentuk plaintext. Berikut ini adalah bagian yang berisi HTML tersebut ("<" pada HTML saya ganti menjadi "[" agar pada browser terlihat part HTML ini, dan justru bukan diinterpret sebagai HTML):

--_8329635f-7b95-460f-bd28-6ae9b90f0f2d_
Content-Type: text/html; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

[html]
[head]
[style][!--
.hmmessage P
{
margin:0px=3B
padding:0px
}
body.hmmessage
{
font-size: 10pt=3B
font-family:Verdana
}
--][/style]
[/head]
[body class=3D'hmmessage']
Test kk yak :D[br][br][b]Zulfikar Hakim[br][/b]Department of Informatics En=
gineering[br]School of Electrical Engineering and Informatics[br]Bandung In=
stitute of Technology[br]---------------------------------------------[br]S=
tudent[br][br]Mobile +62852 2083 5837[br][a href=3D"http://zulfikarh.blogsp=
ot.com"]http://zulfikarh.blogspot.com[/a][br]Yahoo! ID : ferdhy_hakim[br][b=
r][br] [br /][hr /]Blog it to your Space with Live Writer! [a hr=
ef=3D'http://www.get.live.com/wl/all' target=3D'_new']Windows Live Writer[/=
a][/body]

[/html]=

--_8329635f-7b95-460f-bd28-6ae9b90f0f2d_--

Berikutnya, saya mengattach bagian yang berisi informasi file PNG. Seperti yang saya sebutkan sebelumnya, segala file yang diattach yang bukan berformat file teks, harus diencode menjadi file teks. Berikut ini adalah bagian tserbut (tidak saya tampilkan semuanya)

--_da3101e7-b1fa-4842-a42e-47f19db73b22_
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="IPconf.png"

iVBORw0KGgoAAAANSUhEUgAAAZYAAAHFCAIAAABegEiYAAAAAXNSR0IArs4c6QAAWTZJREFUeF7t
....................
mZiFACtSFmQy8ja4BSyk1WALP7iPAgnUE/S6zs7/D3+XYQcipXP+AAAAAElFTkSuQmCC

Sedangkan bagian ini adalah bagian yang berformat txt. Nah, walaupun isinya .txt, isi file di sini masih belum terbaca. Hal ini disebabkan karena file .txt yang diberikan memiliki encoding yang berbeda dengan Context-transfer-encoding yang digunakan, yaitu base64

--_da3101e7-b1fa-4842-a42e-47f19db73b22_
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="tes.txt"

VGVzdCBmaWxl

--_da3101e7-b1fa-4842-a42e-47f19db73b22_--












1 komentar:

Anonim mengatakan...

Mantab kk! ^_^