Imap使用fetch指令接收邮件服务器上的邮件,fetch指令的参数很多,特将其总结如下:
参数:序列集,邮件数据项名称或者宏
响应:非标签化响应:FETCH
结果:OK-fetch完成
NO-fetch错误:不能获取该数据
BAD-未知命令,或者无效参数
FETCH命令获取邮箱中的一个邮件的相关数据。被获取的数据项可以是一个原语,或者一个组合列表。
在正式语法中基于msg-att-static规则确认的大部分数据项,是静态的,并且不能因为任意特定邮件而改变。在正式语法中msg-att-static规则确认的其它数据项,可以改变,或者作为一个STORE命令的一个结果,或者因为外部事件。
例如,如果一个客户端接收到它已经知道的、一个邮件的一个信封,它可以安全地忽略新传送的信封。
有三种宏,它们指明数据项的普遍使用集,并能代替数据项使用。一个宏必须被自身所用,并且不能与其它宏或者数据项连接。
ALL
等效于:(FLAGS INTERNALDATE RFC822.SIZE ENVELOPE)
FAST
等效于:(FLAGS INTERNALDATE RFC822.SIZE)
FULL
等效于:(FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODY)
现在已经定义的、可以被获取的数据项有:
BODY
BODYSTRUCTURE的不可扩展形式。
BODY[
特定主体块的文本。块声明是一个零的集合,或者根据时间分隔开的更多块声明。一个块声明或者是一个块号,或者是以下的一个:HEADER,HEADER.FIELDS,HEADER.FIELDS.NOT,MIME,及TEXT。一个空的块声明指向整个邮件,包括头部。
每个邮件有至少一个块号。Non-[MIME-IMB]邮件,及不带内嵌邮件的non-multipart[MIME-IMB]邮件,只有一个块1。
邮件簇被分配连续的块号,如果它们出现在邮件中。如果一个特定块的类型是邮件或者邮件簇,则这个块后面必须跟着它在块簇中的块号的时间。
一个类型为MEEAGE/RFC822类型的块也有块号,指向MESSAGE块域的块集。
HEADER,HEADER.FIELDS,HEADER.FIELDS.NOT,及TEXT块声明可能是单个块声明,也可能是以一个或者多个 数字型的块声明为前缀――其前提是该数字型的块声明指向一个MESSAGE/RFC822类型的块。MIME块声明必须以一个或者多个数字型的块声明为前 缀。
HEADER,HEADER.FIELDS,及HEADER.FIELDS.NOT块声明指向邮件的[RFC-2822]头部,或者一个内嵌 [MIME-IMT] MESSAGE/RFC822邮件。HEADER.FIELDS和HEADER.FIELDS.NOT其后跟着field- name([RFC-2822]中有定义)名称的一个列表,并返回头部的一个子集。HEADER.FIELDS返回的子集只包括那些带有与列表中的名称之 一相符的一个field-name的头部域;类似地,HEADER.FIELDS.NOT返回的子集只包含带有一个不匹配域名称的头部域。域匹配是不区分 大小写的,除非用别的方法强制。子集化并不把[RFC-2822]定义的、头部和主体之间的空行排除在外;空行包含在所有头部获得中,除非一个邮件没有主 体也没有空行。
MIME块声明指向该块的[MIME-IMB]头部。
TEXT块声明指向邮件的文本主体,不包括[RFC-2822]头部。
这是一个带有它的一些块声明的复杂邮件的一个例子:
HEADER ([RFC-2822] header of the message)
TEXT ([RFC-2822] text body of the message) MULTIPART/MIXID
1 TEXT/PLAIN
2 APPLICATION/OCTET-STREAM
3 MESSAGE/RFC2822
3.HEADER ([RFC-2822] header of the message)
3.TEXT ([RFC-2822] text body of the message) MULTIPART/MIXED
3.1 TEXT/PLAIN
3.2 APPLICATION/OCTET-STREAM
4 MULTIPART/MIXED
4.1 IMAGE/GIF
4.1.MIME ([MIME-IMB] header for the IMAGE/GIF)
4.2 MESSAGE/RFC822
4.2.HEADER ([RFC-2822] header of the message)
4.2.TEXT ([RFC-2822] text body of the message) MULTIPART/MIXID
4.2.1 TEXT/PLAIN
4.2.2 MULTIPART/ALTERNATIVE
4.2.2.1 TEXT/PLAIN
4.2.2.2 TEXT/RICHTEXT
获取指定文本的一个子串是可能的。这是通过添加一个开的角符(“〈”),请求的第一个字节位置,一个时间,请求的字节的最大数,及一个闭的角符(“〉”)到块声明,来实现的。如果起始字节超出了文本的末尾,则返回一个空的字符串。
试图读取超出文本末尾内容的任何局部获取都会被适当截断。从第0字节开始的一个局部获取都返回局部获取,即使这种截断发生。
注意:这意味着一个1500字节的邮件的BODY[]<0.2048>将返回带有一个大小1500的原义的BODY[]<0>,而不是BODY[]。
注意:一个HEADER.FIELDS或者HEADER.FIELDS.NOT块声明的一个子串获取,在子集化头部之后计算。
/Seen标记是隐含标记;如果这导致标记改变,它们应当作为FETCH响应的一部分被包含进来。
BODY.PEEK[
BODY[
BODYSTRUCTURE
邮件的[MIME-IMB]主体结构。它的计算是由服务器把[MIME-IMB]头部域解释为[RFC-2822]头部和[MIME-IMB]头部。
ENVELOPE
邮件的信封结构。它的计算是由服务器把[RFC-2822]头部解释为组件块,默认为所需要的多个域。
FLASG
为该邮件设置的标记。
INTERNALDATE
邮件的实际日期。
RFC822
功能上等效于BODY[],不同的是,其结果的非标签化FETCH数据(返回RFC822)的语法。
RFC822.HEADER
功能上等效于BODY.PEEK[HEADER],不同的是,其结果的非标签化FETCH数据(返回RFC822.HEADER)的语法。
RFC822.SIZE
邮件的[RFC-2822]大小。
RFC822.TEXT
功能上等效于BODY[TEXT],不同的是,其结果的非标签化FETCH数据(返回RFC822.TEXT)的语法。
UID
邮件的唯一标识符。
例子:
C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)])
S: * 2 FETCH ….
S: * 3 FETCH ….
S: * 4 FETCH ….
S: A654 OK FETCH completed
目前市场上的邮件安全产品大都是一套封闭邮件系统,部署上存在使用户放弃原来的账户使用新账户的问题,这就导致在部署时存在一定困难。在邮件透明加密产品中,天御云安的隐秘邮很新颖,使用安全邮件网关对邮件透明加密,用户完全感知不到邮件网关的存在,但是邮件在服务器上却穿上了盔甲,任你黑客攻破服务器,看到的邮件却是一堆乱码。
隐密邮网址:https://mail.tyyunan.com/
关键词:imap 邮件安全 透明加密