PHP E-Mail Advanced Validation (Format, MX Host, SMTP Mailbox)

Sebuah script PHP sederhana untuk melakukan validasi E-Mail melalui format penulisan, MX record, dan SMTP mailbox.

Tidak bisa dipungkiri lagi jika di internet, keberadaan E-Mail sangatlah penting. Dengan adanya E-Mail, informasi dapat sangat cepat sampai meskipun sang pengirim dan penerima berada di dua benua yang berbeda. Selain itu, email juga masih menjadi pilihan perusahaan dan developer untuk menyampaikan informasi kepada para pelanggannya.

Kali ini ijinkan saya untuk berbagi sebuah script PHP sederhana untuk melakukan validasi E-Mail melalui format penulisan, MX record, dan SMTP mailbox.

Untuk validasi alamat E-Mail, kita dapat melakukan beberapa hal. yaitu dari format penulisan email, melakukan pengecekan atas MX record pada domain yang ingin di cek, atau bahkan melakukan koneksi ke SMTP server yang dituju untuk melakukan pengecekan keberadaan user yang dituju.

Source code dapat didownload di http://go.webdatasolusindo.co.id/scripts/php/email-advanced-validation.php atau di http://pastebin.com/yyjChgKF.

1. Validasi Format Email

Format email yang sering digunakan adalah seperti berikut : [email protected] Username : nama user yang dituju. domain.com : adalah nama domain dimana user tersebut berada.

Kelemahan pada validasi format seperti ini adalah kita tidak tahu apakah domain tersebut benar-benar memiliki mail server. Misalnya alamat email [email protected] akan dibaca valid, padahal sebenarnya domain tersebut tidak ada.

Untuk memastikan bahwa domain tersebut valid atau tidak, kita dapat melakukan pengecekan melalui MX record.

2. Validasi MX Record

Fungsi MX Record biasa digunakan untuk mendelegasikan email untuk suatu domain / host ke mail server yang dituju. (Baca : Sistem penamaan domain agar lebih jelas)

Contohnya dengan menjalankan perintah dig wds.co.id MX +short:

130 aspmx3.googlemail.com.
20 aspmx.l.google.com.
310 alt1.aspmx.l.google.com.
420 alt2.aspmx.l.google.com.
530 aspmx2.googlemail.com.

dig record

Maka akan terlihat MX Record untuk domain wds.co.id.

Dengan melakukan query MX record tersebut, bisa dikatakan bahwa domain tersebut merupakan domain yang memungkinkan memiliki alamat email. Sedangkan kelemahan pada validasi melalui MX record adalah kita tidak tahu apakah user pada domain tersebut benar-benar ada.

Misalnya alamat email [email protected] akan dikatakan valid meskipun sebenarnya user alamat palsu tidak benar-benar ada pada mail server yang dituju.

Untuk dapat mengetahui user benar-benar ada pada mail server yang dituju, kita dapat mengembangkannya lagi dengan melakukan koneksi ke SMTP server yang dituju.

3. Validasi SMTP mailbox

Dengan melakukan koneksi ke SMTP server, kita dapat mengetahui apakah user pada domain tersebut benar-benar ada atau tidak. Contohnya saya melakukan telnet ke port 25 (default port SMTP) dan menjalankan perintah-perintah SMTP.

 1dit@tompel ~ $ telnet aspmx3.googlemail.com 25
 2Trying 74.125.137.26...
 3Connected to aspmx3.googlemail.com.
 4Escape character is '^]'.
 5220 mx.google.com ESMTP c2si11647357yhk.33
 6HELO aspmx3.googlemail.com
 7250 mx.google.com at your service
 8MAIL FROM: <[email protected]>
 9250 2.1.0 OK c2si11647357yhk.33
10RCPT TO: <[email protected]>
11250 2.1.5 OK c2si11647357yhk.33
12QUIT
13221 2.0.0 closing connection c2si11647357yhk.33
14Connection closed by foreign host.
15dit@tompel ~ $ telnet aspmx3.googlemail.com 25
16Trying 74.125.137.26...
17Connected to aspmx3.googlemail.com.
18Escape character is '^]'.
19220 mx.google.com ESMTP w4si11351321yhd.42
20HELO aspmx3.googlemail.com
21250 mx.google.com at your service
22MAIL FROM: <[email protected]>
23250 2.1.0 OK w4si11351321yhd.42
24RCPT TO: <[email protected]>
25550-5.1.1 The email account that you tried to reach does not exist. Please try
26550-5.1.1 double-checking the recipient's email address for typos or
27550-5.1.1 unnecessary spaces. Learn more at
28550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 w4si11351321yhd.42
29QUIT
30221 2.0.0 closing connection w4si11351321yhd.42
31Connection closed by foreign host.

SMTP commands

Perhatikan pada koneksi telnet pertama :

1RCPT TO: <[email protected]>
2250 2.1.5 OK c2si11647357yhk.33

dan koneksi telnet kedua :

1RCPT TO: <[email protected]>
2550-5.1.1 The email account that you tried to reach does not exist. [ Blah blah blah... ]

Pada koneksi pertama, terlihat bahwa respond mail server mau menerima email untuk recipient yg dituju. Sedangkan pada koneksi kedua, mail server tidak mau menerima email untuk recipient yg dituju.

Jadi bisa dikatakan bahwa user alamat.palsu pada domain wds.co.id tidak benar-benar ada.

Dari ke 3 validasi di atas itulah konsep dasar darp script PHP E-Mail Advanced Validation ini saya buat.