in How to

Sending Email via Gmail SMTP Server using OpenSSL

gmail-logo2

Artikel ini bukan tentang bagaimana memakai Outlook, Thunderbird dan email client lainnya, bukan itu. Di sini saya akan menjelaskan bagaimana email dikirimkan ke tujuan melalui SMTP server Gmail secara anonymous maupun authenticated dengan menggunakan OpenSSL. Ini adalah penjelasan apa yang sebenarnya terjadi dibalik layar ketika outlook dan email client lainnya mengirim email melalui smtp server gmail.

Anonymous vs Authenticated Sending

Email bisa dikirimkan melalui smtp server secara anonymous maupun authenticated. Kalau kita mengirim email secara anonymous memakai smtp server milik gmail, maka email tujuan tidak bisa dari domain lain, harus dari domain yang sama atau domain lain yang masuk dalam jaringan google apps. Bila smtp server gmail mengijinkan pengiriman email ke lain domain secara anonymous itu berarti smtp server gmail bersifat open relay, karena dia bersedia menjadi titik relay pengiriman email ke domain lain. Saat ini jarang sekali ada smtp server yang open relay karena dia akan menjadi sasaran spammer mengirimkan email spamnya ke domain lain.

Jadi bila kita ingin mengirim email ke domain lain (di luar google network), mau tidak mau harus secara authenticated yaitu dengan memasukkan username dan password terlebih dahulu. Dengan memasukkan username dan password, kini gmail bersedia menjadi titik relay pengiriman email ke manapun. Mirip dengan ketika kita login ke webmail gmail dengan sebelumnya memasukkan username dan password. Setelah login, selanjutnya kita bisa mengirimkan email ke manapun juga.

Sending Anonymously

Sebelum masuk ke pembahasan pengiriman email authenticated dengan SSL (smtps), saya akan memulai dengan mengirim email secara anonymous dengan smtp biasa. Pertama saya harus tahu dulu smtp server yang akan saya gunakan. Untuk itu saya harus mencari MX record dari domain gmail.com. Dengan perintah dig saya bisa mengetahui bahwa MX record untuk gmail.com adalah:

$ dig -t MX gmail.com
;; QUESTION SECTION:
;gmail.com.                     IN      MX

;; ANSWER SECTION:
gmail.com.              2878    IN      MX      30 alt3.gmail-smtp-in.l.google.com.
gmail.com.              2878    IN      MX      40 alt4.gmail-smtp-in.l.google.com.
gmail.com.              2878    IN      MX      5 gmail-smtp-in.l.google.com.
gmail.com.              2878    IN      MX      10 alt1.gmail-smtp-in.l.google.com.
gmail.com.              2878    IN      MX      20 alt2.gmail-smtp-in.l.google.com.

;; AUTHORITY SECTION:
gmail.com.              207201  IN      NS      ns4.google.com.
gmail.com.              207201  IN      NS      ns1.google.com.
gmail.com.              207201  IN      NS      ns2.google.com.
gmail.com.              207201  IN      NS      ns3.google.com.

;; ADDITIONAL SECTION:
gmail-smtp-in.l.google.com. 174 IN      A       209.85.143.114
alt1.gmail-smtp-in.l.google.com. 174 IN A       209.85.199.27
alt2.gmail-smtp-in.l.google.com. 174 IN A       216.239.59.27
alt3.gmail-smtp-in.l.google.com. 174 IN A       74.125.79.27
alt4.gmail-smtp-in.l.google.com. 174 IN A       209.85.218.43
ns1.google.com.         34378   IN      A       216.239.32.10
ns2.google.com.         34378   IN      A       216.239.34.10
ns3.google.com.         34378   IN      A       216.239.36.10
ns4.google.com.         34378   IN      A       216.239.38.10

Ada banyak mail server untuk domain gmail.com, silakan pilih yang mana saja. Dalam contoh ini saya memakai gmail-smtp-in.l.google.com. Selanjutnya saya akan mengirim email dari dan ke rizki.wicaksono a.t. gmail.com. Saya akan membuat koneksi ke smtp server tersebut pada port 25 dan mengirimkan perintah smtp. Maaf alamat email saya ubah menjadi rizki.wicaksono .a.t. gmail.com agar tidak jadi sasaran spam, seharusnya dalam format email yang benar dengan karakter @.

$ telnet gmail-smtp-in.l.google.com 25
Trying 209.85.143.114...
Connected to gmail-smtp-in.l.google.com (209.85.143.114).
Escape character is '^]'.
220 mx.google.com ESMTP 22si3820758tim.24
ehlo gmail.com
250-mx.google.com at your service, [202.43.x.x]
250-SIZE 35651584
250-8BITMIME
250-ENHANCEDSTATUSCODES
250 PIPELINING
mail from:
250 2.1.0 OK 22si3820758tim.24
rcpt to:
250 2.1.5 OK 22si3820758tim.24
data
354  Go ahead 22si3820758tim.24
testing ajah...
.
250 2.0.0 OK 1236753091 22si3820758tim.24
quit
221 2.0.0 closing connection 22si3820758tim.24
Connection closed by foreign host.

Perintah SMTP yang saya kirimkan sederhana sekali, diawali dengan EHLO sebagai salam pembuka. Kemudian diikuti dengan MAIL FROM, untuk mengisi alamat email asal yang harus diapit dengan karakter < dan >. Setelah itu baru masukkan email tujuan dengan perintah RCPT TO (juga harus diapit dengan karater < dan >). Setelah itu perintah berikutnya adalah DATA. Dengan mengirimkan perintah data ini, maka saya bisa mulai menuliskan Subject dan body email, hingga diakhiri dengan karakter DOT dalam satu baris sendiri.

Mari kita lihat email yang diterima dalam format header lengkap berikut ini:

Delivered-To: rizki.wicaksono.a.t.gmail.com
Received: by 10.115.106.13 with SMTP id i13cs348624wam;
        Tue, 10 Mar 2009 23:31:32 -0700 (PDT)
Received: by 10.110.92.8 with SMTP id p8mr5461696tib.56.1236753091115;
        Tue, 10 Mar 2009 23:31:31 -0700 (PDT)
Return-Path: 
Received: from gmail.com ([202.43.x.x])
        by mx.google.com with ESMTP id 22si3820758tim.24.2009.03.10.23.31.17;
        Tue, 10 Mar 2009 23:31:31 -0700 (PDT)
Received-SPF: neutral (google.com: 202.43.169.218 is neither permitted nor denied by domain of rizki.wicaksono.a.t.gmail.com) client-ip=202.43.169.218;
Authentication-Results: mx.google.com; spf=neutral (google.com: 202.43.169.218 is neither permitted nor denied by domain of rizki.wicaksono.a.t.gmail.com) smtp.mail=rizki.wicaksono.a.t.gmail.com
Date: Tue, 10 Mar 2009 23:31:31 -0700 (PDT)
Message-Id: <[email protected]>
testing ajah...

Pada header Received terlihat bahwa email pertama diterima oleh smtp server mx.google.com (ini hostname alias dari gmail-smtp-in.l.google.com). Kemudian smtp server ini merelay email ini ke smtp server lain, yaitu 10.110.92.8, dan akhirnya dari sana di-relay lagi ke smtp server terakhir yaitu 10.115.106.13. Smtp server 10.115.106.13 tersebut adalah smtp server yang terdekat dengan inbox user sehingga tidak perlu lagi di-relay.

Sending via SMTP-Secure (SMTP over SSL)

Kelemahan dari pengiriman email secara anonymous yang saya tunjukkan di atas adalah tidak bisa dipakai untuk mengirim email ke lain domain. Karena smtp server gmail tidak rela dijadikan titik relay pengiriman email ke domain lain. Yang dimaksud dengan domain lain adalah domain selain gmail.com dan domain lain yang tergabung dalam google apps network. Jadi kalau anda mempunyai email dengan domain sendiri di google apps, anda bisa memakai smtp server ini.

Saya akan mencoba mengirim email ke rizki.a.t.ilmuhacking.com dengan menggunakan smtp server gmail. Perhatikan bahwa saya bisa saja langsung menggunakan smtp server ilmuhacking.com untuk mengirim email ke ilmuhacking.com, namun dalam artikel ini saya akan menunjukkan pengiriman email dari smtp server gmail. Gmail mempunyai smtp server sendiri yang berbeda dengan smtp server dalam daftar MX record DNS. SMTP server ini berlokasi di smtp.gmail.com. Pengiriman email dengan smtp server ini harus dengan smtp secure, yaitu smtp over SSL pada port 465. Mirip dengan http secure (http over SSL), pengiriman email dengan smtps aman dari sniffing password dan serangan man-in-the-middle.

Oke, langsung saja ya. Saya gunakan perintah openssl command line berikut di Linux:

$ openssl s_client -connect smtp.gmail.com:465 -crlf -CAfile /etc/pki/tls/certs/ca-bundle.crt

Perintah tersebut adalah untuk membuka koneksi SSL ke smtp.gmail.com pada port 465. Opsi -crlf ini sangat penting karena tanpa opsi ini gmail akan diam seribu bahasa ketika kita selesai menulis body email dengan perintah DOT sebab ternyata gmail hanya mau menerima line feed dalam bentuk CRLF (0x0D+0x0A). Opsi -CAfile menunjukkan lokasi trusted Certificate Authority yang kita miliki untuk memverfifikasi sertifikat yang dimiliki server apakah valid atau tidak.

Setelah perintah ini dijalankan, maka openSSL akan menangani segala komunikasi yang terjadi di layer SSL, mulai dari negosiasi hubungan sampai mengakhiri hubungan. Berikut ini adalah tampilan setelah perintah itu dijalankan.

CONNECTED(00000003)
depth=1 /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/[email protected]
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
   i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/[email protected]
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDYzCCAsygAwIBAgIQUR2EgGT4+hGKEhCgLMX2sjANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA3MDczMDAwMDAwMFoXDTEwMDcyOTIzNTk1OVow
aDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDU1v
dW50YWluIFZpZXcxEzARBgNVBAoTCkdvb2dsZSBJbmMxFzAVBgNVBAMTDnNtdHAu
Z21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD+RiG+G3Mo9Q9C
tcwDjpp6dJGifjiR5M2DbEbrsIOlth80nk5A7xstKCUfKobHkf/G9Y/DO24JP5yT
s3hWep05ybyiCmOzGL5K0zy3jIq0vOWy+4pLv2GsDjYi9mQBhobAAx3z38tTrTL+
WF4p0/Kl014+wnukIpj4MdF35rIkgQIDAQABo4GmMIGjMB0GA1UdJQQWMBQGCCsG
AQUFBwMBBggrBgEFBQcDAjBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8vY3JsLnRo
YXd0ZS5jb20vVGhhd3RlUHJlbWl1bVNlcnZlckNBLmNybDAyBggrBgEFBQcBAQQm
MCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wDAYDVR0TAQH/
BAIwADANBgkqhkiG9w0BAQUFAAOBgQBeNYOZwMVQ7bd6b4sueAkgm57Cyv2p1Xv1
52e8bLnWqd03mWgn/+TQtrwbE1E6pVuQaZJY33ILpt8IfzwVf2TGQI+M5yazZ2fC
xwArHo20iAss3MLQR8tDXWfBoH2Lk9BBsEKDRP4hp83yfpZgdY3pinHTCbqHpsiS
v97epiiFBA==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
issuer=/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/[email protected]
---
No client certificate CA names sent
---
SSL handshake has read 1017 bytes and written 315 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-MD5
    Session-ID: 2C94C746C92E5042C3B8FA92C765B21C5FC03147134A9B1998B89D25C18FD7C9
    Session-ID-ctx:
    Master-Key: 1F674A6B6ABB774873CB57B2E235138A83CF864071C674F781B2C51E7C67B5BB2487DCC07A2AA3F197494AE045BA9F13
    Key-Arg   : None
    Krb5 Principal: None
    Start Time: 1236755367
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
220 mx.google.com ESMTP j5sm1016106tid.21

Dari situ terlihat bahwa gmail menggunakan sertifikat yang diterbitkan oleh Thawte, algoritma cipher yang dipakai adalah RC4 128 bit, yang merupakan algoritma stream cipher. Pada baris terakhir terlihat “220 mx.google.com ESMTP” yang menunjukkan bahwa itu adalah pesan yang dikirim dari layer smtp dan pengguna kini siap berkomunikasi di layer SMTP. Selanjutnya saya harus memasukkan perintah smtp seperti biasa, tidak ada bedanya dengan perintah smtp pada pengiriman email secara anonymous sebelumnya karena ini adalah pada layer SMTP, layer SSL semua sudah ditangani oleh OpenSSL. Namun tidak seperti sebelumnya, kali ini saya harus memasukkan perintah untuk authentication dengan perintah AUTH LOGIN. Berikut adalah perintah smtp yang dikirimkan untuk melakukan authentication.

220 mx.google.com ESMTP a14sm120617tia.27
ehlo gmail.com
250-mx.google.com at your service, [202.43.169.218]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 PIPELINING
auth login
334 VXNlcm5hbWU6
cml6a2kud2ljYWtzb25vQGdtYWlsLmNvbQ==
334 UGFzc3dvcmQ6
aW5pcGFzc3dvcmQ=
235 2.7.0 Accepted

Seperti biasa saya mengawali dengan mengucapkan salam, dengan perintah EHLO. Setelah itu saya mengirimkan perintah AUTH LOGIN. Jawaban dari perintah AUTH LOGIN adalah “VXNlcm5hbWU6” yang merupakan format base64 dari “Username:”. Kemudian saya menjawab dengan mengirimkan “cml6a2kud2ljYWtzb25vQGdtYWlsLmNvbQ==” yang merupakan format base64 dari username saya yaitu rizki.wicaksono.a.t.gmail.com (karakter @ saya ganti .a.t.). Gmail menjawab dengan “UGFzc3dvcmQ6” yang merupakan format base64 dari “Password:”. Saya harus menjawab dengan password saya dalam format base64 encoded. Bila authentication berhasil maka gmail akan menjawab dengan “235 2.7.0 Accepted”.

235 2.7.0 Accepted
mail from:
250 2.1.0 OK a14sm120617tia.27
rcpt to:
250 2.1.5 OK a14sm120617tia.27
data
354  Go ahead a14sm120617tia.27

Setelah authentication berhasil saya bisa mulai mengirimkan email asal dan tujuan dengan perintah mail from dan rcpt to, sama seperti pada contoh pengiriman secara anonymous. Email tujuan saya kirim ke rizki.a.t.ilmuhacking.com.

perintah RCPT harus dikirim dalam huruf kecil “rcpt” sebab huruf kapital “R” dalam openSSL adalah perintah khusus untuk melakukan RENEGOTIATION.

Setelah memasukkan email asal dan tujuan, saya harus mengirimkan perintah DATA untuk mulai menulis isi emailnya. Kemudian gmail menjawab dengan “354 Go ahead a14sm120617tia.27”, itu artinya lampu hijau buat saya untuk memasukkan isi pesannya.

data
354  Go ahead a14sm120617tia.27
Subject: ini contoh saja(subject tidak harus ada)

ini baru isi bodynya
.
250 2.0.0 OK 1236757718 a14sm120617tia.27

Perintah DATA harus diakhiri dengan sebuah karakter dot pada satu baris sendiri. Kalau dalam binary hexa: 0x0D0A2E0D0A, atau dengan kata lain karakter DOT (hex 2E), diapit dengan CRLF. Inilah gunanya opsi -crlf, tanpa ada opsi -crlf, maka openSSL hanya akan mengirim 0x0A2E0A, atau karakter DOT diapi dengan LF. Pada beberapa smtp server LF saja tidak masalah, namun untuk server lain seperti gmail harus lengkap yaitu CRLF. Tanpa opsi -crlf gmail tidak akan bereaksi apa-apa walaupun sudah diberikan perintah DOT karena gmail menganggap perintah DATA belum selesai karena gmail merasa belum menemukan “[CR][LF][.][CR][LF]” .

Setelah mengirim “CRLF.CRLF”, gmail membalas dengan “250 2.0.0 OK 1236757718 a14sm120617tia.27”. Itu artinya email kita telah diterima oleh smtp server untuk disampaikan pada yang berhak menerima. String “a14sm120617tia.27” adalah ESMTP ID yang akan muncul pada header “Received” nantinya. Setelah itu koneksi SSL harus diputus dengan perintah QUIT.

Email Full Header

Sekarang saya akan tunjukkan email yang diterima oleh rizki.a.t.ilmuhacking.com beserta header lengkapnya.

Return-path: 
Envelope-to: rizki.a.t.ilmuhacking.com
Delivery-date: Wed, 11 Mar 2009 02:46:34 -0500
Received: from ti-out-0910.google.com ([209.85.142.184]:18796)
     by gator669.hostgator.com with esmtp (Exim 4.69)
     (envelope-from )
     id 1LhJ98-00072k-98
     for rizki.a.t.ilmuhacking.com; Wed, 11 Mar 2009 02:46:34 -0500
Received: by ti-out-0910.google.com with SMTP id w4so2949271tib.9
     for ; Wed, 11 Mar 2009 00:48:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
     d=gmail.com; s=gamma;
     h=domainkey-signature:received:received:message-id:date:from:subject;
     bh=J251llbniOU9frVh5JTTWTbFJ7hfNyC2+eoS+Apb5mw=;
     b=MhRby2/7B1Wqvm3AuaVoN8rfMEgmNgQVn9dOaMvji3dBEJMxYJhmF0pTmO10Ax5a0N
     xPPZyR73wf4B9WnOuegsrYQaXeJcJwuT3OBpilTWYQkJ+On9oMp9G6f3mL8v1fqHop7R
     LLoq+sOzpP4hPSizgP7Ych3zkbOYsYCPTxhNs=
DomainKey-Signature: a=rsa-sha1; c=nofws;
     d=gmail.com; s=gamma;
     h=message-id:date:from:subject;
     b=wkxbyGJZxZ0u3LlYgarzF9mOAZE/suPNKdCGtI7m4HUsQoIj2bqaRCVwa4h9Gl8fjh
     Hz12rIg9HyDDXfqE0dc1bbL8IIjtjtppRV4DupwcKXz5qS769jEM6KJLm4rh0PsajxhI
     yHhQEqDvokFNrii2I1toEdJB04Y847Bbw4Gi4=
Received: by 10.110.3.15 with SMTP id 15mr12547532tic.0.1236757718898;
     Wed, 11 Mar 2009 00:48:38 -0700 (PDT)
Received: from gmail.com ([202.43.x.x])
     by mx.google.com with ESMTPS id a14sm120617tia.27.2009.03.11.00.44.16
     (version=SSLv3 cipher=RC4-MD5);
     Wed, 11 Mar 2009 00:48:37 -0700 (PDT)
Message-ID: <[email protected]>
Date: Wed, 11 Mar 2009 00:48:37 -0700 (PDT)
From: rizki.wicaksono.a.t.gmail.com
Subject: ini contoh saja(subject tidak harus ada)

ini baru isi bodynya       

Untuk menelusuri email selalu dimulai dari header Received paling bawah kemudian naik ke atas. Header Received yang paling bawah menunjukkan bahwa email dikirimkan oleh IP 202.43.x.x melalui smtp server mx.google.com. Informasi lain dari header itu adalah email dikirimkan dengan SSL versi 3 dan cipher RC4-MD5. ESMTP id adalah gabungan dari id yang didapatkan wahtu saya terkoneksi ke smtp server gmail “a14sm120617tia” dengan tanggal dan jam.

Setelah itu email direlay ke smtp server 10.110.3.15. Dari situ masih di-relay lagi ke smtp server ti-out-0910.google.com, yang merupakan smtp server yang berada di ujung luar jaringan google. Smtp ini seperti sebuah gateway untuk email yang ditujukan ke domain di luar jaringan google. Dari smtp itu email direlay ke luar jaringan google melalui smtp server gator669.hostgator.com. Google mengetahui alamat smtp ilmuhacking dengan cara query MX record dari DNS. Berdasarkan MX record DNS, smtp server untuk domain ilmuhacking.com ada di ilmuhacking.com. Kalau MX servernya adalah ilmuhacking.com, kenapa kok disebut di header sebagai gator669.hostgator.com? Perhatikan apa yang dikirimkan oleh server ketika saya telnet ke MX server untuk ilmuhacking port 25.

$ telnet ilmuhacking.com 25
Trying 174.132.149.60...
Connected to 3c.95.84ae.static.theplanet.com (174.132.149.60).
Escape character is '^]'.
220-gator669.hostgator.com ESMTP Exim 4.69 #1 Wed, 11 Mar 2009 03:49:14 -0500
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.

Dari jawaban server, terlihat jelas bahwa server menyebut dirinya dengan gator669.hostgator.com. Dari header email tidak ada lagi Received header setelah email direlay melalui gator669 ini. Artinya smtp server itu adalah yang paling dekat dengan email tujuan (memang smtp server itu berada di host yang sama dengan ilmuhacking, jadi email account berada di localhost).

Sending via Gmail Webmail

Mengirim email dengan webmail gmail lebih anonoymous daripada dengan email client karena IP address pengirim email akan tersembunyi

Sebagai pembanding saya ingin menunjukkan bedanya mengirim email menggunakan email client seperti outlook dengan mengirim email menggunakan webmail gmail.com. Mengirim email dengan webmail gmail lebih anonymous sebab ip address pengirim email akan tersembunyi dan tidak akan muncul di header email penerima. Jadi ketika penerima membaca headernya tidak akan bisa mengetahui pengirim email berasal dari IP berapa.

Baiklah mari kita coba mengirim email ke rizki.a.t.ilmuhacking.com dari gmail saya. Berikut adalah header email yang saya dapatkan di email saya @ilmuhacking.com.

Return-path: 
Envelope-to: rizki ---- ilmuhacking.com
Delivery-date: Thu, 02 Apr 2009 23:47:05 -0500
Received: from qw-out-2122.google.com ([74.125.92.26]:39569)
     by gator669.hostgator.com with esmtp (Exim 4.69)
     (envelope-from )
     id 1LpbJ2-00081i-Ur
     for rizki-----ilmuhacking.com; Thu, 02 Apr 2009 23:47:04 -0500
Received: by qw-out-2122.google.com with SMTP id 3so780828qwe.41
     for ; Thu, 02 Apr 2009 21:47:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
     d=gmail.com; s=gamma;
     h=domainkey-signature:mime-version:received:date:message-id:subject
     :from:to:content-type:content-transfer-encoding;
     bh=ttbLYGlNcclR26ajVmyhGBxUz1HjR3xNKI+RYgNoXXY=;
     b=rdHYQ5fLAKmA5Lfvye1KomQ+LDL8zwk+Wn8uanvrlNAAIj13Wr4Z+iJtPPDw2VR+yY
     6DmLM48sl33LoiOKLYTmSdZMNS5ukRT8DLnoT+SSCOclG0iMASLGbvRYF+b8AfAyewBM
     Kp5Rkg36hEIOt1VPZq++vd5Gc+xaiGDWYw4Ew=
DomainKey-Signature: a=rsa-sha1; c=nofws;
     d=gmail.com; s=gamma;
     h=mime-version:date:message-id:subject:from:to:content-type
     :content-transfer-encoding;
     b=UFm0D96HyVkRONh3GEJt2OcDJF49NswjHv6X1hJnAxNvNY+fAyj/NqI7B7zs/2BWRP
     qaKKf30jpr7qlTbPsPUZLWaFGlTA+2qIFXWlRrOI59pYS9gIpwoW0GNKc0oilGIG30FF
     0rkqdz3BA+PqFCbWZuVyHxBWIW7j+Gnzorlak=
MIME-Version: 1.0
Received: by 10.220.46.147 with SMTP id j19mr1263200vcf.75.1238734022579; Thu,
     02 Apr 2009 21:47:02 -0700 (PDT)
Date: Fri, 3 Apr 2009 11:47:02 +0700
Message-ID: <[email protected]>
Subject: testing saja....
From: Rizki Wicaksono 
To: rizki --- ilmuhacking.com
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Perhtaikan bahwa header Received yang paling bawah tidak menunjukkan ip address pengirimnya. Email pertama kali diterima oleh smtp server yang ip addressnya 10.220.46.147. Itu adalah ip adderss private, di jaringan internal gmail. Karena email dikirim dari webmail gmail sehingga email langsung diterima oleh server internal gmail. Dengan begini ip address pengirim tidak akan bisa diketahui oleh penerima email.

Comparison Regular SMTP vs SMTP over SSL vs Webmail

Oke, saya sudah tunjukkan 3 cara mengirim email melalui Gmail. Masing-masing ada kelemahan dan kelebihannya. Di bawah ini adalah tabel yang menunjukkan perbedaan dari ketiga cara tersebut dari sisi: ip address pengirim, apakah tersembunyi? apakah ada header DKIM-Signature? apakah untuk mengirim email harus login dulu? dan apakah bisa mengirim email ke domain di luar gmail.com?

  Sender Ip Address Hidden? Header DomainKey/DKIM-Signature? Must be Authenticated? Send to non-gmail domain?
Regular SMTP No No No No
SMTP over SSL No Yes Yes Yes
Webmail Yes Yes Yes Yes

Write a Comment

Comment

16 Comments

  1. kakak saya newbie masih anget nich ada banyak pertanyaan buat kakak
    1. apa perbedaan SLL dengan SMTP ?
    2. Apa dan kenapa kita harus tau MX record ?
    3. apa arti section 2 pd saat perintah dig dijalan kan ;;question ;;answer ;;authority ;;aditional saction
    4. kenapa saat telnet kita membuka port 25, apakah port 25 untuk service telnet kalau ya bnagaimana kalau service telnet nya di tutup
    5. apakah pada baris ;;answer section berikut “gmail.com. 2878 IN MX 5 gmail-smtp-in.l.google.com” yg mengandung unsur mx adalah merupakan server domian dari google?
    6. “-CAfile /etc/pki/tls/certs/ca-bu” apakah tempat penyimpanan file verifikasi untuk semua smtp server sama (misl:yahoo.com, plasa.com, dll)? jika tidak bagaimana kita mengetahuinya?
    7. dari mana kita tahu “Thawte” menggunakan algoritma cipher = RC4 128 bit, untuk server lain bagaimana?
    8. trus bagaimana saya tahu format base64 username n password saya tool apa yg harus gunakan?
    9. apakah saya dapat mengirim pesan tersebut lebih dari satu atau dengan kata lain bomb e-mail? kalau bisa tolong command nya apa?
    btw artikel disini keren2 maju terus kakak rizki trimakasih sekian dulu pertanyaan nya kebanyakan maklum newbie πŸ™‚

  2. @vmwmx
    banyak jg ya pertanyaannya πŸ˜€
    1. SSL (secure socket layer) dan SMTP (simple mail transport protocol). SSL protokol untuk menjamin keamanan pertukaran data dengan enkripsi. SMTP protokol untuk mengirim email.
    2. mx record adalah petunjuk smtp server untuk suatu domain. kalau kita mau kirim ke domain xxx.com, maka kita harus tahu dulu smtp server untuk xxx.com di mana? nah itulah guna mx record dalam dns.
    3.additional section menunjukkan IP address dari jawaban yg diberikan dns. perhatikan pada section lain jawabannya bukan berupa ip address. pada additional section inilah kita temukan ip addressnya.
    4. telnet itu nama program untuk membuka koneksi tcp seperti halnya netcat, port 25 adalah port standar utk smtp. kalau port 25 ditutup ya tidak bisa konek ke sana.
    5. iya, itu adalah MX server (smtp server) untuk domain gmail.com.
    6. CAfile adalah file berisi daftar trusted CA, berupa sertifikat yang mengandung public key masing-masing CA.
    7. di dalam sertifikat disebutkan algoritme cipher yang dipakai. coba klik gambar gembok yang biasanya di pojok kanan bawah, lalu lihat detil sertifikatnya.
    8. banyak base64 encoder online, silakan googling saja.
    9. kalau bisa kirim satu, tentu bisa juga kirim 1000 dengan cara mengulang prosedur yang sama sebanyak 1000x.
    kalau masih tdk mengerti japri saja ke rizki.a.t.ilmuhacking.com di sini spacenya terbatas, tdk bisa panjang2 ceritanya.

  3. kok ga bisa ya??
    pencerahannya dong..
    220 mx.google.com ESMTP y5si2478tia.17
    ehlo
    250-mx.google.com at your service, [125.160.108.148]
    250-SIZE 35651584
    250-8BITMIME
    250-ENHANCEDSTATUSCODES
    250 PIPELINING
    mail from:
    250 2.1.0 OK y5si2478tia.17
    rcpt to:
    502 5.5.1 Unrecognized command. y5si2478tia.17
    rcpt to:
    555 5.5.2 Syntax error. y5si2478tia.17
    rcpt to:
    250 2.1.5 OK y5si2478tia.17
    data
    354 Go ahead y5si2478tia.17
    testing..
    .
    550-5.7.1 [125.160.108.xxx] The IP you’re using to send mail is not authorized
    550-5.7.1 to send email directly to our servers. Please use the SMTP relay at
    550-5.7.1 your service provider instead. Learn more at http://mail.g
    550 5.7.1 oogle.com/support/bin/answer.py?answer=10336 y5si2478tia.17

  4. saya udah pake alamat gmail,, apa mungkin errornya disini..
    “The IP you’re using to send mail is not authorized”
    bukan itu yah? ato bgmna?

  5. salam kenal,
    sya ingin bertanya,
    apakah dengan cara ini FFsniff dapat digunakan?
    setahu saya FFsniff butuh open relay smtp server.
    tengkyu beri much atas jawabannya

  6. Salam kenal mas, artikelnya menarik sekali n sudah hampir cukup jelas, tapi berhubung saya masih newbie jadinya masih ada beberapa yang kurang paham,… πŸ™‚

    Yang mau saya tanyakan :
    “Opsi -CAfile menunjukkan lokasi trusted Certificate Authority yang kita miliki untuk memverfifikasi sertifikat yang dimiliki server apakah valid atau tidak.”
    Dimana kita bisa mendapatkan sertifikat ini, apakah tiap smtp server berbeda(misal : gmail, yahoo, aol, hotmail, dll) ?

    Untuk penggunaan openssl pada saat mau login seperti dibawah ini :

    auth login
    334 VXNlcm5hbWU6
    cml6a2kud2ljYWtzb25vQGdtYWlsLmNvbQ==
    334 UGFzc3dvcmQ6
    aW5pcGFzc3dvcmQ=
    235 2.7.0 Accepted

    Disini kita harus mengencode dulu username dan passwd kita, akan tetapi saya tidak bisa untuk mengcopy dari hasil encode ke dalam command console ini (untuk mempermudah penulisan), mungkinsaya yang tidak tau caranya, mungkin bisa dijelaskan ?
    Dengan openssl apa kita tidak bisa memberi parameter diawal untuk username dan passwordnya ?

    Sekian dulu. terima kasih banyak atas ilmu yang telah diberikan. πŸ™‚

  7. kk

    kan kita punya email dari yahoo.
    trus kita mau cari smtp kita dan pop3.
    trus host.

    tuh gmna si mohon pencerahannya maklum masih newbie panas