一种面向邮件地址特征的邮件地址匹配方法

文档序号:10660714阅读:345来源:国知局
一种面向邮件地址特征的邮件地址匹配方法
【专利摘要】本发明提供的是一种面向邮件地址特征的邮件地址匹配方法。(1)按照构建过程,构建n条邮件地址规则;(2)随机生成一条邮件地址,将该邮件地址包括“@”符在内的“@”符之前的部分在AC自动机构建的规则树中,进行匹配;(3)将该地址“@”符之后的部分的域名部分,计算三种哈希函数的函数值,在哈希表中进行查找。本发明提出的基于动态存储的缓冲区方法,考虑了邮件地址的用户名部分数量较大,较为分散,且域名部分数量大但是种类比较少的特点,充分利用的多模式匹配算法和哈希算法的优势。能够在大规模邮件地址匹配时拥有良好的内存性能表现和时间性能变现。
【专利说明】
一种面向邮件地址特征的邮件地址匹配方法
技术领域
[0001]本发明涉及的是一种邮件网关,主要是一种邮件地址匹配方法。【背景技术】
[0002]在邮件网关领域中,邮件地址匹配技术作为邮件网关技术中的基础发挥着不可估量的作用。在当今互联网日益复杂的今天,随着网络流量的逐渐增大,如何使得邮件网关在应对大流量网络时,能够拥有更高的处理速度,以及较好的内存消耗表现是当前邮件网关领域的主要需求。
[0003]目前对于邮件网关而言,绝大多数进行邮件地址匹配的方法选用的都是各类多模式匹配算法。以经典AC算法为例,采用AC算法进行邮件地址匹配可以获得较好的时耗上的效率。但是AC算法在模式规则集数量较大时,需要的内存比较大。为此,有针对AC算法的各类改进。主要是针对了横向的扇区压缩或纵向的压缩。压缩后的AC改进算法虽然在内存消耗上拥有较大的提升。但是一方面,AC的改进算法往往会增加匹配的时间复杂度,同时实现方法也会变得较为复杂;另一方面,这些多模式匹配算法都是通用方法,没能针对邮件地址的组成特征,因此有进一步的性能提升的可能。
【发明内容】

[0004]本发明的目的在于提供一种能够有效处理大规模邮件地址规则下的邮件地址匹配,拥有良好的内存和时间上的性能消耗的面向邮件地址特征的邮件地址匹配方法。
[0005]本发明的目的是这样实现的:
[0006](1)按照构建过程,构建n条邮件地址规则;[〇〇〇7] (2)随机生成一条邮件地址,将该邮件地址包括符在内的符之前的部分在 AC自动机构建的规则树中,进行匹配;
[0008] (3)将该地址符之后的部分的域名部分,计算三种哈希函数的函数值,在哈希表中进行查找。
[0009]本发明还可以包括:
[0010]1、所述构建过程包括:
[0011] 1)对于一条邮件地址规则,在构建时,包括符的符之前的部分按照AC自动机的构建方式加入规则树中;
[0012]2)对域名部分分别计算三种哈希函数的函数值;[0〇13]3)在节点增加索引,索引中实际存放的是域名部分经过三种哈希的三个哈希值,分成三组存放,同时按照哈希值的大小排序;
[0014]4)按照VLCBF_100算法的更新步骤,将域名部分存放到哈希表中。
[0015]2、三种哈希函数为SDBMHash、RSHash以及JSHash,位数组大小为1.713111,其中111 = nk/ln2,n为规则个数。
[0016]本发明针对邮件网关使用现有的多模式匹配算法不能有效针对邮件地址的组成特点和分布特征的缺点而提出。通过结合了多模式匹配算法的特点和哈希算法的特点,致力于在邮件网关领域里处理大规模邮件地址规则的匹配,能够有效处理大规模邮件地址规贝1J下的邮件地址匹配。拥有良好的内存和时间上的性能消耗。能够适应当下大规模流量、大规模邮件地址规则下邮件网关在内存消耗和时间消耗上的需求。
[0017]与现有技术相比,本发明具有如下的有益效果:
[0018]本发明提出的基于动态存储的缓冲区方法,考虑了邮件地址的用户名部分数量较大,较为分散,且域名部分数量大但是种类比较少的特点,充分利用的多模式匹配算法和哈希算法的优势。能够在大规模邮件地址匹配时拥有良好的内存性能表现和时间性能变现。【附图说明】
[0019]图1为面向邮件地址特征的邮件地址匹配方法(ACEA算法)的示意图。
[0020]图2不同规则数下ACEA算法和AC算法的内存性能比较。[0021 ]图3不同规则数下ACEA算法和AC算法的时耗比较。【具体实施方式】[〇〇22]下面举例本发明进行详细说明。
[0023]本发明的一种面向邮件地址过滤的邮件地址匹配方法,基于以下的构建过程,具体包括以下组成部分。[〇〇24]①基于AC的自动机存储区 [〇〇25] ②基于VLCBF的哈希存储区
[0026] 1)按照邮件地址的符进行分割。用户名部分相对分散,采用AC算法构建自动机。其中,字符集大小为57个(26个英文字母、10个数字、20个特殊字符以及符)。@字符实际不需要节点进行存储,仅需将用户名的最后一个字符的存储标志进行标记即可。
[0027]2)而针对域名部分的特点,数量比较多但是种类很少,这种特点很适合使用该哈希算法,因此域名部分采用哈希算法进行存储。其中,哈希算法选用的是缓冲区为100的 VLCBF_100算法。哈希函数个数k = 3,哈希函数分别选择SDBMHash,RSHash以及JSHash。位数组大小为1.713111,其中111 = 111^/1112,11为规则个数。
[0028]3)自动机和哈希算法之间通过排序和二分查找的方式进行关联和索引。在用户名的末尾节点处,增加一个当前用户名的域名哈希值索引。该数组按照哈希值进行排序,再查找时通过二分方式查找到域名对应的哈希值。
[0029]构建过程如下:
[0030]1)对于一条邮件地址规则,在构建时,符之前的部分(包括符)按照AC自动机的构建方式加入规则树中。
[0031]2)对域名部分分别计算三种哈希函数的函数值。[〇〇32] 3)在节点增加索引,索引中实际存放的是域名部分经过三种哈希的三个哈希值,分成三组存放,同时按照哈希值的大小排序。[〇〇33]4)按照VLCBF_100算法的更新步骤,将域名部分存放到哈希表中。[〇〇34] 匹配过程如下:
[0035]1)按照构建过程,构建n条邮件地址规则。
[0036] 2)随机生成一条邮件地址,将该地址符之前的部分(包括符),在AC自动机构建的规则树中,进行匹配。[〇〇37] 3)将该地址符之后的部分(不包括符)的域名部分,计算三种哈希函数的函数值,在哈希表中进行查找。[〇〇38]下面结合具体实施例说明本发明的效果。
[0039](D实例环境[〇〇4〇] 实例采用服务器级硬件设备,cpu配置为Intel(R)Xeon(R)CPU E5-263000 2 ? 30GHz,内存大小16G,操作系统选用Debian GNU/Linux 6 ? 0,Linux内核版本为2 ? 6 ? 32-5-1 inx-amd64,实现语言使用C语言,编译器选用GCC编译器,版本为gcc-4.4.6。[〇〇411(2)实施方案
[0042]实例两组数据进行,数据为随机生成的邮件地址,分别比对AC算法和ACEA算法的内存消耗和时间消耗。两组数据的实施过程如下:
[0043] 1)第一组用于测试规则的数量对AC算法和ACEA算法在内存消耗上的影响。设定规则长度为20,其中用户名长度为9,域名长度为10。用户名数量从10到105,域名数量为10,规则数从1〇2到1〇6。记录规则数量从1〇2到1〇6下AC算法的实现和ACEA算法的实现内存消耗。
[0044]2)第二组用于测试规则数量对AC算法和ACEA算法在时间消耗上的影响。规则长度为20,规则数从102到106,使用长度为20的随机生成的邮件地址进行10000次匹配。测试AC算法和ACEA算法在每种数量级的规则下,匹配过程各自需要的时间。[〇〇45](3)实施结果
[0046]图2为第一组数据的实施结果。由此可知,当规则的规模在103以下时,由于规则数较少,ACEA算法在内存上的优势并不明显。但当规则的规模超过104以后,ACEA算法在内存上的消耗大幅度优于AC算法,当规则的规模超过105时,AC算法需要的内存几乎是ACEA算法的10倍。[〇〇47]图3为第二组数据的实施结果。由此可知,在规则的规模小于104时,ACEA算法虽然略优于AC算法,但优势并不明显。但是在规则的规模增长到105甚至106时,ACEA算法在时间消耗上要明显优于AC算法。这两个算法在理论上时间复杂度相差不大且都是线性的,造成在规则规模庞大时ACEA算法能够表现优异的原因是因为当内存消耗过大时,会造成系统负担增加,会有额外的换页操作,从而严重影响性能。
【主权项】
1.一种面向邮件地址特征的邮件地址匹配方法,其特征是:(1)按照构建过程,构建n条邮件地址规则;(2) 随机生成一条邮件地址,将该邮件地址包括符在内的符之前的部分在AC自 动机构建的规则树中,进行匹配;(3)将该地址符之后的部分的域名部分,计算三种哈希函数的函数值,在哈希表中 进行查找。2.根据权利要求1所述的面向邮件地址特征的邮件地址匹配方法,其特征是所述构建 过程包括:1) 对于一条邮件地址规则,在构建时,包括符的符之前的部分按照AC自动机的 构建方式加入规则树中;2)对域名部分分别计算三种哈希函数的函数值;3)在节点增加索引,索引中实际存放的是域名部分经过三种哈希的三个哈希值,分 成三组存放,同时按照哈希值的大小排序;4)按照VLCBF_100算法的更新步骤,将域名部分存放到哈希表中。3.根据权利要求1或2所述的面向邮件地址特征的邮件地址匹配方法,其特征是三种哈 希函数为SDBMHash、RSHash以及JSHash,位数组大小为1.713m,其中m = nk/ln2,n为规则个 数。
【文档编号】H04L12/66GK106027369SQ201610300852
【公开日】2016年10月12日
【申请日】2016年5月9日
【发明人】玄世昌, 杨武, 王巍, 苘大鹏, 朱宇
【申请人】哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1