IMAP命令与分析
https://www.cnblogs.com/crystalray/p/3304688.html
Internet Mail Access Protocol(缩写为IMAP,以前称作交互邮件访问协议(interactive mail access protocol))IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。
具体协议内容可以查阅:http://www.faqs.org/rfcs/rfc3501.html 中文版:http://blog.csdn.net/qqnnhhbb/article/details/6428681
与POP3协议类似,IMAP(Internet消息访问协议)也是提供面向用户的邮件收取服务。常用的版本是IMAP4。IMAP4改进了POP3的不足,用户可以通过浏览信件头来决定是否收取、删除和检索邮件的特定部分,还可以在服务器上创建或更改文件夹或邮箱,它除了支持POP3协议的脱机操作模式外,还支持联机操作和断连接操作。它为用户提供了有选择的从邮件服务器接收邮件的功能、基于服务器的信息处理功能和共享信箱功能。IMAP4的脱机模式不同于POP3,它不会自动删除在邮件服务器上已取出的邮件,其联机模式和断连接模式也是将邮件服务器作为“远程文件服务器”进行访问,更加灵活方便。
支持连接和断开两种操作模式。当使用POP3时,客户端只会连接在服务器上一段的时间,直到它下载完所有新信息,客户端即断开连接。在IMAP中,只要用户界面是活动的和下载信息内容是需要的,客户端就会一直连接在服务器上。对于有很多或者很大邮件的用户来说,使用IMAP4模式可以获得更快的响应时间。支持多个客户同时连接到一个邮箱。POP3协议假定邮箱当前的连接是唯一的连接。相反,IMAP4协议允许多个用户同时访问邮箱同时提供一种机制让客户能够感知其他当前连接到这个邮箱的用户所做的操作。支持访问消息中的MIME部分和部分获取。几乎所有的Internet邮件都是以MIME格式传输的。MIME允许消息包含一个树型结构,这个树型结构的叶子节点都是单一内容类型而非叶子节点都是多块类型的组合。IMAP4协议允许客户端获取任何独立的MIME部分和获取信息的一部分或者全部。这些机制使得用户无需下载附件就可以浏览消息内容或者在获取内容的同时浏览。支持在服务器保留消息状态信息。通过使用在IMAP4协议中定义的标志客户端可以跟踪消息状态,例如邮件是否被读取,回复,或者删除。这些标识存储在服务器,所以多个客户在不同时间访问一个邮箱可以感知其他用户所做的操作。支持在服务器上访问多个邮箱。IMAP4客户端可以在服务器上创建,重命名,或删除邮箱(通常以文件夹形式显现给用户)。支持多个邮箱还允许服务器提供对于共享和公共文件夹的访问。支持服务器端搜索。IMAP4提供了一种机制给客户使客户可以要求服务器搜索符合多个标准的信息。在这种机制下客户端就无需下载邮箱中所有信息来完成这些搜索。支持一个定义良好的扩展机制。吸取早期Internet协议的经验,IMAP的扩展定义了一个明确的机制。很多对于原始协议的扩展已被提议并广泛使用。无论使用POP3还是IMAP4来获取消息,客户端使用SMTP协议来发送。邮件客户可能是POP客户端或者IMAP客户端,但都会使用SMTP。
IMAP的状态图如下:
这里使用telnet命令来对126邮箱进行操作参数分别是邮件服务器地址和端口(143)如果是SSL的话连993
capability命令请求服务器支持的功能列表,从这返回可见126邮箱不支持AUTHENTICATE功能的。
noop命令什么也不做,用来向服务器发送自动命令,防止因长时间处于不活动状态而导致连接中断
使用STARTTLS命令可以加密传输邮件内容,因为我使用的是telnet不支持加密传输,所以使用明文登录。
不过在IMAP协议中要求“
”
登录成功后状态变为authenticated。
select 命令选择一个邮箱,如果成功则状态变为selected。此时是可对邮箱进行读写操作的。
examine命令和select命令效果一样,返回的内容也类似,区别在于examine是只读的。
create命令创建文件夹
rename命令能够重命名
delete 删除指定文件夹和其所有邮件
subscribe 指定邮箱为活动的
可以通过lsub查看活动邮箱
unsubscribe取消订阅活动邮箱
list命令列出符合条件的邮箱,第一个参数是基址,第二个是邮箱名,可使用通配符。
status显示指定邮箱的指定信息,该命令不会改变当前邮箱的选中状态。
append命令添加一个新邮件到指定文件夹中
check命令用来在邮箱设置一个检查点。没有参数。就是IMAP中的sync命令。任何未完成的操作,例如从服务器内存向硬盘写数据,都将会被做完以保持邮箱的一致性状态。该命令确保乃村中的磁盘缓冲数据都被写到了磁盘上。
close命令取消当前选中状态,变回authenticated
expunge命令删除所有flags中有deleted标记的邮件
search命令可以根据搜索条件在活动状态的邮箱中搜索邮件,并返回邮件号。搜索的关键字有如下几种:
搜索标题或者正文中包含test字符串的邮件
FETCH 命令用于读取邮件的文本信息,且仅用于显示的目的。包含两个参数,messageset:表示希望读取的邮件号列表,IAMP服务器邮箱中的每个邮件都有 一个唯一的ID标识,(邮件号列表参数可以是一个邮件号,也可以是由逗号分隔的多个邮件号,或者由冒号间隔的一个范围),IMAP服务器返回邮件号列表中 全部邮件的指定数据项内容。
数据名参数确定能够被独立返回的邮件的一部分,下面我们看看各参数返回的邮件信息:
ALL:只返回按照一定格式的邮件摘要,包括邮件标志、RFC822.SIZE、自身的时间和信封信息。IMAP客户机能够将标准邮件解析成这些信息并显示出来。
BODY:只返回邮件体文本格式和大小的摘要信息。IMAP客户机可以识别这些细腻,并向用户显示详细的关于邮件的信息。其实是一些非扩展的BODYSTRUCTURE的信息。
FAST:只返回邮件的一些摘要,包括邮件标志、RFC822.SIZE、和自身的时间。
FULL:同样的还是一些摘要信息,包括邮件标志、RFC822.SIZE、自身的时间和BODYSTRUCTURE的信息。
BODYSTRUCTUR: 是邮件的[MIME-IMB]的体结构。这是服务器通过解析[RFC-2822]头中的[MIME-IMB]各字段和[MIME-IMB]头信息得出来 的。包括的内容有:邮件正文的类型、字符集、编码方式等和各附件的类型、字符集、编码方式、文件名称等等。
ENVELOPE:信息的信封结构。是服务器通过解析[RFC-2822]头中的[MIME-IMB]各字段得出来的,默认各字段都是需要的。主要包括:自身的时间、附件数、收件人、发件人等。
FLAGS:此邮件的标志。
INTERNALDATE:自身的时间。
RFC822.SIZE:邮件的[RFC-2822]大小
RFC822.HEADER:在功能上等同于BODY.PEEK[HEADER],
RFC822:功能上等同于BODY[]。
RFC822.TEXT:功能上等同于BODY[TEXT]
UID:返回邮件的UID号,UID号是唯一标识邮件的一个号码。
BODY[section] <<partial>>:返回邮件的中的某一指定部分,返回的部分用section来表示,section部分包含的信息通常是 代表某一部分的一个数字或者是下面的某一个部分:HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, and TEXT。如果section部分是空的话,那就代表返回全部的信息,包括头信息。
BODY[HEADER]返回完整的文件头信息。
BODY[HEADER.FIELDS ()]:在小括号里面可以指定返回的特定字段。
BODY[HEADER.FIELDS.NOT ()]:在小括号里面可以指定不需要返回的特定字段。
BODY[MIME]:返回邮件的[MIME-IMB]的头信息,在正常情况下跟BODY[HEADER]没有区别。
BODY[TEXT]:返回整个邮件体,这里的邮件体并不包括邮件头。
现在我们遇到了一个问题,如果我们要单独提取邮件的附件怎么办?
通过以上的命令我们是无法做到的,但是我们别忘了在section部分还有其他的方式可以来表示我们要提取的邮件的部分,那就的通过区段数来表示。那下面就让我们来看看什么是区段数。
每 个邮件都至少有一个区段数,Non-[MIME-IMB]型的邮件和non-multipart [MIME-IMB]的邮件是没有经过MIME编码之后的信息的,那这样的信息只有一个区段数1。多区段型的信息被编排成一个连续的区段数,这和实际信息 里出现的是一样的。如果一个特定的区段有类型信息或者是多区段的,一个MESSAGE/RFC822类型的区段也含有嵌套的区段数,这些区段数是指向这些 信息区段的信息体的。
说了那么多拗口的,现在我们讲的更简单易懂一些。在一个邮件体里面,区段数1代表的邮件的正文,区段数二代表的是第一个附 件,区段数三代表的是第二个附件,以此类推。在这些区段里,如果有哪个区段又是多区段的,比如2区段的内容格式是mulipart或者是 MESSAGE/RFC822类型的,那么这个区段又嵌套了多个子区段,嵌套的各子区段是用2.1,2.2……等等表示,类似,如果2.1又有嵌套,那么 还会有2.1.1,2.1.2等区段。这样的嵌套是没有限制的。
抓取431号邮件的摘要
抓取430到433号邮件的日期和主题
抓取433号邮件的附件的前128字节
store命令用于修改指定邮件的属性,包括给邮件打上已读标记、删除标记,等等。
copy命令将制定邮件拷贝到指定邮箱中
uid命令可以将邮件号为条件的命令转为唯一标示符来表示
logout命令退出系统
IMAP命令与分析的更多相关文章
- IMAP命令
IMAP命令学习1.CREATE <folder>CREATE可以创建指定名字的新邮箱.邮箱名称通常是带路径的文件夹全名.(有些IMAP客户机使用邮件夹称呼新邮箱)C: A003 CREA ...
- sodu 命令场景分析
摘自:http://www.cnblogs.com/hazir/p/sudo_command.html sudo 命令情景分析 Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全 ...
- 使用python 模仿mybinlog 命令 二进制分析mysql binlog
出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该声明. ...
- IMAP 命令
最近学习了一下IMAP命令,现在也算总结一下学习的东西,先说说IMAP命令,如果你使用的是163.126邮箱,反正是网易家的邮箱,那么这里就有很多坑要踩了,因为网易邮箱的特殊性,由于网易邮箱在中国占有 ...
- nice命令兼容性分析实例
背景 产品实验室出现一例日志转储问题,经定位发现当前版本号没有提供nice命令,而cron拉起定时任务时,却调用了nice命令,对定时任务做优先级调整. 毫无疑问兴许版本号须要提供nice命令,可是是 ...
- 基于linux与busybox的reboot命令流程分析
http://www.xuebuyuan.com/736763.html 基于Linux与Busybox的Reboot命令流程分析 ********************************** ...
- POP3命令与分析
http://www.cnblogs.com/crystalray/p/3302121.html POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何 ...
- sudo 命令情景分析
Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全部的 root 命令.本文就对我们常用到 sudo 操作情景进行简单分析,通过一些例子来了解 sudo 命令相关的技巧. 情景一:用 ...
- linux 命令free -m 命令结果分析
free -m 命令详解 free -m 分析系统内存使用情况:
随机推荐
- DOS批处理基础
1. echo 和 @ 回显命令 @ #表示不显示@后面的命令 echo off #从下一行开始关闭回显 @echo off ...
- zabbix_agentd客户端安装与配置(Linux操作系统)
标注:官网下载zabbix安装包(zabbix安装包里包含了zabbix_agentd客户端安装包,我们只选择zabbix_agentd客户端安装) zbbix官网下载地址: http://www. ...
- perl 截取 fastq文件
#!/usr/bin/perl -w use warnings; use strict; input_fastq trim_length}; ; my ($fastq, $trim_length) = ...
- discuz密码找回:[1]忘记UCENTER创始人密码
人们都是健忘的,何况每天的事情很多,有些站长更是兼职做,赚点外快而已,而ucenter更是不常用,所以忘记密码是在正常不过的事情,如果密码忘记怎么找回呢?方法有很多种,例如用comsenz tools ...
- Nginx配置优化解读
全局配置 Nginx的配置文件是nginx的安装目录的conf/nginx .conf,nginx.conf配置文件中,几个全局高级配置在模块部分之上. user www www; worker_p ...
- Unity3d 动态加载材质方法
Texture img = (Texture)Resources.Load("LedPicture"); GameObject.Find("Led").rend ...
- springboot-mybatis-plus基本项目框架
此仅仅为web最基本框架, 统一异常管理.接口统一日志管理. 项目结构: 注: 修改为如下图,作用是sql打印输出. 源码下载:https://files.cnblogs.com/files/007s ...
- Websphere下删除某个文件(ibm-partialapp-delete.props)
Websphere下删除某个文件(ibm-partialapp-delete.props)
- 小程序的tab切换事件
index.wxml代码 <view class="tab-left" > <view " bindtap="tab">tab ...
- The difference between the request time and the current time is too large.阿里云oss上传图片报错
The difference between the request time and the current time is too large. 阿里云oss上传图片的时候报错如上, 解决办法,把 ...