CN103559244B - 基于mbx格式的邮件正文的获取方法及系统 - Google Patents

基于mbx格式的邮件正文的获取方法及系统 Download PDF

Info

Publication number
CN103559244B
CN103559244B CN201310521274.0A CN201310521274A CN103559244B CN 103559244 B CN103559244 B CN 103559244B CN 201310521274 A CN201310521274 A CN 201310521274A CN 103559244 B CN103559244 B CN 103559244B
Authority
CN
China
Prior art keywords
pattern
mbx
message body
substring
mail
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310521274.0A
Other languages
English (en)
Other versions
CN103559244A (zh
Inventor
吴子章
刘申
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Neusoft Corp
Original Assignee
Neusoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Neusoft Corp filed Critical Neusoft Corp
Priority to CN201310521274.0A priority Critical patent/CN103559244B/zh
Publication of CN103559244A publication Critical patent/CN103559244A/zh
Application granted granted Critical
Publication of CN103559244B publication Critical patent/CN103559244B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于mbx格式的邮件正文的获取方法及系统,其中的方法包括,将mbx格式的邮件映射到内存;将映射到内存的mbx格式的邮件的首行转换成模式串,并将模式串的前六个字节作为模式子串;在映射到内存的mbx格式的邮件除了第一行的其余行首部位置添加一个标志;将每行标志后的六个字节形成数据块映射到缓存上,并对多行的数据块进行分组;通过分段hash映射方法筛选出每组数据块中的模式子串,并记录模式子串的位置;再通过查找标志确定及记录空行的位置;最后,通过匹配空行的位置和模式子串的位置确定邮件正文的位置,并获取邮件正文。通过本发明,在获取邮件正文时能够减少频繁访问磁盘带来的损耗,并且能够节省获取邮件正文的时间。

Description

基于mbx格式的邮件正文的获取方法及系统
技术领域
本发明涉及计算机数据通信技术领域,更为具体地,涉及一种基于mbx格式的邮件正文的获取方法及系统。
背景技术
随着社会的进步和技术的发展,电子邮件已经成为人们工作中主要的通信手段。如今互联网上对于邮件正文的获取与过滤,扮演着防止数据泄露与拦截垃圾邮件等重要角色,越来越受到网络管理者的关注与重视,对于海量的mbx格式邮件正文的提取,直接为不同操作系统的防止数据泄露与垃圾邮件过滤等提供重要的原材料,在整个网络防护系统中起到提取关键信息的预处理作用,同时其性能直接影响到整个防护系统乃至整个网络拓扑的吞吐量。
在当前邮件正文的提取方法中,mbx格式的邮件因存储多封邮件,处理起来会消耗很多时间,当防火墙或网上的服务器需要处理大量mbx格式的邮件数据库时,获取邮件正文的时间消耗会与邮件大小成正比例增加,在获取邮件正文的过程中,需要对邮件的头部特征进行搜索与定位,而传统的特征搜索算法无论是多模还是单模,都需要对邮件内容进行反复地遍历,以致消耗很多的时间;同时,频繁地访问磁盘也对系统的性能带来极大的损耗,延长了海量mbx格式邮件正文提取的时间。
发明内容
鉴于上述问题,本发明的目的是提供一种基于mbx格式的邮件正文的获取方法及系统,以解决在提取mbx格式邮件正文的过程中,频繁访问磁盘造成系统性能损耗的问题,提高提取mbx格式邮件正文的效率。
本发明提供一种基于mbx格式的邮件正文的获取方法,包括:
将mbx格式的邮件批量映射到内存;将批量映射到内存的mbx格式的邮件的首行转换成模式串,并将模式串的前六个字节作为模式子串,在批量映射到内存的mbx格式的邮件除首行之外的其余行的首部位置添加标志;
将每行标志后的六个字节形成数据块映射到缓存上,然后对数据块进行分组,筛选出每组数据块中的模式子串,并记录模式子串的位置;并且,通过查找每行首部位置的标志确定并记录空行的位置;
通过匹配空行的位置和模式子串的位置确定邮件正文的位置;
根据所确定的邮件正文的位置获取邮件正文。
本发明还提供一种基于mbx格式的邮件正文的获取系统,包括:
邮件映射单元,用于将mbx格式的邮件批量映射到内存;
模式串转换单元,用于将批量映射到内存的mbx格式的邮件的首行转换成模式串;
模式子串生成单元,用于将模式串的前六个字节作为模式子串;
标志添加单元,用于在批量映射到内存的mbx格式的邮件除首行之外的其余行的首部位置添加标志;
数据块映射单元,用于将每行标志后的六个字节形成数据块映射到缓存上;
数据块分组单元,用于对映射到缓存上的数据块进行分组;
模式子串筛选单元,用于筛选出每组数据块中的模式子串;
模式子串记录单元,用于记录筛选出的模式子串的位置;
空行位置确定单元,用于通过查找标志确定空行的位置;
空行位置记录单元,用于记录确定出的空行的位置;
邮件正文确定单元,用于通过匹配空行的位置和模式子串的位置确定邮件正文的位置;
邮件正文获取单元,用于根据所确定的邮件正文的位置获取邮件正文。
利用上述根据本发明提供的基于mbx格式的邮件正文的获取方法及系统,通过批量地将邮件数据映射到内存,来减少频繁访问磁盘带来的损耗,通过跨行匹配、与在缓存上进行的跨数据块匹配,极大地降低复杂模式串的匹配几率,根据mbx格式特征实时地调节数据块尺度,从而提升模式子串预匹配的性能,而且本发明采用的分段hash映射方法,第一段的hash查询与第二段的精确过滤相结合,将冲突发生的概率降到百万分之一,由于模式匹配过程的性能提升,带来整体邮件正文提取性能的提升。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1为mbx格式邮件的结构图;
图2为根据本发明的基于mbx格式的邮件正文的获取方法的流程图;
图3为根据本发明实施例的基于mbx格式的邮件正文的获取方法的流程图;
图4为根据本发明实施例每次分组的行数调节示意图;
图5为根据本发明实施例的hash表映射示意图;
图6为本发明实施例的跨行匹配示意图;
图7为根据本发明的基于mbx格式的邮件正文的获取系统的结构框图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。在其它例子中,为了便于描述一个或多个实施例,公知的结构和设备以方框图的形式示出。
为了详细清楚的描述本发明提供的基于mbx格式的邮件正文的获取方法及系统,下面首先对mbx格式的邮件结构进行说明。
mbx邮件格式是一种MAC/Unix系统下的邮件存储格式,其内容由消息分隔符、消息头部、空行、消息正文组成,具有明显特征,图1示出了mbx格式邮件的结构。
如图1所示,邮件第一行为消息分隔符由“From<>…”组成,邮件第二行到第十五行为消息头部,消息头部的下面是空行,空行下面是邮件正文,mbx邮件结构是格式本身定义的,针对mbx格式邮件的结构,首先将消息分隔符转换成模式串:
^From<*>{Sun,Mon,Tue,Wed,Thur,Fri,Sat}{Jan,Feb,Mar,
Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}\[\d+\]\[\d+\]*\r
由于在非贪婪模式匹配下,可以准确地确定每封邮件的开始,而距离该模式串最近的空行则可以表示邮件正文的开始;下一封邮件的该模式串不但可以标识下一封邮件的开始,同时也可以标识上一封邮件正文的结束。因此,我们在数据流中,通过模式匹配该模式串及空行来确定邮件正文的位置。
然而,执行上述复杂模式串的精确匹配,同时频繁地访问磁盘文件,会给性能带来极大的损耗。所以,本文通过批量地将邮件数据映射到内存,来减少频繁访问磁盘带来的损耗。
本发明具体的思路是:先通过批量的内存映射文件降低访问磁盘文件的性能损耗,根据mbx格式特征设计模式串的跨行搜索匹配方法,通过对比目标串与待匹配串在缓存中的hash表来实现预过滤,再采用逆向bloom filter思想实现模式串的跨数据块(本发明将映射到缓存上的多行数据称为数据块)匹配,从而确定邮件正文的位置,极大地提高邮件正文提取的效率。
图2示出了根据本发明的基于mbx格式的邮件正文的获取方法的流程。
如图2所示,在基于mbx格式的邮件正文的获取过程中,首先,将mbx格式的邮件批量映射到内存(步骤S200);然后,将批量映射到内存的mbx格式的邮件的首行转换成模式串,并将模式串的前六个字节作为模式子串,在批量映射到内存的mbx格式的邮件除首行之外的其余行的首部位置添加标志;将每行标志后的六个字节形成数据块映射到缓存上,然后对数据块进行分组,筛选出每组数据块中的模式子串,并记录模式子串的位置;并且,通过查找每行首部位置的标志确定并记录空行的位置(步骤S201);接着,通过匹配空行的位置和模式子串的位置确定邮件正文的位置(步骤S202);最后,根据所确定的邮件正文的位置获取邮件正文(步骤S203)。
为了更为详细地说明本发明提供的基于mbx格式的邮件正文的获取方法,图3示出了根据本发明实施例的基于mbx格式的邮件正文的获取方法的流程。
如图3所示,本发明提供的基于mbx格式的邮件正文的获取方法的流程,包括:
S300:将mbx格式的邮件数据批量映射到内存。
为了减少处理mbx格式的邮件时访问磁盘的次数,先将mbx格式的邮件数据批量映射到内存中,同时,对每次映射到内存的文件大小进行限制,通过读取系统的内存占用百分比来确定每次映射到内存的文件大小,然后进行内存对齐,以提高内存利用率,对于一封邮件分别在两次内存映射上的情况,将不完整的邮件缓存起来,等待下一次邮件数据映射到内存使邮件完整后,再获取邮件正文。
S301:添加并查找标志“0A”。
由于能够表征邮件开始的消息分隔符可以被上述模式串表示,且该模式串都是在每行的开始(除去第一封邮件外,其他邮件的模式串都是在换行符“0A”之后)。因此,针对这种格式特征,在每个mbx邮件的开始添加一个标志“0A”,使每个模式串“From<>…”都是在“0A”之后,由于对模式串的定位可以转换为对模式子串“From<”的定位,因此可以转换为对全文搜索“0A”,对其位置进行第一轮的筛选,使原来的逐个字节查找匹配转换为逐行且只在每行的前六个字节查找匹配,这样不但极大地缩小了查找的范围,在海量邮件处理的时候加快了搜索速度,同时为后面的逐个数据块查找奠定基础。
由于每封邮件首行的模式串只有前六个字节相同即“From<”,而从第七个字节开始不一定相同了,所以只能将每封邮件首行的模式串的前六个字节作为模式子串进行筛选,如果每封邮件首行的模式子串不相同则不无法进行筛选从而无法定位模式子串。
S302:记录“0A”的位置Position[i]。
需要说明的是,将每个“0A”的位置指针保存在Position[i]数组中是为了跨数据块匹配提供方便。
S303:将“0A”及其后面的六个字节hash形成数据块映射到缓存上。
需要说明的是,对于20K或32K的缓存我们只使用18K就够了,因为每次hash映射到缓存上的数据行不超过3K。
S304:初始化数据块行数。
由于每次数据hash映射到缓存上的最大行数可以达到3×1024行,本实施例对这些行数进行分组,图4为根据本发明实施例每次分组的行数调节示意图。
如图4所示,初始状态可以设定数据块每组的行数n=10行,之后映射到缓存上预匹配的数据块每组的行数为平均邮件头的长度,且初始计算的位置尽量定在邮件头部开始的位置,因为这样根据统计来的结果不断调整每次分组的行数,从而动态地使能够跳过的数据块行数最大。
S305:计算n行“0A”后面六字节的hash值。
S306:查看Hash“From<”是否属于该集合,如果是,执行步骤S307,如果否,执行步骤S313。
这里运用分段hash的方法,将模式子串“From<”分成四字节的字母模式串“From”与一个两字节的符号模式串“<”,分别进行hash值的计算,然后,对前四字节和后两字节依次向左偏移八字节,分别存储在32位的hash值中,前四字节映射形成相应的hash表1,后两字节映射形成相应的hash表2,映射公式如公式(2)所示,因此,前四字节偏移后计算出的hash值与前四字节未偏移计算出的hash值之间就存在着一一对应,其冲突发生概率为0;而对后两字节的hash计算是非常均匀分布的,且其冲突符合小概率分布。
hash = hash < < 8 + charAt ( i ) , i &Element; [ 0,3 ] ( hash < < 8 ) ^ charAt ( i ) * 33 , i &Element; [ 4,5 ] - - - ( 2 )
其中,char At(i)表示的是数据串的第i个元素的ASCII码值。
图5为根据本发明实施例的hash表映射示意图,hash表1和hash表2都是一维的表,如果想查询Hash“From<”是否属于该集合,首先遍历一维表1,判断“From”偏移后计算出hash值是否在hash表1中,如果在,遍历表2,判断“<”偏移后计算出hash值是否在hash表2中,如果在,说明该数据属于这个集合;如果上述两个步骤有一个判断出否,则说明数据不属于该集合。
其中,集合表示映射到缓存上的数据块,判断“From<”(模式子串)是否属于该集合就是判断“From<”是否在该数据块内。
S307:精确匹配“From<”。
首先查询前四字节的hash表1,如图5所示,其时间复杂度为O(1),如果hash表1中的值与前四字节未移动计算出的hash值相等,说明匹配上了字母模式串“From”,再查询hash表2,如果hash表2中的值与后两字节未移动计算出的hash值相等,说明匹配上了符号模式串“<”。
上述步骤S305-S307为本发明匹配“From<”优选的方法,还可以采用其它方法进行“From<”的匹配,列举如下方法:
方法一:
首先,将模式子串“From<”与每个“0A”后面的六个字节分别计算hash值,hash函数采用三十二位的FNV算法;然后,用模式子串“From<”的FNVhash值在截取的六字节数据的FNVhash值中进行查找;如果找到,再采用C语言的字符串比较库函数strcmpu与模式子串“From<”的FNVhash值进行比较,若相等即为匹配上“From<”,否则继续向前匹配。
方法二:
首先,将模式子串“From<”与每个“0A”后面的六个字节,每个字节都计算一个hash值,hash函数采用三十二位的FNV算法;然后,在缓存上将模式子串“From<”的六个hash值,与每个“0A”后面的六个字节的hash值逐一进行比较;若六个hash值都相等,则认为匹配上“From<”,否则继续向前匹配。
方法三:
将模式子串“From<”与每个“0A”后面的六个字节,采用单个相互独立的hash函数分别计算hash值(根据bloom filter理论,三个相互独立的hash函数可以唯一确定一个值,不会有冲突);先比较“From<”的第一个hash值与每个“0A”后面的六个字节的第一个hash值,若相等,则依次比较第二与第三个hash值,如果三个“From<”的第一个hash值与一个“0A”后面的六个字节的三个hash值都相等,则认为匹配上“From<”否则继续匹配。
方法四:
将模式子串“From<”分为两段“From”与“<”,分别按位计算hash函数;将每个“0A”后面的六个字节,同比例地分为两段,使用方法三同样的hash函数计算其hash值;分别将两部分hash值进行比较,若两部分的hash值都相等,则认为匹配上“From<”,否则继续匹配;
上述例举了几个匹配模式子串的方法,但并不局限于只采用上述几个方法进行模式子串的匹配。
S308:非贪婪模式匹配消息分隔符的正则表达式,并记录消息分隔符的位置eposition[j]。
需要说明的是,消息分隔符的正则表达式就是代替成消息分隔符的模式串,记录消息分隔符的位置就是记录模式串或模式子串的位置。
S309:查看hash“0A”是否属于该集合,如果是,执行步骤S310;如果否,执行步骤S313。
同理查看hash“From<”是否属于该集合的方法,将“0A”映射到缓存上形成hash表,如果在hash表中查询到“0A”,说明该“0A”在所述集合中。
S310:在第一列字符中查找“0A”并记录“0A”位置sposition[k]。
需要说明的是,查找并记录“0A”的目的是记录邮件中每一行开始的位置,因为每一行开始的位置的前面必然是上一行结束的位置(文件的第一行除外),即“0A”的置,因此找到“0A”的位置后面就是下一行开始的位置。
S311:判断L=min{sposition[k+m]|sposition[k+m]>eposition[j]}和H=eposition[j+1]是否同时存在,如果是,则执行步骤S312,如果否,则执行步骤S313。
其中,L表示集合{sposition[k+m]|sposition[k+m]>eposition[j]}中最小的元素,这里sposition[k+m]记录的是空行的位置,即L表示距离上一次匹配上的消息分隔符位置最近的空行的位置;
需要说明的是,因为每行的结束符是“0A”,在每行开始的位置添加一个标志“0A”,所以空行是由两个“0A”连在一起组成,在查找空行的过程中,先查找每行首部的“0A”,如果在“0A”后找到另一个“0A”,即两个“0A”中间没有字符串,则将两个“0A”所在的行确定为空行,确定并记录模式串的位置和确定并记录空行的位置不分先后顺序,可以先确定空行的位置,也可以先确定模式串的位置。
H表示下一个消息分隔符(相对于eposition[j]来说的下一个就是eposition[j+1])的位置。
为了更直观的说明本实施例,图6示出了本发明实施例的跨行匹配。
如图6所示,由于将邮件数据每行(除了第一行)的前六个字节映射到缓存上,使原来的逐个字节查找匹配转换为逐行且只在每行的前六个字节查找匹配,利用分段hash模式子串的方法筛选出模式子串,将模式串的定位转换成模式子串的定位,再通过匹配模式子串和空行的位置来确定邮件正文的位置,所以在查找邮件正文的过程中可以跨过消息头部,从而缩小查找的范围,加快搜索速度。
S312:提取H与L之间的数据。
在步骤S311中,如果L=min{sposition[k+m]|sposition[k+m]>eposition[j]}和H=eposition[j+1]同时存在,则与消息分隔符位置最近的空行和消息分隔符之间的数据为邮件正文,在确定邮件正文的之后提取邮件正文。
S313:调整数据块每组的行数n。
其中,n=min{sposition[k]-eposition[j]}&&n>0,这个集合表示的是消息头部的最小长度,也就是消息头部的平均长度。
通过计算邮件头的长度来不断调整每次预匹配的数据块长度,实现数据块最大限度的跨越,降低复杂模式串精确匹配的几率,进而提高整个搜索匹配的效率。
S314:判断邮件数据是否到结尾,如果是,则执行步骤S315;如果否,则执行步骤S316。
S315:判断邮件是否完整,如果是,则执行步骤S312,如果否,则执行步骤S317。
S316:根据position[i]数组中“0A”位置的指针跳过n行数据,再次判断邮件数据是否结尾,如果是则执行步骤S315;如果否,则执行步骤S305。
S317:缓存不完整的邮件,执行步骤S300。
需要说明的是,缓存不完整的邮件,等待下一次邮件数据映射到内存使该邮件完整后,再提取邮件正文。
与上述方法相对应,本发明还提供一种基于mbx格式的邮件正文的获取系统。图7示出了根据本发明的基于mbx格式的邮件正文的获取系统的逻辑结构。
如图7所示,本发明提供的基于mbx格式的邮件正文的获取系统700包括邮件映射单元701、模式串转换单元702、模式子串生成单元703、标志添加单元704、数据块映射单元705、数据块分组单元706、模式子串筛选单元707、模式子串记录单元708、空行位置确定单元709、空行位置记录单元710、邮件正文确定单元711、邮件正文获取单元712。
其中,邮件数据映射单元701用于将mbx格式的邮件映射到内存;模式串转换单元702用于将映射到内存的mbx格式的邮件的首行转换成模式串;模式子串生成单元703用于将模式串的前六个字节作为模式子串;标志添加单元704用于在映射到内存的mbx格式的邮件除了首行的其余行首部位置添加一个标志;数据块映射单元705用于将每行标志后的六个字节形成数据块映射到缓存上;数据块分组单元706用于对多行的数据块进行分组;模式子串筛选单元707用于筛选出每组数据块中的模式子串;模式子串记录单元708用于记录筛选出的模式子串的位置;空行位置确定单元709用于通过查找标志确定空行的位置;空行位置记录单元710用于记录确定出的空行的位置;邮件正文确定单元711用于通过匹配空行的位置和模式子串的位置确定邮件正文的位置;邮件正文获取单元712用于根据所确定的邮件正文的位置获取邮件正文。
如上参照附图以示例的方式描述了根据本发明的基于mbx格式的邮件正文的获取方法及系统。但是,本领域技术人员应当理解,对于上述本发明所提出的基于mbx格式的邮件正文的获取方法及系统,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。

Claims (5)

1.一种基于mbx格式的邮件正文的获取方法,包括:
将mbx格式的邮件批量映射到内存;
将批量映射到内存的所述mbx格式的邮件的首行转换成模式串,并将所述模式串的前六个字节作为模式子串,在批量映射到内存的所述mbx格式的邮件除首行之外的其余行的首部位置添加标志;将每行所述标志后的六个字节形成数据块映射到缓存上,然后对所述数据块进行分组,筛选出每组数据块中的所述模式子串,并记录所述模式子串的位置;并且,通过查找每行首部位置的所述标志确定并记录空行的位置;
通过匹配所述空行的位置和所述模式子串的位置确定邮件正文的位置;
根据所确定的邮件正文的位置获取所述邮件正文。
2.如权利要求1所述的基于mbx格式的邮件正文的获取方法,其中,在筛选每组数据块中的所述模式子串的过程中,
将所述模式子串分成字母模式串和符号模式串,分别进行hash值的计算;
对所述字母模式串和所述符号模式串依次向左偏移八字节计算hash值,分别存储在字母模式串和符号模式串的hash表中,公式如下:
h a s h = h a s h < < 8 + c h a r A t ( i ) , i &Element; &lsqb; 0 , 3 &rsqb; ( h a s h < < 8 ) ^ c h a r A t ( i ) * 33 , i &Element; &lsqb; 4 , 5 &rsqb;
其中,charAt(i)表示模式子串的第i个元素的ASCII码值;
查询字母模式串的hash表和查询所述符号模式串的hash表;其中,
如果所述字母模式串未偏移计算出的hash值与所述字母模式串向左偏移八字节计算出的hash值相等,并且所述符号模式串未偏移计算出的hash值与所述符号模式串向左偏移八字节计算出的hash值相等,则模式子串匹配成功;
筛选出匹配成功的模式子串。
3.如权利要求1所述的基于mbx格式的邮件正文的获取方法,其中,在对数据块进行分组的过程中,
第一组的行数为预设行数,其余行数为平均邮件头的长度。
4.如权利要求1所述的基于mbx格式的邮件正文的获取方法,其中,在通过查找每行首部位置的所述标志确定空行的位置的过程中,
如果在所述标志后查找到换行符,则将与所述换行符所在的行确定为空行。
5.一种基于mbx格式的邮件正文的获取系统,包括:
邮件映射单元,用于将mbx格式的邮件批量映射到内存;
模式串转换单元,用于将批量映射到内存的所述mbx格式的邮件的首行转换成模式串;
模式子串生成单元,用于将所述模式串的前六个字节作为模式子串;
标志添加单元,用于在批量映射到内存的所述mbx格式的邮件除首行之外的其余行的首部位置添加标志;
数据块映射单元,用于将每行所述标志后的六个字节形成数据块映射到缓存上;
数据块分组单元,用于对映射到缓存上的所述数据块进行分组;
模式子串筛选单元,用于筛选出每组数据块中的所述模式子串;
模式子串记录单元,用于记录筛选出的所述模式子串的位置;
空行位置确定单元,用于通过查找所述标志确定空行的位置;
空行位置记录单元,用于记录确定出的空行的位置;
邮件正文确定单元,用于通过匹配所述空行的位置和所述模式子串的位置确定邮件正文的位置;
邮件正文获取单元,用于根据所确定的邮件正文的位置获取所述邮件正文。
CN201310521274.0A 2013-10-28 2013-10-28 基于mbx格式的邮件正文的获取方法及系统 Active CN103559244B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310521274.0A CN103559244B (zh) 2013-10-28 2013-10-28 基于mbx格式的邮件正文的获取方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310521274.0A CN103559244B (zh) 2013-10-28 2013-10-28 基于mbx格式的邮件正文的获取方法及系统

Publications (2)

Publication Number Publication Date
CN103559244A CN103559244A (zh) 2014-02-05
CN103559244B true CN103559244B (zh) 2016-08-24

Family

ID=50013491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310521274.0A Active CN103559244B (zh) 2013-10-28 2013-10-28 基于mbx格式的邮件正文的获取方法及系统

Country Status (1)

Country Link
CN (1) CN103559244B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109634933A (zh) * 2014-10-29 2019-04-16 北京奇虎科技有限公司 数据处理的方法、装置及系统
CN104821907B (zh) * 2015-03-30 2018-01-30 四川神琥科技有限公司 一种电子邮件处理方法
CN104750846B (zh) * 2015-04-10 2017-12-08 浪潮集团有限公司 一种子串查找方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1517924A (zh) * 2003-01-15 2004-08-04 联想(北京)有限公司 基于数据库存储的邮件收发方法
EP2122504A1 (en) * 2007-01-18 2009-11-25 Roke Manor Research Limited A method of extracting sections of a data stream

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1517924A (zh) * 2003-01-15 2004-08-04 联想(北京)有限公司 基于数据库存储的邮件收发方法
EP2122504A1 (en) * 2007-01-18 2009-11-25 Roke Manor Research Limited A method of extracting sections of a data stream

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于MIME邮件结构的邮件内容提取技术的研究;胡燕等;《现代图书情报技术》;20081231(第5期);第85-88页 *

Also Published As

Publication number Publication date
CN103559244A (zh) 2014-02-05

Similar Documents

Publication Publication Date Title
CN103412863B (zh) 面向嵌入式设备的大容量矢量地图快速可视化实现方法
CN101833542B (zh) 一种用户界面字体渲染方法及装置
CN103760991B (zh) 一种实体输入方法和装置
CN103703459A (zh) 基于字符变换和无监督网络数据的文本消息规格化方法和系统
CN103020207B (zh) 浏览器标签页分组管理方法及装置
CN105224692A (zh) 支持多核处理器的sdn多级流表并行查找的系统及方法
CN105404686A (zh) 一种基于地理特征层次分词的新闻事件地名地址匹配方法
CN103701469B (zh) 一种大规模图数据的压缩存储方法
CN103559244B (zh) 基于mbx格式的邮件正文的获取方法及系统
CN103324763B (zh) 一种手机端树形数据结构的展现方法
WO2015018247A1 (zh) 事件多维度信息显示装置和方法
CN109977291A (zh) 基于物理知识图谱的检索方法、装置、设备及存储介质
CN109859109A (zh) 一种系列比例尺pdf地图无缝组织与显示方法
CN115438359B (zh) 项目申报用数据匹配共享系统
CN101459489B (zh) 深度报文检测设备和方法
CN106874240A (zh) 数字出版方法及系统
CN103150409B (zh) 一种用户检索词推荐的方法及系统
CN105515997A (zh) 基于bf_tcam实现零范围扩张的高效范围匹配方法
CN101477555A (zh) 基于sql数据库的任务树的快速检索及生成显示的方法
CN103455964A (zh) 一种基于案件信息的案件线索分析系统及方法
CN108881036A (zh) 一种基于查表运算的网络通信快速匹配方法及设备
CN106777395A (zh) 一种基于社区文本数据的话题发现系统
CN105740374A (zh) 基于分布式内存的三维平台数据模糊查询方法
CN111737196B (zh) 基于电力交易系统气象资源网格文本转矢量图方法及装置
Weaver et al. Sponsored messaging about climate change on Facebook: Actors, content, frames

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant