Mengirim Email Melalui Command Line

2 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Mengirim Email Melalui Command Line
Ilustrasi Gmail (Sumber: Unsplash)

TeknoCerdas.com – Salam cerdas untuk kita semua. Menigirim email lewat Desktop client seperti Thunderbird, Outlook dan sebagainya adalah hal biasa. Pun begitu dengan penggunaan Web email client untuk mengirim email. Hal yang jarang dilakukan adalah mengirim email melalui command line atau baris perintah dengan mengetikkan baris perintah protokol SMTP secara manual.

Protokol SMTP adalah protokol untuk berbasis teks untuk mengirimkan email. Cara kerja protokol SMTP ini diatur dalam dokumen RFC 5321.

Baca Juga:
Apa itu MX Record dan Bagaimana Cara Kerjanya?

Cara pengiriman email dengan command line pada tulisan ini membahas pengiriman email dari client (anda) ke email server bukan dari server ke server.

Untuk berkomunikasi dengan email server akan digunakan program Netcat atau Telnet. Pilih sesuai dengan program yang tersedia di komputer anda. Pada Netcat untuk mulai membuka koneksi ke server digunakan perintah berikut.

$ nc [SERVER_TUJUAN] [NOMOR_PORT]

Sedangkan jika menggunakan Telnet maka perintahnya adalah seperti dibawah.

$ telnet [SERVER_TUJUAN] [NOMOR_PORT]

Jika ingin menggunakan koneksi yang terenkripsi dengan SSL atau TLS maka dapat digunakan program OpenSSL.

Melakukan Koneksi ke Email Server

Untuk melakukan koneksi ke email server menggunakan protokol SMTP umumnya digunakan port 25.

$ nc mail.teknocerdas.com 25

Biasanya setiap email server akan memunculkan banner setelah koneksi terbuka.

220 mail.teknocerdas.com ESMTP Hi, I'm mail server. (Ubuntu/Postfix)

Namun port 25 umumnya digunakan untuk koneksi server-to-server bukan client-to-server. Oleh karenanya port 25 biasanya diblok oleh ISP untuk menghindari spam.

Untuk pengiriman email biasanya dari client biasanya digunakan port lain yaitu port 587 yang juga dilengkapi dengan koneksi SSL atau TLS untuk enkripsi. Sayangnya program seperti Netcat atau Telnet tidak mendukung penggunaan enkripsi. Untuk itu kita perlu menggunakan program lain yaitu OpenSSL.

$ openssl s_client -starttls smtp -connect mail.teknocerdas.com:587

Setelah banner dan berbagai informasi certificate muncul kita dapat membuka percakapan dengan server dengan perintah EHLO.

EHLO mail.teknocerdas.com
250-mail.teknocerdas.com
250-PIPELINING
250-SIZE 134217728
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8

Dapat terlihat fitur-fitur yang tersedia oleh mail server tersebut.

Otentikasi pada SMTP Server

Pada perintah EHLO sebelumnya diketahui bahwa SMTP server mendukung dua jenis otentikasi yaitu PLAIN dan LOGIN. Pada contoh ini saya akan menggunakan mekanisme PLAIN dimana username dan password diawali dengan NULL byte atau \0.

Kombinasi username dan password harus menggunakan encoding base64. Sehingga untuk menghasilkan string username dan password gunakan perintah berikut. (Pada terminal session yang lain)

$ echo -ne "\0AKUN@EXAMPLE.COM\0PASSWORD" | base64
AEFLVU5ARVhBTVBMRS5DT00AUEFTU1dPUkQ=

Gunakan string Base64 yang dihasilkan sebagai parameter untuk login menggunakan PLAIN.

AUTH PLAIN AEFLVU5ARVhBTVBMRS5DT00AUEFTU1dPUkQ=
235 2.7.0 Authentication successful

Mulai Mengirim Email

Terdapat tiga perintah utama untuk pengiriman email yaitu:

  1. MAIL FROM: untuk menuliskan pengirim email
  2. RCPT TO: untuk menuliskan alamat email tujuan
  3. DATA: untuk menuliskan pesan email

Kita mulai dari menuliskan alamat email pengirim terlebih dahulu.

MAIL FROM:
250 2.1.0 Ok

Jika terdapat balasan OK maka perintah berhasil dijalankan. Lanjutkan dengan menuliskan alamat email tujuan. Dalam contoh kita ini saya menggunakan alamat email tujuan adalah rio@belajaraws.com yang mana alamat email menggunakan layanan GMail.

Baca Juga:
Cara Mendeteksi Email Penipuan (Phishing) Lewat Header

RCPT TO:
250 2.1.5 Ok

Alamat email tujuan telah sukses ditulis. Sekarang saatnya menulis header dan body dari email dengan perintah DATA.

DATA
354 End data with .

Setelah perintah DATA dijalankan maka server mengharapkan format yang akan dikirimkan berikutnya adalah header dan body email. Dimana antara header dan body dipisahkan oleh satu baris kosong .

From: Rio TeknoCerdas
To: Rio BelajarAWS
Subject: Hello from CLI

Hello Rio,

This email was sent using OpenSSL command line.

Cheers

Penulisan header From: dan To: digunakan untuk keperluan mail client dalam menampilkan sebuah email.

Dapat diperhatikan jika antara Subject: dan Hello Rio, terdapat sebuah baris kosong yang mengindikasikan pemisahan antara header dan body email.

Setelah selesai menuliskan email akhiri dengan tanda . titik.

.
250 2.0.0 Ok: queued as 686E33E910

Sesaat setelah itu harusnya email akan segera masuk antrian untuk dikirimkan ke tujuan. Dan inilah perintah lengkap dari langkah-langkah diatas.

AUTH PLAIN AEFLVU5ARVhBTVBMRS5DT00AUEFTU1dPUkQ=
235 2.7.0 Authentication successful
MAIL FROM:
250 2.1.0 Ok
RCPT TO:
250 2.1.5 Ok
DATA
354 End data with .
From: Rio TeknoCerdas
To: Rio BelajarAWS
Subject: Hello from CLI

Hello Rio,

This email was sent using OpenSSL command line.

Cheers
.
250 2.0.0 Ok: queued as 686E33E910
QUIT
DONE

Jika konfigurasi SPF, DMARC dan DKIM benar maka harusnya email yang dikirimkan anda mendarat pada inbox email tujuan dengan selamat.

Baca Juga:
Bagaimana Mendapatkan Skor Email Sempurna pada Mail-Tester.com

Email diterima ke GMail dari Command Line
Email diterima ke GMail dari Command Line

Mengirim email menggunakan command line adalah salah satu alternatif ketika sedang tidak memiliki email client. Semisal anda sedang login ke server menggunakan SSH.