Mail Access Protocols: POP3, IMAP gaunthan Posted on Feb 6 2017 ? Application Layer ? ? Computer Networking ? ## 概述 我们知道SMTP是一个推协议,能够把邮件从一个主机发送到另一个主机。但是由于用户的主机不可能24小时7天连续开着,所以收取邮件只能使用“拉(pull)”方式。这意味着我们需要一个新的邮件协议,用于访问邮件。 目前有一些流行的邮件访问协议: - POP3(Post Office Protocol——Version 3, 第三版邮局协议) - IMAP(Internet Mail Access Protocol, 因特网邮件访问协议) - HTTP[^Web基础知识] [^Web基础知识]: [Web基础知识](http://gaunthan.leanote.com/post/Web%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86) 如POP3这样的邮件访问协议用来将邮件从接收方的邮件服务器传送到接收方的用户代理。 ## POP3 POP3是一个极为简单的邮件访问协议,由RFC 1939定义。当用户代理打开一个到邮件服务器端口`110`的TCP连接后,POP3就开始工作了,如:  ### 工作阶段 POP3按照三个阶段进行工作: 1. 认证阶段:用户代理发送(以明文形式)用户名和口令以鉴别用户。 2. 事务处理阶段:用户代理取回报文;同时还可以对报文做删除标记、或取消报文删除标记,以及获取邮件的统计信息。 3. 更新阶段:出现在客户发送了`quit`命令后,目的是结束POP3会话;这时,该邮件服务器删除那些被标记为删除的报文。 #### 认证阶段 认证阶段有两个主要的命令:`user <user_name>`和`pass <password>`,如:  #### 事务阶段 在POP3的事物处理过程中,用户代理发出一些命令,服务器对每个命令作出回答。回答可能有两种: - `+OK`(有时后面还跟有服务器到客户的数据):被服务器用来指示前面的命令是正常的。 - `-ERR`:被服务器用来指示前面的命令出现了某些差错。 ### 事务处理过程 使用POP3的用户代理通常被用户配置为“下载并删除”或者“下载并保留”方式。POP3用户代理发出的命令序列取决于用户代理程序被配置为这两种工作方式的哪一种。 #### 下载并删除方式 这种方式下,用户代理发出`list`、`retr`和`dele`命令。用户代理首先请求邮件服务器列出所有存储的报文的长度,接着用户代理从邮件服务器取回并删除每封邮件。在处理`quit`命令后,POP3服务器进入更新阶段,删除已标记的邮件。 注意在认证阶段之后,用户代理仅能使用四个命令:`list`、`retr`、`dele`和`quit`命令。 #### 下载并保留方式 使用下载并删除方式存在的问题是,邮件接收方可能是移动的,他可能希望从多个不同的机器访问他的邮件报文。因此在这种情况下应该使用“下载并保留”方式。 ## IMAP POP3没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法,这使得用户无法在远程服务器上组织层次文件夹。为了解决POP3存在的一些局限,由RFC 3501定义的IMAP应运而生。 IMAP服务器把每个报文与一个文件夹联系起来。当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联。之后收件人可以把邮件移动到一个新的、由用户创建的文件夹中,阅读、删除邮件等。IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令。同时还为用户提供了在远程文件夹中查询邮件的命令,可以按指定条件查询。 注意,与POP3不同,IMAP服务器维护了IMAP会话的用户状态信息,例如,文件夹的名字以及哪些报文与哪些文件夹相关联。 IMAP的另一个重要特性是它具有允许用户代理获取报文组件的命令。例如,一个用户代理可以只读取一个报文的报文首部,或只是一个MIME报文的一部分。当用户代理和其邮件服务器之间使用低带宽连接或流量计费网络时,这种特性非常有用。 ## 基于Web的电子邮件 时至今日,越来越多的用户使用Web浏览器收发电子邮件。使用这种方式,用户代理就是浏览器,用户和他的远程邮箱之间的通信都是通过HTTP进行的。然而,邮件服务器相互之间发送邮件时,还是以SMTP进行的。 ## References - JamesF.Kurose, KeithW.Ross, 库罗斯,等. 计算机网络:自顶向下方法[M]. 高等教育出版社, 2009. - 谢希仁. 计算机网络.第6版[M]. 电子工业出版社, 2013. 赏 Wechat Pay Alipay 状态模式 组合模式