STMP验证 Email 地址
SMTP 协议简介
SMTP 是"简单邮件传输协议"(Simple Mail Transfer Protocol)的缩写,基于 TCP 协议,用来发送电子邮件。
只要运行了该协议的服务器端(daemon),当前服务器就变为邮件服务器,可以接收电子邮件。
验证 Email 邮箱的基本思路如下。
- 找到邮箱所在域名的 SMTP 服务器
- 连接该服务器
- 询问有没有该邮箱
- 如果服务器返回 250 或 251 状态码,邮箱就是真的;如果返回 5xx(500~599),就是假的。
注意,即使服务器确认邮箱是真的, 也不代表邮件一定会发送到该邮箱,更不代表用户一定会读到该邮件。
查找域名的 MX 记录
下面通过一个例子,演示如何验证[email protected]这个邮箱。
首先,需要查找gmail.com 的 MX 记录。它指向真正处理邮件的那台服务器。
C:\Users\Administrator>nslookup -q=mx gmail.com
服务器: dns.google
Address: 8.8.8.8
非权威应答:
gmail.com MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
gmail.com MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com
gmail.com MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com
gmail.com MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com
建立 TCP 连接
SMTP 协议规定,连接成功后,必须向邮件服务器提供连接的域名,也就是邮件将从哪台服务器发来。
假定从[email protected]向[email protected]发送邮件,这里要提供的域名就是gmail.com。
telnet alt1.gmail-smtp-in.l.google.com
220 mx.google.com ESMTP d2e1a72fcca58-73dbfa3dc20si6971068b3a.211 - gsmtp
HELO gmail.com
250 mx.google.com at your service
MAIL FROM:<[email protected]>
# 邮件服务器返回状态码250,表示响应成功。
250 2.1.0 OK d2e1a72fcca58-73dbfa3dc20si6971068b3a.211 - gsmtp
RCPT TO:<[email protected]>
# 一般来说,状态码 250 和 251 都表示邮箱存在,状态码 5xx 表示不存在,其他状态码(主要是 4xx)则代表无法确认。
250 2.1.5 OK d2e1a72fcca58-73dbfa3dc20si6971068b3a.211 - gsmtp
参考来源
版权申明
本文系作者 @ninja911 原创发布在NinJa911 Blog站点。未经许可,禁止转载。
暂无评论数据