SMTP 协议简介

SMTP 是"简单邮件传输协议"(Simple Mail Transfer Protocol)的缩写,基于 TCP 协议,用来发送电子邮件。

只要运行了该协议的服务器端(daemon),当前服务器就变为邮件服务器,可以接收电子邮件。

验证 Email 邮箱的基本思路如下。

  1. 找到邮箱所在域名的 SMTP 服务器
  2. 连接该服务器
  3. 询问有没有该邮箱
  4. 如果服务器返回 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

参考来源

阮一峰

Online Domain Tools

分类: 关注网络 标签: Emailstmp

评论

暂无评论数据

暂无评论数据

目录