电子邮件与SMTP协议
电子邮件系统
下图为电子邮件系统的主要组成:主要包含用户代理、邮件服务器、简单邮件传输协议(SMTP)三部分。
用户代理允许用户阅读、回复、转发、保存和撰写报文。
邮件服务器形成了电子邮件体系结构的核心,每个接收方在其中的某件服务器上有一个邮箱。
SMTP是因特网电子邮件中主要的应用层协议,用于将报文从发送方邮件服务器发送到接收方邮件服务器。SMTP使用TCP可靠数据传输服务,包含运行在发送方和接收方邮件服务器的客户端和服务器端两部分。
作为一种比HTTP还要早的协议,SMTP具有某些陈旧的特征,它限制了所有邮件报文体部分只能采用简单的7比特ASCII码表示。
电子邮件的发送过程如下图所示
可以看到,SMTP一般不使用中间邮件服务器发送邮件,尽管两个邮件服务器来自于地球两端。
下图为SMTP客户(C)和SMTP服务器(S)之间交换脚本的例子 客户主机名为crepes.fr 服务器主机名为hamburger.edu一旦创建了TCP连接,就开始了如下过程:
SMTP与HTTP对比
相同点:
- 1.这两个协议都用于从一台主机向另一台主机传送文件:HTTP是从Web服务器向Web客户端传送文件,SMTP从一个邮件服务器向另一个邮件服务器传送文件
- 2.当进行文件传送时,持续的HTTP和SMTP都使用持续连接。
不同点:
- 1.HTTP是一个拉协议,即用户使用HTTP从服务器拉取信息;SMTP是一个推协议,即发送邮件服务器把文件推向接收邮件服务器
- 2.SMTP要求每个报文使用7比特ASCII码格式。如果报文中包含了非7比特ASCII字符则该报文必须按照7比特ASCII码进行编码,而HTTP数据不受限制
- 3.对于一个既包含文本又包含其他媒体类型(图形、视频等)的文档时,HTTP把每个对象封装到他自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中
邮件报文格式和MIME
当一个人给另一个人发送电子邮件时,一个包含环境信息的首部位于报文体前面。这些环境信息包含在一系列首部行中。 每个首部必须含有一个From:首部行和一个To:首部行,一个首部行也许包含一个Subject:首部行和其他可选首部行。在首部之后,紧接着一个空白行,然后示意ASCII格式表示的报文体。
一个典型的报文首部行如下图所示
邮件访问协议
结合之前的例子和上面这幅图可以看到:在整个过程中,SMTP用来将邮件从发送发的用户代理传送到发送方的邮件服务器,然后SMTP将邮件从发送方的邮件服务器传送到接收方的邮件服务器。那么接收方如何通过本地PC获得位于他的某ISP的邮件服务器上的邮件呢?注意不能使用SMTP,因为取报文是一个拉操作,而SMTP是一个推协议。引入特殊的邮件协议解决这个问题,包括:第三版邮局协议(POP3)、因特网邮件访问协议(IMAP)以及HTTP协议
POP3协议
当客户打开了有个到邮件服务器端口110上的TCP连接后POP3就开始了工作:特许、事务处理、更新
特许阶段: 用户代理发送(以明文形式)用户名和口令以鉴别用户
事务处理阶段:用户代理取回报文,同时还可以进行对报文做删除标记、取消报文删除标记以及获取邮件统计信息等
更新阶段:客户发出quit命令后,结束该POP3对话,并且邮件服务器删除那些被标记为删除的报文。
IMAP协议
POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法。IMAP协议则为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令。并且IMAP还为用户提供了在远程文件夹中查询邮件的命令,与POP3不同,IMAP服务器维护了IMAP会话的用户状态信息,例如文件夹的名字以及哪些报文与哪些文件夹相关联。另外,IMAP还具有允许用户代理获取保温组件的命令。例如, 一个用户代理可以只读取一个报文的报文首部,或只是一个多部分MIME报文的一部分。
HTTP协议
如今使用最多的是使用Web浏览器收发电子邮件。整个过程中,发件人发送电子邮件报文时,从发件人的浏览器到邮件服务器使用HTTP协议,收件人电子邮件报文从收件人的邮件服务器到收件人浏览器使用HTTP协议,而发件人服务器和收件人服务器之间发送和接收邮件时仍然使用SMTP协议