Pemeriksaan SMTP dengan telnet

Panduan praktis untuk menguji server email secara manual. Pelajari apa yang dilakukan setiap perintah SMTP, bagaimana server menjawab, dan cara menjalankan sesi verifikasi lengkap dengan telnet atau openssl.

SMTP (Simple Mail Transfer Protocol) adalah protokol berbasis teks biasa dan berorientasi baris. Artinya, Anda dapat berbicara langsung dengan server surat dari sebuah terminal dan membaca persis apa yang dijawabnya — tanpa memerlukan perangkat lunak khusus. Ini adalah cara paling transparan untuk memeriksa apakah sebuah kotak surat ada, apakah sebuah server dapat dijangkau, dan bagaimana ia dikonfigurasi.

1. Terhubung ke server surat

Pertama, temukan server surat (host MX) untuk domain tersebut, lalu buka koneksi TCP ke port SMTP-nya. Port klasiknya adalah 25. Port pengiriman (submission) 587 dan 2525 digunakan dengan STARTTLS; port 465 adalah TLS implisit (SMTPS).

Koneksi biasa (port 25):

telnet mail.example.com 25

Port STARTTLS (587 atau 25) — telnet tidak bisa melakukan TLS, gunakan openssl:

openssl s_client -connect mail.example.com:587 -starttls smtp -crlf

Port TLS implisit (465):

openssl s_client -connect mail.example.com:465 -crlf

Catatan: banyak ISP rumahan dan seluler memblokir port keluar 25 untuk melawan spam. Jika telnet ... 25 hanya menggantung, itu biasanya penyedia layanan Anda, bukan server surat. Uji dari sebuah server/VPS tempat port 25 terbuka, atau gunakan port pengiriman (submission).

2. Penjelasan perintah SMTP

Anda mengetikkan perintah (tidak peka huruf besar/kecil); server membalas dengan kode 3 digit dan teks. Akhiri setiap perintah dengan Enter (CRLF).

PerintahFungsinya
HELO domainSalam lama. Mengidentifikasi host yang terhubung berdasarkan nama. Server membalas 250.
EHLO domainSalam modern (Extended HELO). Sama seperti HELO tetapi server juga mendaftar ekstensi yang didukung (STARTTLS, AUTH, SIZE, PIPELINING…).
MAIL FROM:<addr>Memulai pesan baru dan menetapkan pengirim amplop (“return path”). Balasan 250 jika diterima.
RCPT TO:<addr>Perintah kunci untuk verifikasi. Meminta server menerima seorang penerima. 250 = kotak surat diterima; 550 = tidak ada pengguna seperti itu; 4xx = coba lagi nanti (mis. greylisting).
DATAMemulai isi pesan. Server membalas 354; Anda mengirim header + isi dan mengakhiri dengan satu titik . pada barisnya sendiri. (Untuk pemeriksaan verifikasi, Anda tidak pernah mencapai langkah ini.)
RSETMengatur ulang transaksi saat ini (melupakan MAIL FROM / RCPT TO) tanpa menutup koneksi.
VRFY userMeminta server memverifikasi sebuah nama pengguna/alamat. Dirancang persis untuk ini, tetapi hampir selalu dinonaktifkan saat ini (mengembalikan 252 atau 502) karena membocorkan alamat yang valid kepada pengirim spam.
EXPN listMeminta server menguraikan sebuah milis menjadi para anggotanya. Seperti VRFY, dinonaktifkan hampir di mana-mana karena alasan privasi yang sama.
STARTTLSMeningkatkan koneksi biasa menjadi TLS terenkripsi (pada port 25/587). Ditawarkan hanya jika tercantum dalam balasan EHLO.
AUTH LOGIN / PLAINMengautentikasi seorang pengguna (diperlukan untuk mengirim surat melalui port pengiriman, bukan untuk verifikasi).
NOOPTidak melakukan apa-apa; server membalas 250. Berguna untuk menjaga koneksi tetap hidup atau menguji daya tanggap.
HELPMeminta server mendaftar perintah yang didukungnya.
QUITMengakhiri sesi dengan sopan. Server membalas 221 dan menutup koneksi.

3. Kode respons

Digit pertama memberi tahu Anda kategorinya, sehingga Anda dapat membaca balasan apa pun bahkan jika Anda tidak tahu kode persisnya:

  • 2xx — berhasil (perintah diterima).
  • 3xx — perantara, server menginginkan masukan lebih lanjut (mis. 354 setelah DATA).
  • 4xx — kegagalan sementara: coba lagi nanti. Alamat tersebut mungkin masih valid.
  • 5xx — kegagalan permanen: perintah atau alamat ditolak.
KodeArti
220Layanan siap (banner salam pembuka).
221Menutup koneksi (balasan terhadap QUIT).
250OK — perintah diterima (jawaban yang Anda inginkan setelah RCPT TO).
251 / 252Pengguna bukan lokal tetapi akan diteruskan / tidak dapat diverifikasi tetapi akan dicoba dikirimkan.
354Mulai mengirim isi pesan (setelah DATA).
421Layanan tidak tersedia, menutup — sering kali pembatasan laju (rate-limiting).
450 / 451 / 452Masalah sementara (kotak surat sibuk, kesalahan lokal, penyimpanan rendah). Greylisting sering muncul di sini.
502Perintah tidak diimplementasikan (balasan umum terhadap VRFY / EXPN).
550Kotak surat tidak tersedia / tidak ada pengguna seperti itu — alamat tersebut tidak ada.
551 / 552 / 553 / 554Pengguna bukan lokal / melebihi kuota / nama kotak surat buruk / transaksi gagal.

4. Contoh lengkap yang dikerjakan

Memeriksa apakah john@example.com ada. Baris yang Anda ketik ditandai >; selebihnya adalah server:

$ telnet mail.example.com 25 220 mail.example.com ESMTP ready > EHLO checkemail.test 250-mail.example.com Hello checkemail.test 250-STARTTLS 250-SIZE 52428800 250 PIPELINING > MAIL FROM:<probe@checkemail.test> 250 2.1.0 Ok > RCPT TO:<john@example.com> 250 2.1.5 Ok ← kotak surat ADA > RSET 250 2.0.0 Ok > QUIT 221 2.0.0 Bye

Jika sebaliknya penerima tidak ada, Anda akan melihat sesuatu seperti:

> RCPT TO:<nosuchuser@example.com> 550 5.1.1 <nosuchuser@example.com>: Recipient address rejected: User unknown

5. Hal-hal yang membuat hasil menjadi tidak pasti

  • Greylisting — server sengaja mengembalikan kode sementara 4xx pada percobaan pertama, meminta Anda kembali lagi nanti. Sebuah 4xx tidak berarti alamat tersebut tidak valid.
  • Domain catch-all — beberapa server menerima setiap penerima dengan 250 dan memilahnya kemudian. Maka RCPT TO tidak dapat membuktikan bahwa kotak surat tertentu ada. Untuk mendeteksi catch-all, coba sebuah alamat yang jelas-jelas acak: jika alamat itu juga diterima, domain tersebut bersifat catch-all.
  • Pertahanan anti-penyalahgunaan — server dapat menunda, menyembunyikan status sebenarnya, atau memblokir pemeriksaan berulang dari satu IP. Ujilah dengan sopan dan jangan membanjiri sebuah server.
  • VRFY / EXPN dinonaktifkan — jangan bergantung padanya; RCPT TO adalah sinyal yang praktis.

Ingin ini dilakukan secara otomatis, termasuk pencarian MX, deteksi catch-all, dan putusan yang bersih? Gunakan Pemeriksa Email kami di halaman beranda.