38
第 10 第 第第第第第第

第 10 章 电子邮件协议

Embed Size (px)

DESCRIPTION

第 10 章 电子邮件协议. 本章学习目标. 理解电子邮件系统的基本原理 了解 E-mail 地址的结构 描述收发邮件时所使用的主要协议( SMTP , POP3 , IMAP4 ) 了解 SMTP 的工作原理 了解 MIME 在电子邮件系统中的作用. 电子邮件( E-mail ). 电子邮件是一种用电子手段提供信息交换的现代邮政通信方式,电子邮件让人们能方便快捷地传递信息,让世界各地的人们之间能够轻松地交流 电子邮件与传统的信件通信方式相比有着巨大的优势: 传递迅速:在数分钟之内可到达地球上任何一个地方 - PowerPoint PPT Presentation

Citation preview

第 10 章 电子邮件协议

本章学习目标

理解电子邮件系统的基本原理 了解 E-mail 地址的结构 描述收发邮件时所使用的主要协议( SMTP , POP3 , IMAP4 )

了解 SMTP 的工作原理 了解 MIME 在电子邮件系统中的作用

电子邮件( E-mail ) 电子邮件是一种用电子手段提供信息交换的现代

邮政通信方式,电子邮件让人们能方便快捷地传递信息,让世界各地的人们之间能够轻松地交流

电子邮件与传统的信件通信方式相比有着巨大的优势: 传递迅速:在数分钟之内可到达地球上任何一个地方 信息多样:除文字外,还可包含图片、音乐、动画、

视频等多媒体信息,也可以附带上软件、数据等资料 方便高效:只要能连接到 Internet ,就可以随时随地

地收发 E-mail ,而且只需极少的费用

10.1 电子邮件系统 电子邮件与之前介绍的 TELNET 和 FTP 服务不同,

它不是一种“终端到终端”的服务,而是使用了“存储转发式”的服务,这是一种异步通信方式

通过存储转发可以进行非实时通信,即信件发送者可随时随地发送邮件,不需要接收者同时在场

邮件服务器是 24小时连接到网络的高性能、大容量的计算机,在服务器的硬盘上为用户分配一定的存储空间,作为用户的“邮箱”

用户可通过用户名和密码来登录“邮箱”,并进行发信、收信、编辑、转发、存档等各种操作

10.1.1 ISO/OSI 电子邮件系统 MOTIS 电子邮件系统分为

两部分 用户代理 UA : 为用户提供

良好的操作界面,并负责生成与处理消息

信息传输代理 MTA :主要负责消息传输,即所谓的“电子邮局”

MOTIS 电子邮件系统的模型

10.1.1 ISO/OSI 电子邮件系统

在电子邮件系统的具体实现中, UA 一般位于个人计算机内,而 MTA 一般位于邮件服务器中

MOTIS 的电子邮件传输是存储转发型的,其中的 MTA 扮演网关的角色,邮件经逐个MTA 传输直至信宿用户所在的 MTA

10.1.2 TCP/IP 电子邮件系统

TCP/IP 电子邮件系统在概念上也分为用户界面和邮件传输两部分,但邮件传输部分并未独立出来,形成一个类似 MOTIS 中 MTA 的组件,这是因为 TCP/IP 自始至终坚持端到端的思想, TCP/IP 电子邮件系统也采用端到端的传输方式

TCP/IP 中采用 spooling (假脱机)缓冲技术来解决延迟传递( delayed delivery )问题,将用户收发邮件与实际的邮件传输区别开来

10.1.2 TCP/IP 电子邮件系统

采用 spooling 技术的电子邮件系统

10.1.3 电子邮件协议

常见的电子邮件传输协议主要有以下三种:MIME SMTP ( 简单邮件传输协议 ) :最常用的电子邮

件传送协议 POP3 ( 邮局协议 ) :最常用的电子邮件接收协

议 IMAP4 ( 网络邮件访问协议 ) : POP3 的一种

替代协议,提供了邮件检索和邮件处理的新功能

目前,大多数邮件服务器都安装了 SMTP和 POP3 这两项协议,即 SMTP 服务器作为邮件发送服务器, POP3 服务器作为邮件接收服务器

目前,大多数邮件服务器都安装了 SMTP和 POP3 这两项协议,即 SMTP 服务器作为邮件发送服务器, POP3 服务器作为邮件接收服务器

10.1.4 电子邮件地址的格式 电子邮件地址的一般格式如下:

username@domain-name

domain-name 是电子邮件服务器的域名username 是在该服务器上注册的用户名,也即用户电子邮箱名称用户名与域名之间用符号“ @” 分隔开

书写 E-mail 地址时要注意,地址中不能包含空格,无论是用户名、域名还是 @ 的两侧都不能包含空格;不同邮件服务器对用户名包含的字符有不同的要求,一般用小写,有时也包含大写或特出字符。

10.2 SMTP 协议

SMTP 协议的作用是:当发送方计算机与支持 SMTP 协议的电子邮件服务器连接时,将电子邮件由发送方计算机准确无误地传送到接收方的电子邮箱中

SMTP 的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送

SMTP 一个相对简单的基于文本的协议。通过 SMTP 发送的所有电子邮件都是普通文本格式的,它不能直接传输图像、声音等非文本信息,但可以应用 MIME 标准将二进制文件编码后再通过 SMTP 传输。

ESMTP 解决了明码传输的不安全的问题。

10.2.1 SMTP 的工作原理

SMTP 通信模型示意图

发送SMTP在接到用户的邮件请求后,判断此邮件是否为本地邮件,若是则直接投送到用户的邮箱,否则建立一条到远程接收SMTP的双向传输通道,这里的接收SMTP可以是最终接收者,也可以是中间传送者。此后,SMTP命令从发送SMTP发出,由接收SMTP接收,而SMTP应答则反方向传送。

SMTP命令、响应以及邮件内容均使用 NVT ASCII 格式的文本

10.2.2 SMTP 连接与发送 SMTP 是一种请求响应协议,客户端

发送命令,服务器返回响应,两者通过这种方式进行交互,以完成邮件传输过程的三个阶段:建立连接、传输数据和终止连接。

客户端主动连接到服务器的 25端口,建立TCP连接。服务器会发送一个应答码为 220的问候报文,表示已经准备就绪。

客户端向服务器发送 HELO命令,用以标识发送方的身份, HELO命令的参数必须是一个合法的主机名。如果服务器接受了连接请求,会给客户端返回一个代码为 250的应答,表示可以开始报文传输。

客户端发送 MAIL 命令标识邮件的发送方,通过 FROM 参数指定发送方的电子邮件地址。如果服务器准备接收邮件,则返回代码为 250的 OK应答。

客户端发送 RCPT 命令标识邮件的接收方,通过 TO参数指定接收方的电子邮件地址,如果有多个接收人,可以发送多个 RCPT 命令。如果服务器能够识别接收人,则会返回代码为 250 的 OK应答,否则返回代码为 550 的失败应答。

客户端与服务器之间的协商结束,客户端发送 DATA 命令指示将要发送邮件数据,服务器端返回应答码为 354 的响应进行确认,表示可以开始邮件输入。客户端将邮件内容按行发送,邮件的末尾由客户端指定,是只有一个小数点 (邮件数据结束指示器 )的一行,服务器检测到邮件数据结束指示器后,返回代码为 250 的 OK应答。

客户端发送 QUIT 命令终止连接。

10.2.3 SMTP命令 SMTP命令和 FTP命令一样,都是使用 NVT ASCII 格式

的文本,以明文传输的。 SMTP 简捷的原因之一是它使用的命令少, SMTP 的最小实现仅需要 8 种命令就够了

常用 SMTP命令一览表 命令 描述

HELO 用于启动邮件传输过程,以发送方主机域名来标识身份。

MAIL 用于初始化邮件传输RCPT 用于标识单个邮件接收人,在 MAIL命令后面可有多个 RCPT命令DATA 用于将邮件报文发送给服务器

QUIT 用于终止客户端与服务器之间的连接RSET 用于中止当前的邮件事务并使两端复位VRFY 用于验证指定的用户 / 邮箱是否存在,即验证接收方地址是否正确NOOP 空操作命令

10.2.4 SMTP响应 每一条 SMTP命令都会返回一条 SMTP响应, SMTP响应与 FTP响应很相似,包含一个 3位数字的应答码,后面跟着的是描述文本

代码 描述 代码 描述211 系统状态或系统帮助响应 500 命令不可识别或语法错214 帮助信息 501 参数语法错220 服务准备就绪 502 命令不支持221 关闭连接 503 命令顺序错250 请求操作就绪 504 命令参数不支持251 非本地用户,转发到 <forward-path> 550 操作未执行:邮箱不可用354 开始邮件输入,以 <CR-LF>.<CR-LF>结束 551 非本地用户,请尝试 <forward-path>

421 服务不可用 552 操作中止:存储空间不足450 操作未执行:邮箱忙 553 操作未执行:邮箱名不正确451 操作中止:本地错误 554 传输失败452 操作未执行:存储空间不足

SMTP 应答码

10.2.5 电子邮件的结构

电子邮件的主要结构: 邮件头 (Header) 用于分隔邮件头与邮件正文的空行 邮件正文 (Body) 签名 (Signature) (位于邮件末尾的可选部

分 )

10.2.5 电子邮件的结构 邮件头的每一行都遵循“标题域:值”的格式

Received: from taurus.zsu.edu.cn (unknown [202.116.64.3])by bjmx3 (Coremail) with SMTP id tYECALSfOkFDAEAD.1for <[email protected]>; Sun , 05 Sep 2004 13:10:25 +0800 (CST)

X-Originating-IP: [202.116.64.3]Received: from RsProxy ([192.168.48.120])

by taurus.zsu.edu.cn (8.11.5/8.11.5) with SMTP id i855ABU27225for <[email protected]>; Sun , 5 Sep 2004 13:10:12 +0800 (CST)

Message-ID: <[email protected]>From: "jimmy" <[email protected]>To: <[email protected]>Subject: =?gb2312?B?z/vPog==?=Date: Sun , 5 Sep 2004 13:09:27 +0800MIME-Version: 1.0Content-Type: multipart/alternative;

boundary="----=_NextPart_000_0005_01C49349.92912D20"X-Priority: 3X-MSMail-Priority: NormalX-Mailer: Microsoft Outlook Express 6.00.2800.1106X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200

邮件头示例 →

10.2.5 电子邮件的结构 邮件中常见的标题域:

Received 域:邮件每经过一台主机时,就产生一个 Received 域,用来记录所经过主机的地址和经过时间,回复的信件可以按原路返回,而不必去选择路由。此域常拆为多行显示。

Date 域:记录邮件发送日期(本地主机的日期和时间)。

Message-ID 域:邮件惟一的标识号。 From 域:发信人邮件地址。

To 域:收信人邮件地址。 Cc 域:抄送邮件地址,需要将邮件发送给多个收信

人时使用。 Reply-to 域:回复邮件地址,当发信人有几个邮件账号,且要求对方回复的地址不是发信地址时使用。

Subject 域:邮件主题。 以“ X-” 开始的域:这些域是在基本邮件系统的基础

上添加的属性,只有在发送和目的双方邮件服务器都支持这些属性的情况下,使用这些属性才有意义。

10.3 POP

POP 是一种邮件接收协议,其作用是:当用户计算机与支持 POP 协议的电子邮件服务器连接时,把存储在该服务器的电子邮箱中的邮件准确无误地下载到用户的计算机中

POP3属于离线式协议,即不能对邮件进行在线操作,必须下载到本地才能进行处理。离线工作方式适合于那些从固定计算机上接收邮件的用户使用,因为邮件必须从服务器上删除。

POP 协议已发展到第三版,称作 POP3

10.3 POP POP3 与 SMTP 一样都是请求响应协议,命令与响应也都是用 NVT

ASCII 格式的文本表示 POP3响应由一个状态码和其后的附加信息组成,只有两种状态码:

“ +OK” (正确)和“ -ERR” (失败) 常用 POP3命令

命令及格式 描述USER username 指定用户名PASS password 指定密码STAT 询问邮箱状态(如邮件总数和总字节数等)LIST [Msg#] 列出邮件索引(邮件数量和每个邮件的大小)RETR [Msg#] 取回指定的邮件DELE [Msg#] 删除指定的邮件NOOP 空操作RSET 重置所有标记为删除的邮件,用于撤消 DELE命令QUIT 提交修改并断开连接

10.3 POP

在 POP3 中,客户端与服务器连接时有三种处理状态: 身份验证状态 事务处理状态 更新状态

当客户端连接到服务器的 110端口,并建立起 TCP 连接后,即进入身份验证状态,需要使用 USER 和 PASS命令将用户名和密码提供给服务器。

通过身份验证之后,即转入事务处理状态,这时客户端可以发送 POP3命令进行相应操作,服务器会接收命令并做出响应。

操作完成之后,客户端发出 QUIT命令,则进入更新状态,服务器确认用户的操作,更新邮件存储区,同时关闭客户端与服务器之间的连接。

10.4 IMAP

IMAP 是一个更加全面的邮件访问协议,提供了比 POP3更多的功能

IMAP允许用户像在本地计算机上一样管理服务器上的电子邮件,允许用户有选择地从邮件服务器下载邮件,并提供了共享邮箱的功能

IMAP 目前的最高版本为 IMAP4 ,使用的 TCP端口是 143

10.4 IMAP

IMAP4 提供了三种邮件访问模式: 离线模式 (Offline Mode) 在线模式 (Online Mode) 断线模式 (Disconnected Mode) 同步机制

IMAP4 提供了相当强大的功能,非常适合于需要工作在多个不同计算机上的移动用户,或需要访问和维护多个不同邮箱的用户使用

由于 IMAP4 比较复杂,给开发者开发客户端和服务器的软件带来一些难题,因而目前商用的实现方案还不多,要像 POP3那样得到广泛应用还需要一段时间

10.5 MIME

通过 SMTP 发送的所有电子邮件都是普通文本格式的,它不能直接传输图像、声音等非文本信息

MIME扩展了基本的面向文本的 Internet 邮件系统,在不改动现有邮件协议的情况下,实现了用标准的文本格式邮件传输非文本(二进制)数据的功能

MIME 的原理是将二进制数据转化为文本格式,然后再进行传输

10.5.1 MIME 标题域 有关MIME 的信息被包含在电子邮件的邮件头中,遵循“标题域:值”的格式

邮件头中包含的 MIME 信息通常包括: MIME-Version 域:说明所使用 MIME 的版本 Content-Type 域:说明传输内容的类型 Content-Type 域:说明所传输内容的编码方案,其取值包括内容类型与子类型,两者之间用符号“ /” 分隔开

Content-Transfer-Encoding 域:说明传输内容的编码方案(常用 QP 编码和 BASE64 编码)

表 10.4 MIME 内容类型和子类型

内容类型 子类型 描述

text plainrichtextenriched

无格式文本简单格式文本(如粗体、斜体或下划线等)richtext 的简化和改进

image jpeggif

ISO 10918 的 JPEG 格式CompuServe 的图形交换格式

audio basic 采用 8-bitISDNμ律格式编码video mpeg ISO 11172 的 MPEG-1 格式application octet-stream

postscript任意二进制数据PostScript程序

multipart mixedparalleldigestalternative

多个正文部分,串行处理多个正文部分,可并行处理电子邮件的摘要多个正文部分,不同语言表示的相同内容

message rfc822partialexternal-body

内容是另一个 RFC822 邮件报文内容是一个邮件报文的片断内容是指向实际报文的指针

10.5.2 MIME 多部分消息

多部分消息( Multipart Messages )的概念是 MIME 邮件的精髓,允许在一封邮件中发送多条项目

多部分消息是在 Content-Type 域中定义的一种标准内容类型( multipart ),它有四种子类型(见表 10.4 )

如果在邮件中要添加附件,必须在邮件头中定义multipart/mixed 段

10.5.2 MIME 多部分消息 为了发送多条项目,邮件正文被分为多个段,每个段又包含段头和段体两部分,两者之间以空行分隔,段与段之间也以空行分隔

multipart 各子类型的共同特征是: 在段头中指定“ boundary”参数字符串(如 <bou

ndary_string> ),段体内的每个子段以此串定界 所有的子段都以“ --<boundary_string>”行开始,父段则以“ --<boundary_string>--”行结束

小结 SMTP 是互联网上用于发送电子邮件的应用层协议,向

用户提供高效、可靠的邮件传输服务 通过 SMTP 传递的所有电子邮件都是普通文本格式的 POP3 是目前应用最广的邮件接收协议,它是一种离线

式工作协议,允许用户从邮件服务器将邮件下载到本地,同时将邮件从服务器上删除

IMAP4 ,提供了更加全面的功能,允许用户像管理本地文件一样自由地组织自己的邮箱,提供邮件摘要功能使用户可有选择地下载邮件,还提供了邮箱共享的功能

IMAP4 能在三种模式下工作:离线模式、在线模式和断线模式

MIME 是一种邮件扩展协议,通过对二进制文件进行编码,实现了以普通文本格式邮件传输任意数据的功能