3.4.3 简单邮件传输协议(SMTP)

3.4.3 简单邮件传输协议(SMTP)

目前电子邮件(E-mail)是Internet上使用最多、最受用户欢迎的网络应用之一。电子邮件是一种异步通信媒介,不需要收发双方同时在场,可以传输各种格式的信息。SMTP、POP3、IMAP4都是支持电子邮件的相关协议。

1.电子邮件系统构成

电子邮件系统能够向用户提供几项基本功能:撰写电子邮件、将消息由发信人传输到收信人、向发信人报告邮件的状态、显示电子邮件方便收信人阅读以及处理邮件(如阅读信件后丢弃、保存信息)等。除此之外,邮件系统还为用户提供了更多的特性,如提供邮件列表、创建邮箱、抄送等。

电子邮件系统通常由用户代理(UA,User Agent)、消息传输代理(MTA,Message Transfer Agent)以及消息访问代理(MAA,Message Access Agent)组成。

(1)用户代理

用户代理是用户与电子邮件系统的接口,是用户发送和接收电子邮件的操作台和工具。通常这个接口很友好。它为用户提供以下功能。

·发送邮件的撰写和编辑:用户代理为用户提供编辑信件的环境。例如,让用户创建通讯录以便回信时能方便地从来信中提取出对方的地址。

·接收邮件的阅读和处理:接收到的邮件(包括信中的图像和声音)能在收信方显示出来,提供不同方式便于收信人对来信进行处理。

用户代理实际上就是运行在用户PC机中的一个程序。因此用户代理又称为电子邮件客户端软件。例如,Outlook Express和Foxmail等都是很受欢迎的电子邮件用户代理。

(2)消息传输代理

消息传输代理是负责在主机间传送邮件的软件。它采用了客户/服务器模式,MTA客户位于发送邮件的主机上(图3-25中发送邮件的用户主机和发送邮件服务器),用于向远程邮件服务器发送邮件,MTA服务器位于邮件服务器内(图3-25中发送邮件服务器和接收邮件服务器),负责接收邮件,将每个报文存放到队列或相应的用户邮箱中。

图3-25 电子邮件传输投递过程

(3)消息访问代理

消息访问代理是用于访问用户邮箱并处理邮件的软件。它也是以客户/服务器模式工作的。MAA客户位于访问邮件的用户主机上,用于向MAA服务器发送请求,MAA服务器位于接收邮件服务器上,它收到MAA客户的请求后将邮件传输到用户主机上。

2.电子邮件传输投递的过程

Alice向Bob发送电子邮件,图3-25给出了几个重要步骤。通常情况下,Alice和Bob通过LAN或者WAN与各自的邮件服务器进行连接。他们均使用UA编辑邮件。在发送邮件时,通过UA请求MTA客户,与邮件服务器上的MTA服务器建立连接。邮件到达Alice的邮件服务器时,系统将所有邮件存放在邮件缓存队列中等待发送到Bob的邮件服务器。然后Alice邮件服务器上的MTA客户与Bob邮件服务器上的MTA服务器建立TCP连接,把邮件缓存队列中的邮件依次发送出去。Bob邮件服务器接收到邮件后存放到Bob的邮箱中。当Bob希望接收处理邮件时,他的UA通过MAA客户向其邮件服务器的MAA服务器发送邮件访问请求,最终由Bob邮件服务器将邮件传送到接收方。

需要注意的是,Bob在接收邮件时无法直接使用MTA服务器,否则为了能够及时接收可能在任何时候到达的新邮件,他的主机必须一直保持在线。这对于大多数Internet用户而言是不现实的。因此让来信暂时存储在用户的邮件服务器中,当用户方便时就从邮件服务器的用户信箱中读取来信,是一种比较合理的做法。这样,Bob就需要MAA。MTA服务器程序是一种推的模式,客户把邮件“推”给服务器。而在访问邮件时,Bob则需要拉的程序,由MAA客户将邮件从服务器“拉”过来。

用于Internet的电子邮件系统协议可划分为3类,如表3-7所示。

表3-7 用于Internet的电子邮件系统的协议

3.电子邮件的表示

电子邮件由信封和内容两部分组成。在邮件的信封上,最重要的就是收件人的地址。完整的电子邮件地址由两部分组成,第一部分为邮箱名,第二部分为邮箱所在主机的域名,中间用“@”隔开,格式如下:

邮箱名@邮箱所在主机的域名

其中标志收件人邮箱名的字符串在邮箱所在邮件服务器中必须是唯一的。这样就保证了这个电子邮件地址在世界范围内是唯一的。这对保证电子邮件能够在整个Internet范围内的准确交付是十分重要的。

而电子邮件的信息格式目前有RFC2822邮件报文格式和多用途因特网邮件扩展(MIME)两种。其中RFC2822由RFC822发展而来,RFC822也是目前广泛使用的称呼。

(1)RFC2822邮件报文格式

电子邮件信息由ASCII文本组成,包括两个部分。第一部分是一个首部(header),包括有关发送方、接收方、发送日期和内容格式;第二部分是正文(body),包括信息的文本。这两部分中间用一个空行分隔。

在RFC2822文档中只规定了邮件内容中的首部格式,邮件的主体部分则让用户自由撰写。用户写好首部后,邮件系统自动将信封所需的信息提取出来并写在信封上。所以用户不需要填写电子邮件信封上的信息。

每个首部行首先是一个关键字,一个冒号,然后是附加的信息。形式如下:

关键字:信息

关键字告诉电子邮件软件如何翻译该行中剩下的内容。每个首部都必须含有一个“From:信息”和一个“To:信息”,还可以包含一个“Subject:信息”或者其他可选的首部行。表3-8列举了一些常见的关键字及其含义。

表3-8 常见的关键字及其含义

续表

(2)MIME

在RFC2822中描述的报文首部适合于发送普通ASCII文本,不能充分满足多媒体报文或携带有非ASCII文本格式的报文需求,如带有图片、音频和视频的报文。MIME扩展了电子邮件的功能,使其允许在报文中传输非ASCII文本的内容。

MIME规定了如何将二进制文件进行编码,并包含在传统电子邮件报文中,并在接收方解码。编码方式可以由发送方和接收方各自选择。为了规定编码方式,报文的首部应加上额外的行。此外MIME还允许发送方将报文分割成几个部分,每个部分用不同的编码。例如,用户可以使用纯文本的报文,再附加图像、音频等,各自采用各自的编码形式。

支持多媒体的关键MIME首部包括以下内容。

·MIME-Version:声明已使用MIME来创建报文,并指出MIME的版本号。

·Content-Type:指出在主体中如何包含MIME信息。例如,Content/Type:image/jpeg表示报文主体中插入了JPEG图形。

·Content-Transfer-Encoding:提示接收用户代理该报文的编码类型。

通常用户调用UA,在邮件报文主体中插入非ASCII文本内容并发送邮件,此时UA会自动产生一个MIME报文。

4.简单邮件传输协议

简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)是邮件传输使用的标准协议,用于通过Internet传送电子邮件报文。电子邮件的传输是通过MTA实现的,包括MTA客户和MTA服务器。SMTP协议用于将一个报文从MTA客户传送到MTA服务器,例如,通过用户代理向邮件服务器以及发送邮件服务器向接收邮件服务器传输邮件时都会使用SMTP协议。

SMTP采用客户/服务器模式工作。负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。发送邮件时,SMTP客户在25号端口建立一个到SMTP服务器的TCP连接。一旦连接建立,SMTP的客户指明发送方的邮件地址和接收方的邮件地址,并发送报文。SMTP可以利用TCP提供的可靠数据传输无差错地将邮件传递到服务器。该客户如果有另外的报文要发送到该服务器,就在相同的TCP连接上重复这种处理。否则,关闭TCP连接。

SMTP不使用中间的邮件服务器。不管发送方和接收方的邮件服务器相隔有多远,TCP连接总是在发送方和接收方的两个邮件服务器之间直接建立。当接收方邮件服务器出故障而不能工作时,报文会保留在发送方的邮件服务器上并在稍后进行新的尝试,邮件并不会在中间的某个邮件服务器上存留。

5.邮件访问协议

一旦SMTP将邮件报文从发送方的邮件服务器交付给接收方的邮件服务器,该报文就被放入了收件人的邮箱中。接下来需要考虑用户如何访问自己的邮件。

目前,通过用户代理访问邮件主要采用了第3版邮局协议(POP3,Post Office Protocol version 3)、第4版因特网邮件访问协议(IMAP4,Internet Mail Access Protocol version 4)。

访问协议的功能包括提供对用户邮箱的访问、允许用户浏览、下载、删除邮件等。

(1)POP3

POP3用于将邮件从服务器上读取到接收主机上。

POP3使用客户/服务器的工作模式。在收件人主机的用户代理必须运行POP3客户程序,而在其邮件服务器中则运行POP3服务器程序。

当用户代理(客户)打开了一个到邮件服务器(服务器)端口110上的TCP连接后,POP3就开始工作了。POP3的工作过程分为3个阶段。①特许阶段,用户代理发送用户名和口令以鉴别用户。②事务处理阶段,用户代理取回报文。此外,用户代理还可以对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息等。③更新阶段,结束该POP3会话。

(2)IMAP4

有时,用户希望可以在远程服务器上建立层次的文件夹对邮件进行管理,这样能够在不同的地方使用不同的计算机(如办公室的计算机、手机,或笔记本计算机)随时上网阅读和处理自己的邮件。这种情况下,POP3不再适用,而IMAP4则能够提供这些功能。

IMAP4按客户/服务器模式工作。在使用IMAP4时,用户的PC上运行的IMAP4客户程序,与接收方邮件服务器上运行的IMAP4服务器程序建立TCP连接。

IMAP4比POP3具有更多的特色,不过也比POP3复杂得多。IMAP4可以提供创建远程文件夹以及为报文指派文件夹的方法。这样用户可以把邮件移到一个新的、自己创建的文件夹中,阅读邮件、删除邮件等,就像在本地操作一样。IMAP4的另一个重要特性是它具有允许用户代理获取报文组件的命令。例如,受条件的限制(为了节省时间或者受传输速率的限制),用户希望能只读取邮件中一部分,若邮件包含视频,而用户用手机收取邮件,会希望先浏览正文,过后再下载这个很大的附件。

6.基于Web的电子邮件

现在越来越多的用户使用基于Web的电子邮件。用户只要安装并启动Web浏览器,就可以收发电子邮件。

当发件人(如Alice)要发送一封电子邮件报文时,她会登录电子邮件服务器。浏览器显示的Web网页要求用户输入登录ID和密码,服务器用它来识别用户邮箱,然后从相应用户邮箱中提取邮件,并以网页的形式显示邮件内容。此时电子邮件报文从Alice的浏览器发送到她的邮件服务器,使用的不是SMTP而是HTTP。Alice的邮件服务器在与其他的邮件服务器之间发送和接收邮件时,仍然使用SMTP。当收件人(如Bob)想从他的邮箱中读取报文时,电子邮件报文从Bob的邮件服务器发送到他的浏览器,使用的是HTTP而不是POP3或者IMAP4协议。