首页 理论教育电子邮件系统在下一代计算机网络技术中的应用

电子邮件系统在下一代计算机网络技术中的应用

【摘要】:Internet电子邮件系统具有如图2.21所示的3个主要组成部分:用户代理、邮件服务器和电子邮件协议。电子邮件服务器是邮件系统的核心部分,主要功能是发送和接收电子邮件。

2.6.2.1 概述

电子邮件(Email)是Internet上使用得最多的和最受用户欢迎的一种应用。电子邮件可以包含文字、图像、声音或其他多媒体信息,通过网络以非常低廉的价格、非常快速的方式,发送给世界上任何一个网络用户。发信人利用电子邮件系统将邮件发送到收信人的邮箱(Mail box)中,收信人可随时进行读取。和普通的邮件系统一样,电子邮件系统也需要“邮局”——邮件服务器。邮件服务器提供了电子邮件系统的基本结构,包括邮件传输、邮件分发、邮件存储等功能,以确保邮件能够发送到Internet中的任意地方。

最初的电子邮件系统的功能很简单,邮件无标准的内部结构格式,计算机很难对邮件进行处理。经过人们的努力,在1982年制定出ARPAnet上的电子邮件标准:简单邮件传送协议SMTP(Simple Mail Transfer Protocol)[RFC 821]和Internet文本报文格式[RFC 822],它们已成为Internet事实上的标准。由于SMTP只能传送可打印的ASCII码邮件,因此在1993年又制定了多用途Internet邮件扩展,即MIME(Multipurpose Internet Mail Extensions)标准。MIME在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),因此在MIME邮件中可同时传送多种类型的数据。

2.6.2.2 电子邮件系统的工作原理

电子邮件系统采用客户/服务器的工作模式,通过存储转发的方式传送电子邮件。

Internet电子邮件系统具有如图2.21所示的3个主要组成部分:用户代理(User Agent)、邮件服务器和电子邮件协议(如SMTP和POP3等)。

图2.21 电子邮件系统的组成图

用户代理是一个在用户本地计算机上运行的程序,允许用户能够通过一个友好的接口(目前主要图形用户界面)撰写、接收、阅读、回复、转发和保存电子邮件。用户代理通过电子邮件协议与电子邮件服务器通信,实现电子邮件的发送和接收功能。

电子邮件服务器是邮件系统的核心部分,主要功能是发送和接收电子邮件。电子邮件服务器为每个用户都开辟出一个用于保存电子邮件的存储空间,称为电子邮箱,每个邮箱通过一个唯一的电子邮件地址进行标识。发信人首先利用用户代理将电子邮件提交给自己所在的邮件服务器,然后发信方的邮件服务器将邮件传送给收信人邮箱所在的邮件服务器,并保存在收信人的邮箱中。收信人通过访问他自己的邮箱来接收电子邮件。

电子邮件由信封和内容两部分组成。电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在从自己的邮箱中读取邮件时才能见到邮件的内容。

在邮件的信封上,最重要的就是收信人的地址。Internet电子邮件系统规定电子邮件地址采用如下的格式

用户名@用户邮箱所在服务器的域名

用户名是由用户自己定义的字符串标识。需要注意,用户名在邮箱所在的服务器中必须是唯一的。由于邮件服务器的域名在Internet上是唯一的,而每一个用户名在该服务器中也是唯一的,因此在Internet上的每一个电子邮件地址都是唯一的。这就保证了电子邮件能够在整个Internet范围内的使用。

应注意到,在传送电子邮件时,邮件传输程序只使用电子邮件地址中的后一部分,即目的服务器的域名。只有在邮件到达目的服务器后,才根据邮件地址前一部分(即收信人用户名)将邮件保存在收信人的邮箱内。

Internet上,用户代理和邮件服务器之间、邮件服务器和邮件服务器之间需要使用特定的电子邮件协议来传输电子邮件。电子邮件的发送和接收过程中需要遵循的基本协议有如下几点:

(1)简单邮件传输协议SMTP,用于主机和主机之间传输电子邮件。

(2)邮局协议POP3,用于用户访问和管理服务器上的电子邮箱。

(3)多用途Internet邮件扩展协议MIME,是一种编码标准,突破了SMTP协议只能传送文本数据的限制,可以对图像、音频、视频等各种类型数据进行编码,使它们作为附件传送。

2.6.2.3 简单邮件传送协议SMTP

SMTP是Internet电子邮件应用的核心,RFC 2821给出了它的定义。

SMTP所规定的就是在两个相互通信的SMTP进程之间应如何交换信息,而没有规定发信人应如何将邮件提交给SMTP,以及SMTP应如何将邮件投递给收信人。至于邮件内部的格式、邮件的存储等,SMTP也都未做出规定。

SMTP使用客户/服务器模式,负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。客户机和服务器之间通过一系列标准的SMTP命令交换信息。首先,SMTP客户机建立一个与SMTP服务器25号端口的TCP连接,然后与服务器执行应用层的握手,交换必要信息,如指明发送方邮件地址和接收方邮件地址等。接下来客户机发送邮件报文,SMTP利用TCP提供的可靠数据传输将邮件传送到接收服务器。如果客户机有多封邮件需要发送到该服务器,可以在同一条TCP连接上进行。最后,客户机关闭与服务器的连接。

SMTP规定了14条命令和21种应答信息。每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上简单的文字说明。下面通过一个实例说明SMTP通信的3个阶段及主要命令和应答信息。

注意以下通信过程中,“C:”后表示客户端命令,“S:”后表示服务器的响应。

1.连接建立

发信人先将要发送的邮件送到邮件缓存区。SMTP客户每隔一定时间(如30min)对邮件缓存区扫描一次。如发现有邮件,就使用SMTP的熟知端口号(25)与目的主机的SMTP服务器建立TCP连接。在连接建立后SMTP服务器要发出“220Service ready”的响应信息。然后,SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。SMTP服务器若有能力接收邮件,则回答:“250 OK”,表示已准备好接收。若SMTP服务器不可用,则回答“421 Service not available”。

2.邮件传送

邮件的传送从MAIL命令开始。MAIL命令后面有发信人的地址:

若SMTP服务器已准备好接收邮件,则回答“250 OK”。否则,返回一个代码,指出原因,如:451(处理时出错),452(存储空间不够),500(命令无法识别)等。

MAIL命令之后客户端发送一个或多个RCPT命令(取决于收信人的个数)。格式为

每发送一个命令,都应当有相应的信息从SMTP服务器返回,如:“250 OK”表示指明的邮箱在接收端的系统中;或者“550NOsuchuserhere”,表示此邮箱不存在。

随后客户端发送DATA命令,表示要开始传送邮件的内容了。SMTP服务器返回信息“354 Start mail input;end with<CRLF>·<CRLF>”(<CRLF>指回车换行符),表示客户端可以传送邮件内容了;若服务器不能接收邮件,则返回421(服务器不可用)、500(命令无法识别)等。接着SMTP客户就发送邮件的内容(邮件内容应遵循电子邮件的报文格式,我们将在下一节讨论)。发送完毕后,再发送<CRLF>·<CRLF>(两个回车换行中间用一个点隔开)表示邮件内容结束。若SMTP服务器正确接收了邮件,则返回信息“250 OK”;否则返回差错代码。

3.连接释放

邮件发送完毕后,SMTP客户应发送QUIT命令。SMTP服务器返回信息“221(服务关闭)”,表示同意释放TCP连接,邮件传送的全部过程结束。(www.chuimin.cn)

2.6.2.4 电子邮件的报文格式

客户端在DATA命令后发送的电子邮件报文分为邮件首部和邮件体两大部分。邮件首部的格式应遵循[RFC 822]的规定,邮件体部分则根据用户填写的邮件正文构造。

邮件首部包括一些关键字,其中最重要的关键字是To和Subject。

“To:”后面填入一个或多个收信人的电子邮件地址。在电子邮件用户代理软件中,用户通过地址簿选择收信人名字后,代理软件就会将收信人地址自动填入到报文中的“To:”关键字后。

“Subject:”是邮件的主题,它反映了邮件的主要内容。主题便于用户查找邮件。

邮件首部还有一个关键字是抄送“Cc:”,表示除收信人外还应给某人发送一个邮件副本。

有些邮件系统还允许用户使用关键字“Bcc:”来实现密件抄送,使发信人能将邮件的副本在收信人不知晓的情况下同时也发送给其他人,因此Bcc又称为暗送。

首部关键字还有“From”和“Date”,表示发信人的电子邮件地址和发信日期。这两项一般都由邮件系统自动填入。

另一个关键字是“Reply-To”,即对方回信时应使用的地址。这个地址可以与发信人发信时所用的地址不同。

因为SMTP只适合于发送普通ASCII文件,为发送非ASCII文本的内容,必须将数据转换为7位ASCII编码格式。因此,需要在邮件报文中使用附加的首部行,指明格式转换的方法。这些首部行定义在[RFC 2045]和[RFC 2046]中,MIME是对[RFC 822]的扩展。

在SMTP中支持多媒体的两个关键MIME首部是:

Content-Transfer—Encoding:内容传送编码,指明在传送时邮件的主体是如何编码的。

Content-Type:内容类型,说明邮件的性质。

收信方的用户代理程序可以根据这些内容对邮件报文采取适当的处理方法。

一种是最简单的内容传送编码是7位或8位ASCII码,每行不能超过1000个字符。另一种编码称为quoted-printable,这种编码方法可用于对邮件中包含的非英文的文本,如汉字,进行编码。

对于任意的二进制文件,可以采用base64编码。

MIME标准规定Content-Type后说明的内容类型必须含有两个标识符,即内容类型和子类型,中间用“/”分开。表2.8中列出了7种基本内容类型和15种子类型。

表2.8 MIME标准中的内容类型

下面显示了一封MIME邮件的内容,它包含一段简单的文本和含有非文本信息的图片附件,附件的内容格式为jpeg图像类型,内容传送编码方式为base64编码。

From:jsjxy@btbu.edu.cn

To:xinbo@ustb.edu.cn

MIME—Version:1.0

Content-Type:multipart/mixed;boundary=qwertyuiop

--qwertyuiop

你要的图片在此邮件中,收到后请回信。

--qwertyuiop

Content-Type:image/jpeg

Content-Transfer-Encoding:base64

…(图像的编码数据)…

--qwertyuiop--

收信方的用户代理在收到邮件后,根据Content-Transfer-Encoding首部行的指示采用base64解码将报文主体内容还原为原始的非ASCII格式,并且根据Content-Type首部行的指示为报文启动一个Jpeg图像的解压缩程序。

2.6.2.5 邮件访问协议

SMTP协议是一个推送协议,发信人的用户代理用SMTP将邮件报文推送给他的邮件服务器,接着他的邮件服务器再用SMTP将邮件推送给收信人的邮件服务器,然后邮件被保存在收信人的邮箱中。这时,收信人的用户代理不能再使用SMTP协议收取邮件,因为收邮件是一个拉取(Pull)操作,而SMTP却是一个推送(Push)操作。于是人们设计了邮件访问协议来解决这个问题,用户代理可以使用这样的协议将邮件从服务器拉取到自己的本地PC机上。目前,邮件访问协议主要有:第三版的邮局协议(Post Office Protocol Version 3,简称POP3),Internet邮件访问协议(Internet Mail Access Protocol,简称IMAP)和HTTP。

邮局协议POP最初公布于1984年[RFC 918]。现在普遍采用的是它的第三个版本POP3[RFC 1460],它在1993年已成为Internet的标准。

POP也使用客户/服务器的工作模式。在用户邮箱所在邮件服务器运行POP服务器程序,用户计算机中的代理软件运行POP客户程序,与服务器进行通信。首先,POP客户程序建立一个与POP服务器110号端口的TCP连接,然后进入特许阶段,向服务器发送用户名和口令。POP服务器只有在用户身份鉴别成功后才进入事务处理阶段,允许用户对邮箱进行存取等操作。当客户程序发出QUIT命令后,会话结束,邮件服务器删除那些被标记为删除的邮件报文。在POP的工作过程中,客户程序和服务器之间也是通过一系列的命令来交换信息,执行操作的,服务器则通过特定的响应信息来指示操作的结果。

另一种邮件访问协议也获得了广泛的应用,这就是Internet报文存取协议IMAP(Internet Message Access Protocol)。IMAP也是按客户/服务器模式工作,但它与POP有很大的差别。

POP协议帮助用户代理不定期地连接到邮件服务器以便将用户的邮件下载到用户的PC机上。此后,所有对邮件的处理都在用户的计算机上进行。一旦邮件交付给用户的计算机,POP服务器就不再保存这些邮件。

IMAP使用户可以在远程操作用户在服务器中的邮箱,就像在本地操纵一样,是一个联机协议。所有收到的邮件先到达IMAP服务器后,当用户计算机上的IMAP客户程序打开IMAP服务器上的邮箱时,用户可以看到邮件的首部。若用户需要打开某个邮件,则再将该邮件传送到用户的计算机上。在用户未发出删除邮件的命令之前,邮件一直保存在IMAP服务器上的邮箱中。IMAP的缺点是如果用户没有将邮件复制到自己的计算机上,则邮件一直是存放在IMAP服务器上,因此用户需要经常与IMAP服务器建立连接。

今天很多用户使用Web浏览器收发电子邮件,很多网站也都提供基于Web的电子邮件服务。使用这种服务,用户代理就是浏览器,用户和他所在的邮件服务器之间通过HTTP协议进行通信。在这种情况下,用户向他的邮件服务器推送邮件,或者从他的邮件服务器中收取邮件时都是使用HTTP协议,只有在发送邮件服务器和接收邮件服务器之间仍然使用SMTP协议。