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.
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).
Anda mengetikkan perintah (tidak peka huruf besar/kecil); server membalas dengan kode 3 digit dan teks. Akhiri setiap perintah dengan Enter (CRLF).
| Perintah | Fungsinya |
|---|---|
HELO domain | Salam lama. Mengidentifikasi host yang terhubung berdasarkan nama. Server membalas 250. |
EHLO domain | Salam 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). |
DATA | Memulai 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.) |
RSET | Mengatur ulang transaksi saat ini (melupakan MAIL FROM / RCPT TO) tanpa menutup koneksi. |
VRFY user | Meminta 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 list | Meminta server menguraikan sebuah milis menjadi para anggotanya. Seperti VRFY, dinonaktifkan hampir di mana-mana karena alasan privasi yang sama. |
STARTTLS | Meningkatkan koneksi biasa menjadi TLS terenkripsi (pada port 25/587). Ditawarkan hanya jika tercantum dalam balasan EHLO. |
AUTH LOGIN / PLAIN | Mengautentikasi seorang pengguna (diperlukan untuk mengirim surat melalui port pengiriman, bukan untuk verifikasi). |
NOOP | Tidak melakukan apa-apa; server membalas 250. Berguna untuk menjaga koneksi tetap hidup atau menguji daya tanggap. |
HELP | Meminta server mendaftar perintah yang didukungnya. |
QUIT | Mengakhiri sesi dengan sopan. Server membalas 221 dan menutup koneksi. |
Digit pertama memberi tahu Anda kategorinya, sehingga Anda dapat membaca balasan apa pun bahkan jika Anda tidak tahu kode persisnya:
354 setelah DATA).| Kode | Arti |
|---|---|
220 | Layanan siap (banner salam pembuka). |
221 | Menutup koneksi (balasan terhadap QUIT). |
250 | OK — perintah diterima (jawaban yang Anda inginkan setelah RCPT TO). |
251 / 252 | Pengguna bukan lokal tetapi akan diteruskan / tidak dapat diverifikasi tetapi akan dicoba dikirimkan. |
354 | Mulai mengirim isi pesan (setelah DATA). |
421 | Layanan tidak tersedia, menutup — sering kali pembatasan laju (rate-limiting). |
450 / 451 / 452 | Masalah sementara (kotak surat sibuk, kesalahan lokal, penyimpanan rendah). Greylisting sering muncul di sini. |
502 | Perintah tidak diimplementasikan (balasan umum terhadap VRFY / EXPN). |
550 | Kotak surat tidak tersedia / tidak ada pengguna seperti itu — alamat tersebut tidak ada. |
551 / 552 / 553 / 554 | Pengguna bukan lokal / melebihi kuota / nama kotak surat buruk / transaksi gagal. |
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
4xx pada percobaan pertama, meminta Anda kembali lagi nanti. Sebuah 4xx tidak berarti alamat tersebut tidak valid.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.Ingin ini dilakukan secara otomatis, termasuk pencarian MX, deteksi catch-all, dan putusan yang bersih? Gunakan Pemeriksa Email kami di halaman beranda.