互联网消息访问协议( IMAP )是最流行的两种电子邮件检索Internet标准协议之一,另一个是邮局协议( POP ) 。 [1]几乎所有现代的e – mail客户端和邮件服务器支持两种协议从一台服务器传送的电子邮件作为一种手段。
电子邮件协议
互联网消息访问协议( IMAP俗称)是一个应用层的互联网协议,它允许远程邮件服务器的电子邮件客户端来访问电子邮件。当前版本,IMAP第4版修订版1 (的IMAP4rev1 ) ,由RFC 3501定义的。 IMAP服务器通常知名的143端口上侦听。经由SSL的IMAP ( IMAPS ),被分配知名端口号993 。
IMAP支持上线和下线的操作模式。使用IMAP的电子邮件客户端一般假消息在服务器上,直到用户明确地删除它们。这和其他特性允许多个客户端来管理同一个邮箱的IMAP操作。大多数电子邮件客户端支持IMAP除了弹出撷取讯息,然而,较少的电子邮件服务支持IMAP 。 [2] IMAP提供的邮件存储的访问。客户端可以存储的本地副本的消息,但这些都被认为是一个临时缓存。 [3]
传入的电子邮件消息被发送到电子邮件服务器上存储邮件收件人的电子邮件信箱。用户检索信息的电子邮件客户端,使用一些电子邮件检索协议。一些客户端和服务器优先使用特定供应商的专有协议,但大多数支持互联网标准协议, SMTP发送电子邮件和检索电子邮件的POP和IMAP ,允许与其他服务器和客户端的互操作性。例如,微软的Outlook客户端使用专有的协议进行通信与Microsoft Exchange Server的服务器时, IBM的Notes客户机与Domino服务器进行通信,但所有这些产品还支持POP,IMAP和传出SMTP 。支持Internet标准协议,使得许多如飞马Mail或Mozilla的雷鸟电子邮件客户端访问这些服务器,并允许客户端可用于与其他服务器。
[编辑]历史
IMAP由Mark Crispin设计,于1986年作为一个远程邮箱协议,广泛使用的POP ,检索内容的协议的邮箱。 [4]
IMAP以前被称为互联网邮件访问协议,交互邮件访问协议( RFC 1064)和中期邮件访问协议。 [5]
[编辑] IMAP
原来的中期施乐的Lisp的客户机和TOPS- 20服务器实现邮件访问协议。
原临时协议规范或其软件没有副本存在[需要的引证]虽然一些命令和响应类似IMAP2 ,中期协议缺乏命令/响应标记,因此它的语法是不与所有其他版本的IMAP 。
[编辑] IMAP2
中期协议交互邮件访问协议( IMAP2 ) , RFC 1064中定义(在1988年) ,并很快被替换,后来由RFC 1176( 1990)更新。 IMAP2介绍命令/响应标记,是第一个公开发行的版本。
[编辑] IMAP3
IMAP3灭绝,极为罕见的变种IMAP 。 [6 ]于1991年公布为RFC 1203 。它被写专门作为一个反建议, RFC 1176 ,它本身提出修改到IMAP2 。 [7 ] IMAP3共从未被市场接受。 [8] [9] IESG RFC1203 “交互邮件访问协议 – 版本3 ”重新分类一个历史性的协议,于1993年。使用IMAP工作组RFC1176 ( IMAP2 ) ,而不是RFC1203 ( IMAP3 )作为起点。 [10] [ 11]
[编辑] IMAP2bis
随着MIME ,延长IMAP2 ,支持MIME体结构,并添加邮箱管理功能(创建,删除,重命名,上传消息),这是在IMAP2缺席。这个实验修订被称为IMAP2bis的;非草稿形式,其规格也从未发表过。 Internet草案IMAP2bis由IETF IMAP工作组于1993年10月出版。该草案根据于以下较早规格:未发表的IMAP2bis.TXT文件, RFC1176 , RFC1064 ( IMAP2 ) 。 [12 ] IMAP2bis.TXT草案记录了国家扩展IMAP2的1992年12月。 [13]早期版本的松树分布广泛支持与IMAP2bis [6](松4.00及更高版本支持的IMAP4rev1 ) 。
[编辑] IMAP4
IETF在20世纪90年代初形成的IMAP工作组接手负责的IMAP2bis设计的。 IMAP工作组决定重新命名IMAP2bis IMAP4避免混乱与竞争IMAP3建议从另一组,从来没有掉在地上。 [引证需要]扩张的IMAP的缩写也改为Internet消息访问协议
[编辑] POP相比的优势
[编辑]连接和断开连接的操作模式
使用POP时,客户端通常连接到电子邮件服务器简单地说,只要需要下载新邮件。使用IMAP4时,客户经常保持联系,只要用户界面是活动的和下载信息内容的需求。对于有很多或者很大邮件的用户来说,使用IMAP4模式可以导致更快的响应时间。
[编辑]多个客户端同时连接到同一个邮箱
POP协议的要求,当前连接的客户端是唯一的客户端连接到邮箱。相反, IMAP协议明确允许多个客户端同时访问,并提供机制让客户能够感知到邮箱,并发连接,客户端所做的更改。例如,见RFC3501 5.2节具体援引“同时访问同一个邮箱多个代理”为例。
[编辑]访问MIME邮件部分和部分获取。
所有Internet电子邮件通常以MIME格式传输,能让消息有一个树状结构的叶子节点是各种单一内容类型和非叶子节点都是多块类型中的任何一个。 IMAP4协议允许客户端检索的各个MIME部分分开,也无论是单独的部件或整个消息的检索部。这些机制使得用户无需下载附件或流的内容,因为它是被牵强检索的消息的文本部分。
[编辑]消息状态信息
通过使用IMAP4协议中定义的标志,客户可以跟踪消息状态:例如,这条消息是否已读,回答,或删除。这些标志都存储在服务器上,所以在不同的时间不同的客户端访问同一个邮箱可以检测由其他客户端的状态变化。 POP等状态信息存储在服务器上,因此如果单个用户访问邮箱有两种不同的POP客户端(在不同的时间) ,状态信息,如消息是否已不能访问之间的同步,为客户提供任何机制客户端。 IMAP4协议支持系统预定义的标志和客户端定义的关键字。系统标志指示状态信息,如邮件是否被读取。关键字,这是不支持的所有的IMAP服务器,允许给定的消息被一个或多个标签,其含义是给客户端。添加用户创建标签的消息是由一些基于Web的电子邮件服务,如Gmail支持的操作。
[编辑]多个服务器上的邮箱
IMAP4客户端可以创建,重命名,和/或删除邮箱(通常是呈现给用户文件夹)的服务器上,并复制邮件信箱之间。支持多个邮箱还允许服务器提供共享和公共文件夹的访问。 IMAP4访问控制列表(ACL),扩展( RFC 4314 )可用于调节的访问权限。
[编辑]服务器端搜索。
IMAP4提供了一种机制,客户端向服务器搜索满足各种标准的消息。这种机制可避免要求每个邮箱中的邮件客户端下载,以执行这些搜索。
[编辑]内置的扩展机制
由于早期Internet协议的经验, IMAP4定义了一个明确的机制,它可能会延长。已经提出了许多基地协议的扩展,是在共同使用。没有IMAP2bis一种扩展机制,和POP现在有一个由RFC 2449定义。
[编辑]缺点
虽然IMAP补救的POP许多的缺点,这在本质上引入额外的复杂性。这种复杂性(例如,多个客户端同时访问同一个邮箱)补偿的Maildir或后端数据库等服务器端解决办法。
IMAP规范一直被批评为不够严格,并允许的行为,有效地否定它的用处。例如,规范规定,每个消息存储在服务器上有一个“独特的ID ”允许客户端确定的消息,他们已经看到在会话之间。然而,该规范还允许,这些UID ,几乎没有任何限制无效击败他们的目的。 [14]
除非在服务器上的邮件存储和搜索算法是认真落实,一个客户端可能会消耗大量的服务器资源,搜索时,大量的邮箱。
IMAP4客户端需要保持一个TCP / IP连接到IMAP服务器的新邮件到达通知。有些邮件到达通知是通过带内信令,这有助于客户端IMAP协议处理的复杂性。 [15]私人建议,推IMAP ,将延长IMAP来实现推送电子邮件发送整个消息而不是只是一个通知。然而,推IMAP没有被普遍接受和当前IETF的工作已经解决了这个问题,在其他方面(见更多信息柠檬水档案) 。
不像某些专有协议相结合的发送和检索操作,发送消息,从最基层的IMAP客户端需要发送的消息内容两次,一次SMTP交付,第二次到IMAP服务器端的文件夹中保存副本存储在发送邮件文件夹中。这是由一组定义的扩展IETF柠檬水工作组为移动设备: URLAUTH ( RFC 4467 )和链状( RFC 4469)的IMAP和BURL ( RFC 4468 ) SMTP提交补救。 POP服务器不支持服务器端的文件夹,以便客户却没有选择,但在客户机上存储的项目。许多IMAP客户端可以被配置为存储在客户端文件夹,或发送邮件密件抄送自己,然后过滤传入的邮件,而不是直接在一个文件夹中保存副本。除了“三人组”柠檬水,快递发送传出消息复制到一个专用的发件箱文件夹中使用IMAP ,邮件服务器提供了一个非标准的方法。
像POP , IMAP电子邮件的唯一协议。其结果是,不能进行管理的项目,如联系人,约会或任务,或访问,除非它们被封装在电子邮件中使用IMAP 。
参考文献
^ PEGORARO ,罗布( 2004-03-24 ) 。 “互联网供应商应找到自己的方式为IMAP ” 。 “华盛顿邮报” 。 https://www.washingtonpost.com/wp-dyn/articles/A10089-2004Mar20.html 。检索2008-06-25 。
鲻鱼,戴安娜(2000年) 。总经理IMAP 。奥赖利。第25。国际标准书号0 – 596 -00012 -X 。
^例如见梁德基,戴夫Timo Sirainen的。 “ IMAP客户端编码HOWTO ” 。 https://www.dovecot.org/imap-client-coding-howto.html 。
^ IMAP连接 – IMAP状态和历史
^ https://www.iana.org/assignments/service-names
^ AB “ RFC 2061 – IMAP4兼容IMAP2BIS ” 。 IETF 。 1996年。 https://tools.ietf.org/html/rfc2061 。检索2010-08-21 。
^“交互邮件访问协议 – 版本3 ”。 IETF 。 1991年https://tools.ietf.org/html/rfc1203 。检索2010-08-21 。
^ “ IMAP2 IMAP2bis IMAP3 , IMAP4的IMAP4rev1 ( LAN邮件协议) ” 。检索2010-08-21 。
^“ IMAP概述,历史,版本和标准”。 https://www.tcpipguide.com/free/t_IMAPOverviewHistoryVersionsandStandards-3.htm 。检索2010-08-21 。
^ “议定书操作:交互邮件访问协议 – 历史( IETF邮件存档) ”第3版。 1993年。 https://www.ietf.org/mail-archive/web/ietf/current/msg01656.html 。检索2010-08-21 。
^ “ Innosoft和POP / IMAP协议(邮件存档) 。” 1993年。检索2010-08-21 。
^“交互邮件访问协议 – 版本2之二(上网草案) ” 。 IETF 。 1993年。 https://tools.ietf.org/html/draft-ietf-imap-imap2bis-02 。检索2010-08-21 。
^ “ IMAP2BIS的 – 扩展的IMAP2协议(草案) ” 。 1992年。 https://ftp.zcu.cz/pub/network/imap/old/IMAP2bis.TXT 。检索2010-08-21 。
^“ IMAP实施燮, Ruby编写的电子邮件客户端” 。 rubyforge.com 。 https://sup.rubyforge.org/svn/trunk/lib/sup/imap.rb 。检索2011-02-22 。
^“ IMAP IDLE : ”推“电子邮件”的最佳方法。 Isode.com 。 https://www.isode.com/whitepapers/imap-idle.html 。检索2009-07-30 。
[编辑]延伸阅读
海因莱因,P Hartleben ,P (2008) 。 IMAP :书用快递和Cyrus构建邮件服务器。无淀粉按下。 ISBN 1-59327-177-8 。
休斯,L (1998) 。互联网电子邮件协议,标准和实施。艺达出版社。 ISBN 0-89006-939-5 。
约翰逊, K (2000年) 。互联网电子邮件协议:开发者的指南。 Addison-Wesley出版专业。 ISBN 0-201-43288-9 。
洛辛, P (1999 ) 。基本的电子邮件标准: RFC和协议提出了切实可行的。约翰Wiley&Sons出版。 ISBN 0-471-34597-0 。
鲻鱼,K (2000年) 。总经理IMAP 。 O’Reilly Media出版。国际标准书号0 – 596 -00012 -X 。
Rhoton ,J (1999) 。程序员指南Internet邮件:SMTP, POP ,IMAP , LDAP 。爱思唯尔。 ISBN 1-55558-212-5 。
木材,D (1999) 。编程Internet邮件。奥赖利。 ISBN 1-56592-479-7 。
[编辑]外部链接
“ IMAP协议的邮件列表” 。 https://www.imapwiki.org/ImapProtocolList 。
RFC 3501 – IMAP版本4规范的修订版1
RFC 2683 – IMAP的实施意见RFC
RFC 2177 – IMAP4 IDLE命令
阅读和此文章类似的: Imap 全球通用标准协议