IMAP 指令简介篇
今天先来简单的总结一下IMAP指令。
先来扫扫盲神马是IMAP,我觉得wiki的解释是最贴近的,先来看看定义:http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol
IMAP也是斯坦福大学参与制订的,可见这所高校为互联网发展做出了太多贡献。又再次感慨国内的高校真应该多学习学习。
当谈及协议时我一般学习的步骤是这样的:
1.wiki一下定义(主要是应用领域、历史等)
2.看一下是否是标准协议,如果是看一下RFC定义(这也是了解协议的必须步骤)
3.最后看一下标准的实现(比如:IMAP我就抓了一大堆OUTLOOK交互包,分析协议内容)
想必一般童鞋操作邮件时都熟悉了POP3协议吧,先来看看POP3协议的指令集:
USER、PASS、LIST、STAT、UIDL、RETR、TOP、RSET、DELE、NOOP、QUIT、APOP
再来看看IMAP的指令集:
CAPABILITY、NOOP、LOGOUT、STARTTLS、AUTHENTICATE、LOGIN、SELECT、EXAMINE、CREATE、DELETE、RENAME、SUBSCRIBE、UNSUBSCRIBE、LIST、LSUB、STATUS、APPEND、CHECK、CLOSE、EXPUNGE、SEARCH、FETCH、STORE、COPY、UID
看到了IMAP指令比POP3多出很多,当然这也是因为IMAP是总结了POP3协议的不足在此基础上进行优化的协议,复杂繁多也正式能力的表现,IMAP做了很多POP3无法做到的事情,协议也同样导致了服务器与客户端实现的复杂度,和整个业界的认可与推广,还好的就是IMAP已经在各大邮件服务器得到了实现,这里GMAIL功不可没啊。
这篇文章是IMAP指令的简介,还是先来看看指令的功能,方便快速了解。
介绍指令功能前,还要弄清楚IMAP协议的几种状态:
Not Authenticated State: 非认证状态 这个状态是还没有进行鉴权的过程,就是还没有输入用户名与密码进行校验的状态,这种
状态下你不能对自己数据进行操作,例如你想看一下文件夹列表,或是某封邮件等。Authenticated State: 认证状态 这个状态是已经输入了用户名密码并且已经得到服务器验证通过,此状态下才能对你的数据进行操作,这也比较好理解。Selected State: 选择状态 这个状态的前提条件是"认证状态",至于为什么要有这个状态呢,可以理解成是对数据的直接操作,例如:选择一封邮件,将一封邮件设置已读等。
指令简介:指令功能CAPABILITY服务器响应能力描述,此指令个人理解是当前邮件服务器的能力。NOOP与服务器保持连接,可以用来新邮件或者消息状态更新。LOGOUT终端服务器连接STARTTLS与服务器使用TLS进行交互AUTHENTICATE与服务器的认证机制LOGIN鉴权登陆,输入用户名与密码SELECT选择文件夹EXAMINE选择文件夹只读方式CREATE创建一个文件夹DELETE删除一个文件夹RENAME重命名一个文件SUBSCRIBE订阅指定的邮箱地址UNSUBSCRIBE取消订阅LIST返回详细的文件夹列表LSUB返回订阅的邮箱地址列表STATUS请求返回指定邮箱文件夹的状态APPEND追加一个状态,例如可以保存一封新的邮件CHECK检查当前服务器状态(例如:磁盘,内存等)CLOSE永久删除所有消息EXPUNGE永久删除所有消息,与CLOSE不同的是,将返回每个消息标识SEARCH类似linux系统find命令,功能很强大可以按照不同条件搜索邮件FETCH检索与消息相关数据,例如:获取正文STORE改变与消息相关数据,例如:设置邮箱已读、删除状态等COPY拷贝指定的消息UID返回UID列表用于fetch
(本人能力有限,这里只是自己学习总结,如有描述失误处还请谅解!)