380 likes | 597 Views
第 10 章 电子邮件协议. 本章学习目标. 理解电子邮件系统的基本原理 了解 E-mail 地址的结构 描述收发邮件时所使用的主要协议( SMTP , POP3 , IMAP4 ) 了解 SMTP 的工作原理 了解 MIME 在电子邮件系统中的作用. 电子邮件( E-mail ). 电子邮件是一种用电子手段提供信息交换的现代邮政通信方式,电子邮件让人们能方便快捷地传递信息,让世界各地的人们之间能够轻松地交流 电子邮件与传统的信件通信方式相比有着巨大的优势: 传递迅速:在数分钟之内可到达地球上任何一个地方
E N D
本章学习目标 • 理解电子邮件系统的基本原理 • 了解E-mail地址的结构 • 描述收发邮件时所使用的主要协议(SMTP,POP3,IMAP4) • 了解SMTP的工作原理 • 了解MIME在电子邮件系统中的作用
电子邮件(E-mail) • 电子邮件是一种用电子手段提供信息交换的现代邮政通信方式,电子邮件让人们能方便快捷地传递信息,让世界各地的人们之间能够轻松地交流 • 电子邮件与传统的信件通信方式相比有着巨大的优势: • 传递迅速:在数分钟之内可到达地球上任何一个地方 • 信息多样:除文字外,还可包含图片、音乐、动画、视频等多媒体信息,也可以附带上软件、数据等资料 • 方便高效:只要能连接到Internet,就可以随时随地地收发E-mail,而且只需极少的费用
10.1 电子邮件系统 • 电子邮件与之前介绍的TELNET和FTP服务不同,它不是一种“终端到终端”的服务,而是使用了“存储转发式”的服务,这是一种异步通信方式 • 通过存储转发可以进行非实时通信,即信件发送者可随时随地发送邮件,不需要接收者同时在场 • 邮件服务器是24小时连接到网络的高性能、大容量的计算机,在服务器的硬盘上为用户分配一定的存储空间,作为用户的“邮箱” • 用户可通过用户名和密码来登录“邮箱”,并进行发信、收信、编辑、转发、存档等各种操作
MOTIS电子邮件系统分为两部分 用户代理UA: 为用户提供良好的操作界面,并负责生成与处理消息 信息传输代理MTA:主要负责消息传输,即所谓的“电子邮局” 10.1.1 ISO/OSI电子邮件系统 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地址时要注意,地址中不能包含空格,无论是用户名、域名还是@的两侧都不能包含空格;不同邮件服务器对用户名包含的字符有不同的要求,一般用小写,有时也包含大写或特出字符。书写E-mail地址时要注意,地址中不能包含空格,无论是用户名、域名还是@的两侧都不能包含空格;不同邮件服务器对用户名包含的字符有不同的要求,一般用小写,有时也包含大写或特出字符。
10.2 SMTP协议 • SMTP协议的作用是:当发送方计算机与支持SMTP协议的电子邮件服务器连接时,将电子邮件由发送方计算机准确无误地传送到接收方的电子邮箱中 • SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送
SMTP一个相对简单的基于文本的协议。通过SMTP发送的所有电子邮件都是普通文本格式的,它不能直接传输图像、声音等非文本信息,但可以应用MIME标准将二进制文件编码后再通过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的问候报文,表示已经准备就绪。客户端主动连接到服务器的25端口,建立TCP连接。服务器会发送一个应答码为220的问候报文,表示已经准备就绪。 • 客户端向服务器发送HELO命令,用以标识发送方的身份,HELO命令的参数必须是一个合法的主机名。如果服务器接受了连接请求,会给客户端返回一个代码为250的应答,表示可以开始报文传输。
客户端发送MAIL命令标识邮件的发送方,通过FROM参数指定发送方的电子邮件地址。如果服务器准备接收邮件,则返回代码为250的OK应答。客户端发送MAIL命令标识邮件的发送方,通过FROM参数指定发送方的电子邮件地址。如果服务器准备接收邮件,则返回代码为250的OK应答。 • 客户端发送RCPT命令标识邮件的接收方,通过TO参数指定接收方的电子邮件地址,如果有多个接收人,可以发送多个RCPT命令。如果服务器能够识别接收人,则会返回代码为250的OK应答,否则返回代码为550的失败应答。
客户端与服务器之间的协商结束,客户端发送DATA命令指示将要发送邮件数据,服务器端返回应答码为354的响应进行确认,表示可以开始邮件输入。客户端将邮件内容按行发送,邮件的末尾由客户端指定,是只有一个小数点(邮件数据结束指示器)的一行,服务器检测到邮件数据结束指示器后,返回代码为250的OK应答。客户端与服务器之间的协商结束,客户端发送DATA命令指示将要发送邮件数据,服务器端返回应答码为354的响应进行确认,表示可以开始邮件输入。客户端将邮件内容按行发送,邮件的末尾由客户端指定,是只有一个小数点(邮件数据结束指示器)的一行,服务器检测到邮件数据结束指示器后,返回代码为250的OK应答。 • 客户端发送QUIT命令终止连接。
10.2.3 SMTP命令 • SMTP命令和FTP命令一样,都是使用NVT ASCII格式的文本,以明文传输的。SMTP简捷的原因之一是它使用的命令少,SMTP的最小实现仅需要8种命令就够了 常用SMTP命令一览表
10.2.4 SMTP响应 • 每一条SMTP命令都会返回一条SMTP响应,SMTP响应与FTP响应很相似,包含一个3位数字的应答码,后面跟着的是描述文本 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.1 for <tonny@tom.com>; 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 i855ABU27225 for <tonny@tom.com>; Sun,5 Sep 2004 13:10:12 +0800 (CST) Message-ID: <000801c49306$85c53fc0$7830a8c0@zsu.edu.cn> From: "jimmy" <jimmy@taurus.zsu.edu.cn> To: <tonny@tom.com> Subject: =?gb2312?B?z/vPog==?= Date: Sun,5 Sep 2004 13:09:27 +0800 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0005_01C49349.92912D20" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-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命令
10.3 POP • 在POP3中,客户端与服务器连接时有三种处理状态: • 身份验证状态 • 事务处理状态 • 更新状态 • 当客户端连接到服务器的110端口,并建立起TCP连接后,即进入身份验证状态,需要使用USER和PASS命令将用户名和密码提供给服务器。
通过身份验证之后,即转入事务处理状态,这时客户端可以发送POP3命令进行相应操作,服务器会接收命令并做出响应。通过身份验证之后,即转入事务处理状态,这时客户端可以发送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.5.2 MIME多部分消息 • 多部分消息(Multipart Messages)的概念是MIME邮件的精髓,允许在一封邮件中发送多条项目 • 多部分消息是在Content-Type域中定义的一种标准内容类型(multipart),它有四种子类型(见表10.4) • 如果在邮件中要添加附件,必须在邮件头中定义multipart/mixed段
10.5.2 MIME多部分消息 • 为了发送多条项目,邮件正文被分为多个段,每个段又包含段头和段体两部分,两者之间以空行分隔,段与段之间也以空行分隔 • multipart各子类型的共同特征是: • 在段头中指定“boundary”参数字符串(如<boundary_string>),段体内的每个子段以此串定界 • 所有的子段都以“--<boundary_string>”行开始,父段则以“--<boundary_string>--”行结束
小结 • SMTP是互联网上用于发送电子邮件的应用层协议,向用户提供高效、可靠的邮件传输服务 • 通过SMTP传递的所有电子邮件都是普通文本格式的 • POP3是目前应用最广的邮件接收协议,它是一种离线式工作协议,允许用户从邮件服务器将邮件下载到本地,同时将邮件从服务器上删除 • IMAP4,提供了更加全面的功能,允许用户像管理本地文件一样自由地组织自己的邮箱,提供邮件摘要功能使用户可有选择地下载邮件,还提供了邮箱共享的功能 • IMAP4能在三种模式下工作:离线模式、在线模式和断线模式 • MIME是一种邮件扩展协议,通过对二进制文件进行编码,实现了以普通文本格式邮件传输任意数据的功能