一種面向郵件地址特征的郵件地址匹配方法
【專利摘要】本發(fā)明提供的是一種面向郵件地址特征的郵件地址匹配方法。(1)按照構(gòu)建過程,構(gòu)建n條郵件地址規(guī)則;(2)隨機生成一條郵件地址,將該郵件地址包括“@”符在內(nèi)的“@”符之前的部分在AC自動機構(gòu)建的規(guī)則樹中,進行匹配;(3)將該地址“@”符之后的部分的域名部分,計算三種哈希函數(shù)的函數(shù)值,在哈希表中進行查找。本發(fā)明提出的基于動態(tài)存儲的緩沖區(qū)方法,考慮了郵件地址的用戶名部分數(shù)量較大,較為分散,且域名部分數(shù)量大但是種類比較少的特點,充分利用的多模式匹配算法和哈希算法的優(yōu)勢。能夠在大規(guī)模郵件地址匹配時擁有良好的內(nèi)存性能表現(xiàn)和時間性能變現(xiàn)。
【專利說明】
一種面向郵件地址特征的郵件地址匹配方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及的是一種郵件網(wǎng)關(guān),主要是一種郵件地址匹配方法?!颈尘凹夹g(shù)】
[0002]在郵件網(wǎng)關(guān)領(lǐng)域中,郵件地址匹配技術(shù)作為郵件網(wǎng)關(guān)技術(shù)中的基礎(chǔ)發(fā)揮著不可估量的作用。在當今互聯(lián)網(wǎng)日益復雜的今天,隨著網(wǎng)絡(luò)流量的逐漸增大,如何使得郵件網(wǎng)關(guān)在應對大流量網(wǎng)絡(luò)時,能夠擁有更高的處理速度,以及較好的內(nèi)存消耗表現(xiàn)是當前郵件網(wǎng)關(guān)領(lǐng)域的主要需求。
[0003]目前對于郵件網(wǎng)關(guān)而言,絕大多數(shù)進行郵件地址匹配的方法選用的都是各類多模式匹配算法。以經(jīng)典AC算法為例,采用AC算法進行郵件地址匹配可以獲得較好的時耗上的效率。但是AC算法在模式規(guī)則集數(shù)量較大時,需要的內(nèi)存比較大。為此,有針對AC算法的各類改進。主要是針對了橫向的扇區(qū)壓縮或縱向的壓縮。壓縮后的AC改進算法雖然在內(nèi)存消耗上擁有較大的提升。但是一方面,AC的改進算法往往會增加匹配的時間復雜度,同時實現(xiàn)方法也會變得較為復雜;另一方面,這些多模式匹配算法都是通用方法,沒能針對郵件地址的組成特征,因此有進一步的性能提升的可能。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種能夠有效處理大規(guī)模郵件地址規(guī)則下的郵件地址匹配,擁有良好的內(nèi)存和時間上的性能消耗的面向郵件地址特征的郵件地址匹配方法。
[0005]本發(fā)明的目的是這樣實現(xiàn)的:
[0006](1)按照構(gòu)建過程,構(gòu)建n條郵件地址規(guī)則;[〇〇〇7] (2)隨機生成一條郵件地址,將該郵件地址包括符在內(nèi)的符之前的部分在 AC自動機構(gòu)建的規(guī)則樹中,進行匹配;
[0008] (3)將該地址符之后的部分的域名部分,計算三種哈希函數(shù)的函數(shù)值,在哈希表中進行查找。
[0009]本發(fā)明還可以包括:
[0010]1、所述構(gòu)建過程包括:
[0011] 1)對于一條郵件地址規(guī)則,在構(gòu)建時,包括符的符之前的部分按照AC自動機的構(gòu)建方式加入規(guī)則樹中;
[0012]2)對域名部分分別計算三種哈希函數(shù)的函數(shù)值;[0〇13]3)在節(jié)點增加索引,索引中實際存放的是域名部分經(jīng)過三種哈希的三個哈希值,分成三組存放,同時按照哈希值的大小排序;
[0014]4)按照VLCBF_100算法的更新步驟,將域名部分存放到哈希表中。
[0015]2、三種哈希函數(shù)為SDBMHash、RSHash以及JSHash,位數(shù)組大小為1.713111,其中111 = nk/ln2,n為規(guī)則個數(shù)。
[0016]本發(fā)明針對郵件網(wǎng)關(guān)使用現(xiàn)有的多模式匹配算法不能有效針對郵件地址的組成特點和分布特征的缺點而提出。通過結(jié)合了多模式匹配算法的特點和哈希算法的特點,致力于在郵件網(wǎng)關(guān)領(lǐng)域里處理大規(guī)模郵件地址規(guī)則的匹配,能夠有效處理大規(guī)模郵件地址規(guī)貝1J下的郵件地址匹配。擁有良好的內(nèi)存和時間上的性能消耗。能夠適應當下大規(guī)模流量、大規(guī)模郵件地址規(guī)則下郵件網(wǎng)關(guān)在內(nèi)存消耗和時間消耗上的需求。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
[0018]本發(fā)明提出的基于動態(tài)存儲的緩沖區(qū)方法,考慮了郵件地址的用戶名部分數(shù)量較大,較為分散,且域名部分數(shù)量大但是種類比較少的特點,充分利用的多模式匹配算法和哈希算法的優(yōu)勢。能夠在大規(guī)模郵件地址匹配時擁有良好的內(nèi)存性能表現(xiàn)和時間性能變現(xiàn)?!靖綀D說明】
[0019]圖1為面向郵件地址特征的郵件地址匹配方法(ACEA算法)的示意圖。
[0020]圖2不同規(guī)則數(shù)下ACEA算法和AC算法的內(nèi)存性能比較。[0021 ]圖3不同規(guī)則數(shù)下ACEA算法和AC算法的時耗比較?!揪唧w實施方式】[〇〇22]下面舉例本發(fā)明進行詳細說明。
[0023]本發(fā)明的一種面向郵件地址過濾的郵件地址匹配方法,基于以下的構(gòu)建過程,具體包括以下組成部分。[〇〇24]①基于AC的自動機存儲區(qū) [〇〇25] ②基于VLCBF的哈希存儲區(qū)
[0026] 1)按照郵件地址的符進行分割。用戶名部分相對分散,采用AC算法構(gòu)建自動機。其中,字符集大小為57個(26個英文字母、10個數(shù)字、20個特殊字符以及符)。@字符實際不需要節(jié)點進行存儲,僅需將用戶名的最后一個字符的存儲標志進行標記即可。
[0027]2)而針對域名部分的特點,數(shù)量比較多但是種類很少,這種特點很適合使用該哈希算法,因此域名部分采用哈希算法進行存儲。其中,哈希算法選用的是緩沖區(qū)為100的 VLCBF_100算法。哈希函數(shù)個數(shù)k = 3,哈希函數(shù)分別選擇SDBMHash,RSHash以及JSHash。位數(shù)組大小為1.713111,其中111 = 111^/1112,11為規(guī)則個數(shù)。
[0028]3)自動機和哈希算法之間通過排序和二分查找的方式進行關(guān)聯(lián)和索引。在用戶名的末尾節(jié)點處,增加一個當前用戶名的域名哈希值索引。該數(shù)組按照哈希值進行排序,再查找時通過二分方式查找到域名對應的哈希值。
[0029]構(gòu)建過程如下:
[0030]1)對于一條郵件地址規(guī)則,在構(gòu)建時,符之前的部分(包括符)按照AC自動機的構(gòu)建方式加入規(guī)則樹中。
[0031]2)對域名部分分別計算三種哈希函數(shù)的函數(shù)值。[〇〇32] 3)在節(jié)點增加索引,索引中實際存放的是域名部分經(jīng)過三種哈希的三個哈希值,分成三組存放,同時按照哈希值的大小排序。[〇〇33]4)按照VLCBF_100算法的更新步驟,將域名部分存放到哈希表中。[〇〇34] 匹配過程如下:
[0035]1)按照構(gòu)建過程,構(gòu)建n條郵件地址規(guī)則。
[0036] 2)隨機生成一條郵件地址,將該地址符之前的部分(包括符),在AC自動機構(gòu)建的規(guī)則樹中,進行匹配。[〇〇37] 3)將該地址符之后的部分(不包括符)的域名部分,計算三種哈希函數(shù)的函數(shù)值,在哈希表中進行查找。[〇〇38]下面結(jié)合具體實施例說明本發(fā)明的效果。
[0039](D實例環(huán)境[〇〇4〇] 實例采用服務(wù)器級硬件設(shè)備,cpu配置為Intel(R)Xeon(R)CPU E5-263000 2 ? 30GHz,內(nèi)存大小16G,操作系統(tǒng)選用Debian GNU/Linux 6 ? 0,Linux內(nèi)核版本為2 ? 6 ? 32-5-1 inx-amd64,實現(xiàn)語言使用C語言,編譯器選用GCC編譯器,版本為gcc-4.4.6。[〇〇411(2)實施方案
[0042]實例兩組數(shù)據(jù)進行,數(shù)據(jù)為隨機生成的郵件地址,分別比對AC算法和ACEA算法的內(nèi)存消耗和時間消耗。兩組數(shù)據(jù)的實施過程如下:
[0043] 1)第一組用于測試規(guī)則的數(shù)量對AC算法和ACEA算法在內(nèi)存消耗上的影響。設(shè)定規(guī)則長度為20,其中用戶名長度為9,域名長度為10。用戶名數(shù)量從10到105,域名數(shù)量為10,規(guī)則數(shù)從1〇2到1〇6。記錄規(guī)則數(shù)量從1〇2到1〇6下AC算法的實現(xiàn)和ACEA算法的實現(xiàn)內(nèi)存消耗。
[0044]2)第二組用于測試規(guī)則數(shù)量對AC算法和ACEA算法在時間消耗上的影響。規(guī)則長度為20,規(guī)則數(shù)從102到106,使用長度為20的隨機生成的郵件地址進行10000次匹配。測試AC算法和ACEA算法在每種數(shù)量級的規(guī)則下,匹配過程各自需要的時間。[〇〇45](3)實施結(jié)果
[0046]圖2為第一組數(shù)據(jù)的實施結(jié)果。由此可知,當規(guī)則的規(guī)模在103以下時,由于規(guī)則數(shù)較少,ACEA算法在內(nèi)存上的優(yōu)勢并不明顯。但當規(guī)則的規(guī)模超過104以后,ACEA算法在內(nèi)存上的消耗大幅度優(yōu)于AC算法,當規(guī)則的規(guī)模超過105時,AC算法需要的內(nèi)存幾乎是ACEA算法的10倍。[〇〇47]圖3為第二組數(shù)據(jù)的實施結(jié)果。由此可知,在規(guī)則的規(guī)模小于104時,ACEA算法雖然略優(yōu)于AC算法,但優(yōu)勢并不明顯。但是在規(guī)則的規(guī)模增長到105甚至106時,ACEA算法在時間消耗上要明顯優(yōu)于AC算法。這兩個算法在理論上時間復雜度相差不大且都是線性的,造成在規(guī)則規(guī)模龐大時ACEA算法能夠表現(xiàn)優(yōu)異的原因是因為當內(nèi)存消耗過大時,會造成系統(tǒng)負擔增加,會有額外的換頁操作,從而嚴重影響性能。
【主權(quán)項】
1.一種面向郵件地址特征的郵件地址匹配方法,其特征是:(1)按照構(gòu)建過程,構(gòu)建n條郵件地址規(guī)則;(2) 隨機生成一條郵件地址,將該郵件地址包括符在內(nèi)的符之前的部分在AC自 動機構(gòu)建的規(guī)則樹中,進行匹配;(3)將該地址符之后的部分的域名部分,計算三種哈希函數(shù)的函數(shù)值,在哈希表中 進行查找。2.根據(jù)權(quán)利要求1所述的面向郵件地址特征的郵件地址匹配方法,其特征是所述構(gòu)建 過程包括:1) 對于一條郵件地址規(guī)則,在構(gòu)建時,包括符的符之前的部分按照AC自動機的 構(gòu)建方式加入規(guī)則樹中;2)對域名部分分別計算三種哈希函數(shù)的函數(shù)值;3)在節(jié)點增加索引,索引中實際存放的是域名部分經(jīng)過三種哈希的三個哈希值,分 成三組存放,同時按照哈希值的大小排序;4)按照VLCBF_100算法的更新步驟,將域名部分存放到哈希表中。3.根據(jù)權(quán)利要求1或2所述的面向郵件地址特征的郵件地址匹配方法,其特征是三種哈 希函數(shù)為SDBMHash、RSHash以及JSHash,位數(shù)組大小為1.713m,其中m = nk/ln2,n為規(guī)則個 數(shù)。
【文檔編號】H04L12/66GK106027369SQ201610300852
【公開日】2016年10月12日
【申請日】2016年5月9日
【發(fā)明人】玄世昌, 楊武, 王巍, 苘大鵬, 朱宇
【申請人】哈爾濱工程大學