简析IMAP协议

  IMAP(Internet消息访问协议)是与POP3对应的另一种协议,为美国斯坦福大学在1986年开始研发的多重邮箱电子邮件系统。它能够从邮件服务器上获取有关E-mail的信息或直接收取邮件,具有高性能和可扩展性的优点。IMAP为很多客户端电子邮件软件所采纳,如OutlookExpress、NetscapeMessenger等,支持IMAP的服务器端的软件也越来越多,如CriticalPath、Eudora、iPlanet、Sendmail等。

  读者不禁要问,POP3也是接收邮件的协议,现在不是用得很好么,为何还要用IMAP协议呢?

  POP3协议的不足

  的确,POP作为Internet上邮件的第一个离线协议标准,允许用户从服务器上把邮件下载到本地主机上,同时删除保存在邮件服务器上的邮件,从而使用户不必长时间地与邮件服务器连接,很大程度上减少了服务器和网络的整体开销。

  但POP3有其天生的缺陷,即当用户接收电子邮件时,所有的信件都从服务器上清除并下载到客户机。在整个收信过程中,用户无法知道邮件的具体信息,只有照单全收入硬盘后,才能慢慢浏览和删除。这使用户几乎没有对邮件接收的控制决定权。一旦碰上邮箱被轰炸,或有比较大的邮件,用户不能通过分析邮件的内容及发信人地址来决定是否下载或删除,从而造成系统资源的浪费。而IMAP协议不但可以克服POP3的缺陷,而且还提供了更强大的功能。

  对IMAP的解析

  IMAP提供操作的三种模式

  在线方式:邮件保留在Mail服务器端,客户端可以对其进行管理。其使用方式与WebMail相类似。

  离线方式:邮件保留在Mail服务器端,客户端可以对其进行管理。这与POP协议一样。

  分离方式:邮件的一部分在Mail服务器端,一部分在客户端。这与一些成熟的组件包应用(如LotusNotes/Domino)的方式类似。

  IMAP工作原理及特性

  在在线方式下,IMAP允许用户象访问和操纵本地信息一样来访问和操纵邮件服务器上的信息。IMAP软件支持邮件在本地文件夹间和服务器文件夹间的随意拖动,以把本地硬盘上的文件存放到服务器上,或将服务器上的文件取回本地,所有的功能仅需要一次鼠标拖放的操作来实现。

  在用户端可对服务器上的邮箱建立任意层次结构的文件夹,并可灵活地在文件夹间移动邮件,标出那些读过或回复过的邮件,删除对你来说无用的文件。

  IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息,同时还可以享受选择性下载附件的服务。比如一封邮件里含有3个附件,而其中只有1个附件是您需要的,则可以选择只下载这1个附件。你可以充分了解后才作出是否下载,是全部下载还是仅下载一部分等决定,使用户不会因下载垃圾信息而占用宝贵的空间和浪费网费。

  IMAP还提供基于服务器的邮件处理以及共享邮件信箱等功能。邮件(包括已下载邮件的副本)在手动删除前保留在服务器中,这有助于邮件档案的生成和共享。用户可在任何客户机上都可查看服务器上的邮件。这让那些漫游用户感到很方便。

  同时IMAP也象POP3一样,允许用户从服务器上下载信息到他们的电脑上,这意味着他们仍然可以在离线方式下阅读邮件。

  在分离状态下,本地系统上的邮件状态和服务器上的邮件状态,可能和以后再连接时不一样。此时,IMAP的同步机制解决了这个问题。IMAP邮件的客户端软件能够记录用户在本地的操作,当他们连上网络后会把这些操作传送给服务器,服务器也会告诉客户端软件,当用户离线的时候服务器端发生的事件,比如有新邮件到达等,以保持服务器和客户端的同步。

  在IMAP下可定义供其他拥有特别访问权利的用户使用的共享文件夹,而使用POP不能实现共享邮件信箱和共享邮件,仅能通过抄送给或用手工传送邮件。共享信箱将使以使用Internet邮件为主的工作组的工作变得更为容易。

  IMAP还提供许多特别的功能比如建立子目录和通过IMAP访问Usenet。在系统管理员方面,IMAP也提供了一整套可用的特性。

  IMAP的监听端口为143,消息的内在时间和日期是由服务器给出的,而不是在RFC822中信头给出的时间和日期,是消息最后到达的真实日期和时间。如果信息是被IMAP的Copy命令投递的,这应当是源信息的内在时间和日期;如果信息是被IAMP的Append命令投递的,这应当是由Append命令专门描述的时间和日期。

  在IMAP协议中定义了很多的命令,可用telnet来执行,例如Authenticate、List和Close等等,此处不再详述。

  实现IMAP的不足

  在利用服务器磁盘资源方面,IMAP不如POP3。由于使用POP时服务器端的邮件被下载到客户机的同时会删除,因而不占用额外空间用以存放旧的邮件。而IMAP服务器将保持旧的邮件,占用了额外空间,而且需要定期地删除旧邮件。

  同时,由于用户查阅信息标题和决定下载哪些附件,也需要一定时间,因此链接时间也比POP方式长。

  在应用方面,由于IMAP比较复杂,给开发者开发服务器和客户机的软件带来一些难题。对于ISP来说,采用IMAP意味着要花钱购买相关商业软件,同时会付出高额技术支撑费用,因而商用的实现方案还不多。

时间: 2024-08-04 13:13:16

简析IMAP协议的相关文章

网络协议:简析三次握手协议

           一,简析三次握手协议               首先来看我们生活中很常见的一件事:                             在我们网购的时候,常常会跟客服这样聊天:我们向客服询问某件事,客服回答,然后我们断网了...过了一会儿,我们再登陆就收到了客服的回答.              这个交互的过程进行了三次才完成了一次应答,这个过程就类似我们采用TCP/IP协议访问服务器时的三次握手机制:                          第一次握手:

NSCopying简析

NSCopying简析 用到NSCopying的时候并不多,但还是有必要知道最基本的用途,比方说数组的拷贝操作,需要注意的是,数组的拷贝操作并不是执行了 copy 方法,而是需要执行 initWithArray:copyItems: ,这点需要注意. 源码: // // Model.h // NSCopy // // Created by YouXianMing on 15/5/2. // Copyright (c) 2015年 YouXianMing. All rights reserved.

WebGL 中 OpenGL ES 指令与 iOS 中 C 版指令的差异简析

WebGL 中 OpenGL ES 指令与 iOS 中 C 版指令的差异简析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. WebGL 中 OpenGL ES 指令与 iOS 中 C 版指令的

Rails系统中的AJAX开发技术简析(2)

ajax|rails 五. 使用link_to_remote Rails有若干帮助者方法以在你的视图的模板中实现Ajax.一种最简单且很通用的方法就是link_to_remote().让我们考察一个简单的web页面-它实现询问时间并且有一个链接,用户可以点击这个链接来获得当前的时间.该应用程序经由link_to_remote()使用Ajax以检索时间并且显示它于web页面. 我的视图模板(index.rhtml)看起来象: <html><head><title>Ajax

Rails系统中的AJAX开发技术简析(3)

ajax|rails 六. 使用form_remote_tag 这个form_remote_tag()帮助函数与link_to_remote()很相似,除了它也发送一个HTML表单的内容之外.这意味着该行动处理器可以使用用户输入的数据来形成响应.这个实例显示了一个web页面-它有一个列表和一个支持Ajax的表单-该表单能够让用户添加一些选项到该列表中. 我的视图模板(index.rhtml)看上去象: <html><head><title>Ajax List Demo&

简析JAVA的XML编程

xml|编程  个人认为这篇文章通俗易懂,值得推荐.    XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列.Oracle系列.Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 .由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试.         笔者先前也曾发表过相关的

ORA-12913: 错误简析,及处理心得

错误|心得                                    ORA-12913: 错误简析,及处理心得     事先声明,因为工作变动,偶有整一年没有摸过ORACLE了,呵呵    昨天晚上装完ORACLE后,准备创建属于自己的表空间的时候,出现了ORA-12913: 无法创建字典管理的表空前. 当然了,故障排除很简单,找到文档,看一眼就排除了. 但既然在ORACLE9I之后,系统缺省安装时为本地管理表空间(Local Managed Tablespace)LMT,好处多多

ug建模以后有限元分析的步骤简析

  ug建模以后有限元分析的步骤简析.许多正在学习ug这个软件的网友最近都在议论一个问题,那就是:ug怎么进行有限元分析.要解决这个问题,我们需要先来了解一下什么是ug有限元分析.而网上关于ug有限元分析的教程还是挺多的,但是,小编总结了一下规律之后发现,ug有限元分析的步骤基本上离不开8个步骤,下面,就一起来看看今天的ug建模以后有限元分析的步骤简析! ug有限元分析 推荐:ug4.0软件下载 什么是ug有限元分析? 有限元分析(FEA,Finite Element Analysis)利用数学

实例简析SQL嵌套子查询

  实例简析SQL嵌套子查询: 一些初级程序员常常对SQL语法中的子查询,由其对嵌套子查询(子查询中包含一个子查询)的使用比较生疏,本文就此做一个基本讲解,相信新手会有一定收获. 使用子查询的原则 1.一个子查询必须放在圆括号中. 2.将子查询放在比较条件的右边以增加可读性. 子查询不包含 ORDER BY 子句.对一个 SELECT 语句只能用一个 ORDER BY 子句, 并且如果指定了它就必须放在主 SELECT 语句的最后. ORDER BY 子句可以使用,并且在进行 Top-N 分析时