6.6 电子邮件
电子邮件是英特网上最早流行的一种应用,并且仍然是当今英特网上最重要、最实用的应用之一。传统的电话通信属于实时通信,存在以下两个缺点,第一,电话通信的主叫和被叫双方必须同时在场。第二,一些不是十分紧迫的电话也常常不必要的打断人们的工作和休息。而电子邮件与邮政系统的寄信相似,发件人将邮件发送到自己使用的邮件服务器,发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱。收件人在方便的时候访问收件人邮件服务器中自己的邮箱获取收到的电子邮件。电子邮件使用方便,传递迅速,而且费用低廉。它不仅可以传送文字信息,而且还可以附上声音和图像。
由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国,电信局的电报业务也因电子邮件的普及而濒临消失。电子邮件系统采用客户服务器方式,其三个主要组成构件是用户代理、邮件服务器以及电子邮件所需的协议。我们来举例说明,假设这是邮件的发送方,这是邮件的接收方。在发送方的计算机中,需要使用用户代理来发送邮件。在接收方的计算机中,同样也需要使用用户代理来接收邮件。
用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件,这是发送方使用的邮件服务器,例如 QQ 邮件服务器,这是接收方使用的邮件服务器,例如谷歌邮件服务器。邮件服务器是电子邮件系统的基础设施,英特网上所有的服务提供商都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。如图所示。
我们可以简单的认为,邮件服务器中有很多邮箱,还有用来缓存待转发邮件的缓存。发送方使用用户代理通过邮件发送协议,例如 s m t p 将邮件发送给发送方邮件服务器,发送方邮件服务器同样通过邮件发送协议将该邮件发送给接收方邮件服务器,接收方在方便的时候使用用户代理通过邮件读取协议,例如 TOP3 从接收方邮件服务器读取邮件。也就是说,电子邮件所签的协议包括邮件发送协议和邮件读取协议两类。
接下来我们更进一步说明上述的邮件发送和接收过程。发送方的用户代理作为 s m t p 客户,与发送方邮件服务器中的 s m t p 服务器进行 t c p 连接,然后基于这条连接使用 s m t p。协议来发送邮件给发送方邮件服务器。发送方邮件服务器中的 SMTP 客户与接收方邮件服务器中的 SMTP 服务器进行 TCP 连接,然后基于这条连接使用 SMTP 协议来发送已收到的待转发邮件给接收方邮件服务器,接收方的用户代理作为 TOP3 客户,与接收方邮件服务器中的 POP3 服务器进行 TCP 连接,然后基于这条连接使用 POP3 协议从接收方邮件服务器读取邮件。可以看到这是邮件发送协议的使用范围,包含发送方用户代理到发送方邮件服务器以及发送方邮件服务器到接收方邮件服务器这两部分。NP,这是邮件读取协议的使用范围,只有接收方用户代理到接收方邮件服务器这一部分。
接下来我们介绍属于邮件发送协议的简单邮件传送协议。 SMTP 的基本工作原理,我们以发送方邮件服务器使用 SMTP 协议给接收方邮件服务器发送待转发的邮件。为例,发送方邮件服务器周期性的扫描邮件缓存,如果发现有待转发的邮件,则发送方邮件服务器中的 SMTP 客户会与接收方邮件服务器中的 s m t。p。服务器进行 t c p。连接,端口号为25。之后 s m t p。客户就可以基于这条 t c p。连接给 s m t p。服务器发送 s m t p。命令,共 14 条。
s m t p。
服务器也会给 s m t p。客户发送相应的应答,共 21 种。
s m t p。
客户与服务器之间通过命令与应答的交互方式,最终实现 s m t p。客户发送邮件给 s m t p。服务器。接下来我们就要简单介绍一下该过程。当 TCP 连接建立成功后, SMTP 服务器会主动推送服务,就续应答给 SMTP 客户,应答代码220,后面可能更有描述信息,例如这是网易邮件服务器给出的描述信息。
s m t p。
客户收到该应答后,向服务器表明身份,告知自己 s m t p。服务器的域名,具体命令为Halo,其后为命令参数。
s m t p。
服务器若认为身份有效,则发回应答代码250,否则发回其他代码。例如 421 表示服务不可用。 s m t p 客户收到该应答后,使用命令 mail from 来告诉服务器邮件来自何方。
s m t p。
服务器若认为合理,则发回应答,代码250,否则发回其他错误代码 s m t p。客户收到该应答后,使用命令 r c p t two 来告诉服务器邮件去往何方,也就是收件人邮箱。
s m t p。
服务器中如果有该收件人邮箱,则发回应答,代码250,否则发回其他错误代码 s m t p。客户收到该应答后,使用 data 命令来告诉服务器自己准备发送邮件内容了。
s m t p。
服务器如果准备好接收发回应答,代码354,否则发回其他错误代码 s m t p。客户收到该应答后,就向服务器发送邮件内容, s m t p。客户发送完邮件内容后,还要发送结束服。
s m t p。
服务器若收件成功,则发回应答代码250,否则发回其他错误代码。
s m t p。
客户收到该应答后,使用命令 quit 向服务器请求断开连接。
s m t p。
服务器发回应答代码221,表示接受请求并主动断开连接。需要说明的是,为了简单起见,我们省略了可能需要的认证过程,还省略了应答代码后面一般都跟随的简单描述信息。不同的 s m t p。服务器给出的相同应答代码,其后面跟随的描述信息可能不同。接下来我们介绍电子邮件的信息格式,并不是由 s m t p 协议定义的,而是在 f c 822 文档中单独定义。该文档已在 2008 年更新为 RFC 5322。一个电子邮件有信封和内容两部分,而内容又由首部和主体两部分构成。例如,这是电子邮件的信封,这是电子邮件的内容,它有首部和主体两部分构成。首部和主体的信息都需要由用户来填写。手部中包含有一些关键字,后面加上冒号。例如,关键字from,后面填入发件人的电子邮件地址,一般由邮件系统自动填入关键字to,后面填入一个或多个收件人的电子邮件关键字 c c,后面填入一个或多个收件人以外的抄送人的电子邮件地址。抄送人收到邮件号可看可不看,邮件可回可不回。
邮件关键字 subject 后面填入邮件的主题,它反映了邮件的主要内容。很显然,最重要的关键字是 to 和subject,他们往往是必填选项。用户写好手部后,邮件系统将自动的将信封所需的信息提取出来并写在信封上,所以用户不需要填写电子邮件信封上的信息。在填写完首部各关键字的内容后,用户还需要撰写邮件的主体部分,这才是用户想传递给收件人的核心信息。
s m t p 协议只能传送阿斯克马文本数据,不能传送可执行文件或其他的二进制对象。也就是说, s m t p 不能传送带有图片、音频或视频数据的多媒体邮件,并且许多其他非英语国家的文字,例如中文、俄文,甚至带有重音符号的法文或德文也无法用 s m t p。传送。为解决 s m t p。传送非阿斯卡马文本的问题,提出了多用途。英特网邮件扩展m,如图所示。 s m t p 协议只能传送阿斯卡马文本数据,这是电子邮件的收发双方。假设发送方发送到电子邮件中包含有非阿斯克玛数据,则不能直接使用 SMTP 进行传送,需要通过 MAM 进行转换,将非阿斯格玛数据转换为阿斯格玛数据,然后就可以使用 SMTP 进行传送了。接收方也要使用 man 对接收到的阿斯格玛数据进行逆转换,这样就可以得到包含有非阿斯格玛数据的电子邮件。为了实现这种转换, man 增加了 5 个新的邮件首部字段。这些字段提供了有关邮件主体的信息,定义了许多邮件内容的格式。对多媒体电子邮件的表示方法进行了标准化,定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
实际上, man 不仅仅用于SMTP,也用于后来的同样面向阿克斯马字符的超文本传送协议HTTP。到目前为止,我们已经介绍完了涉及邮件发送的相关内容,接下来我们介绍涉及邮件读取的相关内容。常用的邮件读取协议有以下两个,一个是邮局协议,POP, POP3 是其第三个版本,是英特网正式标准。另一个是英特网邮件访问协议, i m a p 4 是其第四个版本,目前还只是英特网建议标准。
TOP3 是非常简单、功能有限的邮件读取协议,用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户,计算机不允许用户在邮件服务器上管理自己的邮件。 m a p 4 是功能比 TOP3 强大的邮件读取协议,用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样。因此 m a p 是一个联机协议。 POP3 和 map 四都采用基于 TCP 连接的客户服务器方式。 TOP3 使用熟知端口 110 m a p 4 使用熟知端口 143 有关 TOP3 协议和 MAP4 协议的具体内容,有兴趣的同学可自行查阅相关资料,我们就不再深入介绍了。实际上,本节课涵盖了电子邮件系统涉及到的各方面基本内容,对于了解电子邮件系统的基本工作原理来说已经足够了。如果同学们将来要进行电子邮件系统相关程序设计,例如编写一个电子邮件客户端软件,则还需要对相关协议的 FC 文档进行深入阅读。现在越来越多的用户使用基于万维网的电子邮件,通过浏览器登录邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。这种工作方式与 m a p 很类似,不同的是,用户计算机无需安装专门的用户代理程序,也就是电子邮件客户端软件,只需要使用通用的万维网浏览器即可。
邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。我们来举例说明基于万维网的电子邮件应用。假设用户 a 和 b 都使用网易邮件服务器,这是用户 a 的电子邮件地址,这是用户 b 的电子邮件地址。用户 a 要给用户 b 发送邮件。用户 a 使用浏览器登录邮件服务器网站,撰写并发送邮件给用户b,用户 b 也使用浏览器登录邮件服务器网站读取收到的邮件。用户 a 和 b 在发送和接收邮件时,与服务器之间使用的都是 HTTP 协议,而不需要使用我们之前介绍过的 SMTP 和 TOP3 协议。 HTTP 协议是超文本传送协议,我们将在后续课程中介绍。
再来看另一种情况,假设用户 a 使用网易邮件服务器,这是他的电子邮件地址。用户 c 使用谷歌邮件服务器,这是他的电子邮件地址。用户 a 要给用户 c 发送邮件。用户 a 使用浏览器登录自己的邮件服务器网站,撰写并发送邮件给用户 c 使用的是 HTTP 协议。用户 a 的邮件服务器使用 s m t p 将邮件发送给用户 c 的邮件服务器,用户 c 也使用浏览器登录自己的邮件服务器网站读取,收到的邮件使用的也是 h t p 协议。
最后我们来做几个相关的练习题,这是计算机专业考研全国统考计算机网络部分 2012 年的题40,请大家暂停播放视频思考一下,给出你的答案。答案是选项d,大家都选对了吗?我们来一起分析一下。题目所给的 4 个选项中,只出现了两种协议,一种是用于邮件发送的简单邮件传送协议SMTP,另一种是用于邮件读取的邮局协议。 TOP3 阶段 1 是用户 1 的用户代理程序向用户 1 的邮件服务器发送邮件,应该使用 SMTP 协议。阶段二是用户 1 的邮件服务器给用户 2 的邮件服务器发送邮件,也应该使用 SMTP 协议。阶段三是用户 2 的用户代理程序从用户 2 的邮件服务器读取邮件,应该使用 POP3 协议。
再来看 2013 年的题40,请大家暂停播放视频思考一下,给出你的答案。答案是选项a,大家都选对了吗?我们来一起分析一下。如图所示,这是我们之前介绍过的 s m t p。协议,只支持传送阿斯格玛文本数据,如果电子邮件中包含有非阿斯格玛数据,需要经过慢转换变成阿斯克马数据后,才能使用 s m t p。协议进行传输。因此叙述一正确。再来看我们之前介绍过的这幅图,邮件服务器之间发送邮件采用的是 s m t p。协议,因此叙述二正确。用户代理给邮件服务器发送邮件也使用 s m t p。协议,因此叙述 3 也正确。用户代理从邮件服务器读取邮件时使用的是 POP3 协议,还可以使用功能更强的 map 协议,因此序数 4 错误。再来看 2018 年的题40,请大家暂停播放视频,思考一下,给出你的答案。答案是选项d,相信大家都能选对,我们就不再赘述了。本节课到这里就结束了,我们将本节课的内容小结如下,同学们,我们下节课再见。