SMTP邮件传输协议详解

邮件协议SMTP

SMTP是简单mail传输协议,目标是向用户提供高效可靠的邮件传输。

他特别的地方在于服务器可以接力传送邮件,有两种工作情况:一是电子邮件从客户机传输到服务器,二是从某一个服务器传输到另一个服务器。

SMTP发送邮件之前需要将二进制多媒体编码为ASCII码,并且在使用SMTP传输后要求将相应的ASCII码邮件解码还原为多媒体数据,我们知道的是HTTP传输前不需要将多媒体数据编码为ASCII码。

邮件发送过程

1、发送方调用用户代理并提供接收方的邮箱地址,在用户代理上撰写待发送的报文,接着指示用户代理发送报文。

2、用户代理将撰写的报文发送到的邮件服务器,报文到达邮件服务器后将被分发到报文队列中。

3、运行在发送方的邮件服务器的SMTP客户端发现报文队列中的这个报文后将会创建一个到运行在接收方邮件服务器的SMTP服务器的TCP连接。

4、经过SMTP握手后,SMTP客户端通过TCP连接把报文发送出去。

5、在接收方的邮件服务器上,SMTP服务器接收到报文后,邮件服务器将报文放入接收方的邮箱里。

6、接收方有空时看到邮箱消息便调用用户代理查阅报文。

在此过程中,SMTP使用一些命令和应答对报文进行传输。

SMTP握手

  1. 从客户端使用熟知端口号25建立与服务器的TCP连接,SMTP服务器向该客户送回应答码220,并且还为客户端提供了服务器的域名
  2. 客户端收到应答码后,发送HELO命令,启动客户端和服务器之间的SMTP会话。该客户端发送的HELO用来向服务器提供客户端的标识信息
  3. 服务器端回应应答码250,通知客户端:请求建立邮件服务会话已经实现
C: telent SMTP.163.com 25  //以telenet方式连接163邮件服务器
S: 220 163.com Anti-spam GT for Coremail System //220为响应数字,其后的为欢迎信息
C: HELO SMTP.163.com //除了HELO所具有的功能外,EHLO主要用来查询服务器支持的扩充功能 
S: 250-mail
S: 250-AUTH LOGIN PLAIN
S: 250-AUTH=LOGIN PLAIN
S: 250 8BITMIME //最后一个响应数字应答码之后跟的是一个空格,而不是'-' 
C: AUTH LOGIN   //请求认证
S: 334 dxNlcm5hbWU6  //服务器的响应——经过base64编码了的“Username”=
C: Y29zdGFAYW1heGl0Lm5ldA==  //发送经过BASE64编码了的用户名
S: 334 UGFzc3dvcmQ6  //经过BASE64编码了的"Password:"=
C: MTk4MjIxNA==  //客户端发送的经过BASE64编码了的密码
S: 235 auth successfully  //认证成功 
C: MAIL FROM: bripengandre@163.com  //发送者邮箱
S: 250.  //“…”代表省略了一些可读信息
C: RCPT TO: bripengandre@smail.hust.edu.cn //接收者邮箱
S: 250.    // “…”代表省略了一些可读信息
C: DATA //请求发送数据
S: 354 Enter mail, end with "." on a line by itself
C: Enjoy Protocol Studing
C: .
S: 250 Message sent
C: QUIT //退出连接 
S: 221 Bye

邮件报文撰写并发送

  1. 客户用“MAIL FROM”向服务器报告发信人的邮箱与域名
  2. 服务器向客户回应应答码“250”,代表请求命令完成
  3. 客户用“RCPT TO”命令向服务器报告收信人的邮箱与域名
  4. 服务器向客户回应应答码“250”,代表请求命令完成
  5. 客户用“DTAT”命令对报文的传送进行初始化
  6. 服务器回应“354”,表示可以进行邮件输入了
  7. 客户用连续的行向服务器传送报文的内容,每行以两字符的行结束标识(CR与LF)终止。报文以只有一个“.”的行结束
  8. 服务器向客户回应应答码“250”,代表请求命令完成

终止SMTP会话

1.客户端发送“QUIT”命令

2.服务器收到命令后,回应应答码“221”,并结束会话

邮件访问协议

这时,信件已在接收方邮件服务器上的邮箱了,用户调用用户代理查看邮件报文时要用到邮件访问协议对邮件进行查阅。 流行的邮件访问协议有:第三版的邮局协议(Post Office Protocol --version 3 , POP3),因特网邮件访问协议(Internet Mail Access Protocol)和HTTP。

简述一下POP3。 POP3按照三个阶段进行工作:特许、事务处理以及更新。 特许就是用户发送用户名和口令用以鉴别用户;事务处理就是取回报文,同时允许用户代理对报文做删除标记,取消报文删除标记以及获取邮件统计信息。更新就是用户发出QUIT命令结束POP3会话后邮件服务器删除被标记为删除的报文。

值得一提的是,**使用POP3的用户代理可以被配置为“下载并删除”和“下载并保留”两种方式。**顾名思义,“下载并删除”就是调用用户代理下载并查看邮件之后将该邮件报文删除;而“下载并保留”则相反,下载并查看该邮件报文将继续保留在邮件服务器,可用不同的终端系统进行重复下载并查看该邮件报文。
POP3与IMAP最大的不同是,POP3只能通过下载邮件报文后在端系统本地对邮件报文进行移动或删除;而IMAP则提供了通过远程服务器上的文件夹对邮件报文进行移动并查看的指令HTTP邮件访问协议也不难理解,最大的特点就是它的用户代理就是普通的Web浏览器,用户代理和服务器之间的通信是通过HTTP进行的。

常见的SMTP命令:

指令 说明
HELO 与服务器确认,通知其客户端使用的机器名称,一般邮件服务器不做限定
AUTH 使用AUTH LOGIN与服务器进行登录验证
MAIL FROM 发件人信息,填写与认证信息不同往往被定位为垃圾邮件或恶意邮件
RCPT TO 收信人地址
DATA 输入邮件基本信息
FROM 邮件基本信息:发信人显示信息(此处可以伪造身份,但是非常容易被识别)
TO 邮件基本信息:服务器收件人显示信息
SUBJECT 邮件基本信息:邮件标题,不填写也往往容易被定位为垃圾邮件
QUIT 断开链接

常见SMTP应答返回码:

返回码 说明
220 服务就绪
250 请求动作成功完成
235 认证通过
221 处理中
354 发送开始,往往与data指令结合
500 指令错误
550 命令无法执行

报文格式

报文有两部分,贴切点形容就是信封和内容。

SMTP邮件传输协议详解_第1张图片

所谓的信封,其实是SMTP命令。
内容,邮件报文对象的内容,分为首部和主体两部分。
首部理解为信件的描述信息,主体理解为发件人向收件人传达的主要信息。

使用Telnet连接smtp服务器发送邮件

用telnet前需要在启用或关闭Windows功能开启telnet

使用SMTP服务器接收邮件时需要在邮箱设置里开启SMTP服务。

在这里插入图片描述

SMTP邮件传输协议详解_第2张图片

SMTP邮件传输协议详解_第3张图片

你可能感兴趣的:(网络协议,服务器,网络,网络协议)