本發(fā)明涉及反垃圾郵件技術(shù)領(lǐng)域,尤其涉及基于郵件指紋對(duì)相同郵件進(jìn)行判定的方法。
背景技術(shù):
垃圾郵件(Spam)一直是郵件系統(tǒng)中的熱點(diǎn)問題,但一直沒有一個(gè)很明確的定義。人們經(jīng)過研究發(fā)現(xiàn)垃圾郵件有一個(gè)明顯的特征:重復(fù)大量地發(fā)送內(nèi)容相似或相同的郵件。針對(duì)這個(gè)特征,人們使用一系列的手段來拒收垃圾郵件。通過監(jiān)控郵件重復(fù)發(fā)送次數(shù),并設(shè)計(jì)一個(gè)閥值,當(dāng)投遞次數(shù)大于這個(gè)閥值時(shí),從而判斷該郵件很可能是垃圾郵件。通過比較郵件指紋(Mail Finger Print,郵件指紋,簡稱“MFP”)來判斷郵件是否是垃圾郵件。對(duì)已確定的垃圾郵件生成指紋(Finger Print,指紋,簡稱“FP”)并保存,將新郵件的指紋與其相比較,從而判斷郵件是否為垃圾郵件。
中國發(fā)明專利,授權(quán)公告號(hào)CN102323934B公開了“基于滑動(dòng)窗口的郵件指紋提取方法及郵件相似判斷方法”,其主要采用滑動(dòng)窗口塊的方法提取郵件正文摘要信息指紋及郵件正文指紋的方法提取郵件指紋,以通過兩種指紋來提取郵件的指紋。
這種現(xiàn)有技術(shù)中對(duì)垃圾郵件的發(fā)送者在封裝干擾信息時(shí)就存在一定的局限性,因?yàn)檫@種現(xiàn)有技術(shù)中無法對(duì)人為封裝入郵件的摘要或者正文部分的干擾信息,例如:亂碼、異形字符或者錯(cuò)位排版的文字或者包含文字的圖片等諸多復(fù)雜干擾有效識(shí)別,從而無法通過識(shí)別郵件的全部內(nèi)容作為郵件指紋信息來判斷兩份郵件是否為同一份郵件。只有當(dāng)兩份郵件的指紋信息相同時(shí),這兩封郵件極有可能是同一個(gè)垃圾郵件發(fā)送人所發(fā)送的垃圾郵件,從而為后期垃圾郵件的進(jìn)一步判斷操作及刪選操作提供科學(xué)參考。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于公開一種基于郵件指紋對(duì)相同郵件進(jìn)行判定的方法,用以對(duì)相同郵件實(shí)現(xiàn)高效判斷,為后期對(duì)接收的新郵件是否判定為垃圾郵件提供科學(xué)參考,提高對(duì)同一模板發(fā)送的垃圾郵件的識(shí)別效率。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于郵件指紋對(duì)相同郵件進(jìn)行判定的方法,包括以下步驟:
S1、提取垃圾郵件樣本中的郵件指紋,并對(duì)所述郵件指紋構(gòu)造出i個(gè)基礎(chǔ)指紋分詞;
S2、對(duì)基礎(chǔ)指紋分詞執(zhí)行至少一次組合,以構(gòu)造出j個(gè)變形指紋分詞;其中,i、j均取正整數(shù);
S3、對(duì)步驟S2中的變形指紋分詞作為垃圾郵件樣本的集合X,集合X的元素?cái)?shù)量為N;
S4、將待判定郵件按照上述步驟S1-S3執(zhí)行,以得到待判定郵件的集合Y,集合Y的元素?cái)?shù)量為M;
S5、將所述垃圾郵件樣本的集合X與待判定郵件樣本的集合Y中出現(xiàn)的相同元素進(jìn)行匹配并計(jì)數(shù),以得到重復(fù)度C;
S6、計(jì)算集合X與集合Y中所具有的相同元素的相似比例V,若相似比例V大于或者等于閾值K,則判定為相同郵件;若相似比例V小于設(shè)置閾值,則表示不同郵件;
其中,相似比例V的計(jì)算公式為:V=2*C/(N+M)*100%。
作為本發(fā)明的進(jìn)一步改進(jìn),郵件指紋包括純文本信息、即時(shí)通訊賬戶、包含@的字符串、包含http://的字符串、包含https://的字符串、包含url的字符串、包含制表符的字符串、包含中文繁體的字符串、包含IP地址的字符串。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟S1中還包括:對(duì)提取垃圾郵件樣本中的郵件指紋定義基礎(chǔ)指紋分詞的參數(shù)A=[y,z],其中y≥1,z≥y;以通過所述參數(shù)A對(duì)所述郵件指紋構(gòu)造出j個(gè)變形指紋分詞。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟S2中變形指紋分詞的字節(jié)數(shù)≥基礎(chǔ)指紋分詞的字節(jié)數(shù)。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟S1中在構(gòu)造基礎(chǔ)指紋分詞以及步驟S2中在構(gòu)造變形指紋分詞之前還包括對(duì)郵件指紋的預(yù)處理步驟,
所述預(yù)處理步驟包括:去除空格標(biāo)記的操作、去除回車標(biāo)記的操作以及去除換行標(biāo)記的操作;其中,
所述去除空格標(biāo)記的操作具體為:對(duì)內(nèi)容重組后的文本信息逐字符檢查,并對(duì)內(nèi)容重組后的文本信息中的ASCⅡ碼值為32的字符執(zhí)行刪除操作;
所述去除回車標(biāo)記的操作具體為:對(duì)內(nèi)容重組后的文本信息逐字符檢查,并對(duì)內(nèi)容重組后的文本信息中ASCⅡ碼值為10的字符執(zhí)行刪除操作;
所述去除換行標(biāo)記的操作具體為:對(duì)內(nèi)容重組后的文本信息逐字符檢查,并對(duì)內(nèi)容重組后的文本信息中ASCⅡ碼值為13的字符執(zhí)行刪除操作。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟S6中的閾值K取80%~100%。
作為本發(fā)明的進(jìn)一步改進(jìn),步驟S6中的閾值K取90%。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:在本發(fā)明中,實(shí)現(xiàn)了對(duì)待判定郵件的批量化對(duì)比處理,實(shí)現(xiàn)了對(duì)相同郵件實(shí)現(xiàn)高效判斷,對(duì)為后期對(duì)接收的新郵件是否判定為垃圾郵件提供了科學(xué)參考,提高了對(duì)同一模板發(fā)送的垃圾郵件的識(shí)別效率。
附圖說明
圖1為本發(fā)明基于郵件指紋對(duì)相同郵件進(jìn)行判定的方法的流程圖。
具體實(shí)施方式
下面結(jié)合附圖所示的各實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)說明,但應(yīng)當(dāng)說明的是,這些實(shí)施方式并非對(duì)本發(fā)明的限制,本領(lǐng)域普通技術(shù)人員根據(jù)這些實(shí)施方式所作的功能、方法、或者結(jié)構(gòu)上的等效變換或替代,均屬于本發(fā)明的保護(hù)范圍之內(nèi)。
現(xiàn)有技術(shù)中的對(duì)垃圾郵件的攔截系統(tǒng)或者攔截軟件在對(duì)目標(biāo)郵件進(jìn)行垃圾郵件判定過程中,無法對(duì)垃圾郵件發(fā)送者在郵件中添加的干擾信息進(jìn)行去除,從而極大影響了對(duì)垃圾郵件的過濾效果,甚至一些非垃圾郵件也會(huì)被認(rèn)定為垃圾郵件。本說明書具體方式部分所示出的各個(gè)應(yīng)用場景或者具體實(shí)現(xiàn)過程基僅是對(duì)本發(fā)明的示范性概述,并不能因此對(duì)本發(fā)明的保護(hù)范圍或者發(fā)明宗旨構(gòu)成限定。
請(qǐng)參圖1所示出的本發(fā)明基于郵件指紋對(duì)相同郵件進(jìn)行判定的方法的一種實(shí)施方式。在本實(shí)施方式中,基于郵件指紋對(duì)相同郵件進(jìn)行判定的方法,其特征在于,包括以下步驟:
首先,執(zhí)行步驟S1、提取垃圾郵件樣本中的郵件指紋,并對(duì)所述郵件指紋構(gòu)造出i個(gè)基礎(chǔ)指紋分詞。
垃圾郵件樣本是指已經(jīng)被判定為垃圾郵件的電子郵件,而郵件指紋是這些已經(jīng)被判定為垃圾郵件中的部分內(nèi)容或者全部內(nèi)容。具體的,所述郵件指紋包括純文本信息、即時(shí)通訊賬戶、包含@的字符串、包含http://的字符串、包含https://的字符串、包含url的字符串、包含制表符的字符串、包含中文繁體的字符串、包含IP地址的字符串。
純文本信息可以是簡體中文所構(gòu)成的句子、短語、詞組或者詩歌。即時(shí)通訊賬戶包括微博賬戶、微信賬戶、QQ賬戶、hotmail賬戶、Facebook賬戶等其他具有即時(shí)消息發(fā)送功能的互聯(lián)網(wǎng)賬戶。包含@的字符串可為abc@sina.com的字符串。其中“sina.com”是郵箱服務(wù)器名稱,“abc”是郵件發(fā)送者的賬戶信息。包含https://的字符串可以形成“http://www.xxxx.com”的字符串。
假設(shè),郵件指紋為“helloABCDEFG”,則經(jīng)過步驟S1處理后所形成的i個(gè)基礎(chǔ)指紋分詞為:“hello、A、B、C、D、E、F、G”;i=8。
所述步驟S1中在構(gòu)造基礎(chǔ)指紋分詞以及步驟S2中在構(gòu)造變形指紋分詞之前還包括對(duì)郵件指紋的預(yù)處理步驟,
所述預(yù)處理步驟包括:去除空格標(biāo)記的操作、去除回車標(biāo)記的操作以及去除換行標(biāo)記的操作;其中,
所述去除空格標(biāo)記的操作具體為:對(duì)內(nèi)容重組后的文本信息逐字符檢查,并對(duì)內(nèi)容重組后的文本信息中的ASCⅡ碼值為32的字符執(zhí)行刪除操作;
所述去除回車標(biāo)記的操作具體為:對(duì)內(nèi)容重組后的文本信息逐字符檢查,并對(duì)內(nèi)容重組后的文本信息中ASCⅡ碼值為10的字符執(zhí)行刪除操作;
所述去除換行標(biāo)記的操作具體為:對(duì)內(nèi)容重組后的文本信息逐字符檢查,并對(duì)內(nèi)容重組后的文本信息中ASCⅡ碼值為13的字符執(zhí)行刪除操作。
同時(shí),步驟S1還可包括對(duì)待判定郵件執(zhí)行劃分郵件正文中郵件指紋的操作。該操作具體如下所示。
將郵件正文文本轉(zhuǎn)換為Unicode字節(jié)編碼。根據(jù)Unicode編碼表,識(shí)別郵件正文文本內(nèi)容,如果內(nèi)容為連續(xù)的ASCII碼,且數(shù)據(jù)大小為65-90(大寫英文字符)或97-122(小寫英文字符),則識(shí)別為英文單詞,將其作為指紋單詞;如果數(shù)據(jù)大小為48-57,則識(shí)別為連續(xù)數(shù)字,將其作為指紋單詞;其他Unicode字符(例如中文字符)單獨(dú)作為一個(gè)基礎(chǔ)指紋分詞。將基礎(chǔ)指紋分詞按照獲取到的順序依次排列。
然后,執(zhí)行步驟S2、對(duì)基礎(chǔ)指紋分詞執(zhí)行至少一次組合,以構(gòu)造出j個(gè)變形指紋分詞;其中,i、j均取正整數(shù)。i與j沒有大小的限定。
變形指紋分詞是從上述郵件指紋經(jīng)過步驟S1處理后所形成的j個(gè)基礎(chǔ)指紋分詞中所提取的若干呈連續(xù)狀態(tài)或者呈間隔狀態(tài)的字符串。
變形指紋分詞的規(guī)則定義如下所示。
變形指紋分詞的參數(shù)A=[y,z],其中y≥1,z≥y;以通過所述參數(shù)A對(duì)所述郵件指紋構(gòu)造出j個(gè)變形指紋分詞。y表示至少取y個(gè)連續(xù)狀態(tài)或者呈間隔狀態(tài)的單詞形成變形指紋分詞,其中z表示最多取z個(gè)連續(xù)狀態(tài)或者呈間隔狀態(tài)的單詞形成變形指紋分詞。
例如:郵件正文文本如下:“hello ABCDEFG”。此時(shí),i=8。需要說明的是,在本實(shí)施方式中,“hello”可以是英文單詞,也可也為漢語拼音,也可為希臘字母;“A”、“B”、“C”、“D”、“E”、“F”、“G”中的每一個(gè)英文字母可指代為一個(gè)漢字,也可指代為一個(gè)英文單詞,也可指代為一個(gè)希臘字母。
設(shè)定變形指紋分詞的參數(shù)A=[1,2],對(duì)此郵件指紋的基礎(chǔ)指紋分詞的處理結(jié)果為:hello、A、B、C、D、E、F、G、helloA、AB、BC、CD、DE、EF、FG。此時(shí),j=15。
設(shè)定變形指紋分詞的參數(shù)A=[2,3],對(duì)此郵件指紋的基礎(chǔ)指紋分詞的處理結(jié)果為:
helloA、AB、BC、CD、DE、EF、FG、helloAB、ABC、BCD、CDE、DEF、EFG。此時(shí),j=13。
設(shè)定變形指紋分詞的參數(shù)A=[1,3],對(duì)此郵件指紋的基礎(chǔ)指紋分詞的處理結(jié)果為:
hello、A、B、C、D、E、F、G、helloA、AB、BC、CD、DE、EF、FG、helloAB、ABC、BCD、CDE、DEF、EFG。此時(shí),j=21。
設(shè)定變形指紋分詞的參數(shù)A=[3,4],對(duì)此郵件指紋的基礎(chǔ)指紋分詞的處理結(jié)果為:
helloAB、ABC、BCD、CDE、DEF、EFG、helloABC、ABCD、BCDE、CDEF、DEFG。此時(shí),j=11。
設(shè)定變形指紋分詞的參數(shù)A=[3,3],對(duì)此郵件指紋的基礎(chǔ)指紋分詞的處理結(jié)果為:
helloAB、ABC、BCD、CDE、DEF、EFG。此時(shí),j=6。
設(shè)定變形指紋分詞的參數(shù)A=[2,2],對(duì)此郵件指紋的基礎(chǔ)指紋分詞的處理結(jié)果為:
helloA、AB、BC、CD、DE、EF、FG。此時(shí),j=7。
設(shè)定變形指紋分詞的參數(shù)A=[8,8],對(duì)此郵件指紋的基礎(chǔ)指紋分詞的處理結(jié)果為:
helloABCDEFG。此時(shí),j=1。
以此類推,以獲得j個(gè)變形指紋分詞。
當(dāng)然需要說明的是,在本實(shí)施方式中,由基礎(chǔ)指紋分詞所執(zhí)行的變形處理是指,對(duì)基礎(chǔ)指紋分詞以連續(xù)的方式對(duì)基礎(chǔ)郵件分詞進(jìn)行至少一次組合,以構(gòu)造出j個(gè)變形指紋分詞。在構(gòu)造變形指紋分詞時(shí),可順序組合,也可逆序組合,也可順序連續(xù)組合,也可順序間隔組合,也可逆序連續(xù)組合,也可逆序間隔組合。
當(dāng)然,也可以采取間隔的方式執(zhí)行至少一次順序組合。例如,將上述基礎(chǔ)指紋分詞“hello、A、B、C、D、E、F、G”采取間隔一個(gè)基礎(chǔ)郵件分詞的方式執(zhí)行變形處理且每個(gè)被構(gòu)造出的變形指紋分詞并不要求字節(jié)數(shù)一致。例如,可將上述步驟S1中所獲得的基礎(chǔ)指紋分詞構(gòu)造成如下所示的變形指紋分詞:“helloB、AC、DF、EG”或者“helloAC、ABD、BCE、CDF、DEG、EF#(#為通配符)”。當(dāng)然,也可采用間隔兩個(gè)或者兩個(gè)以上的基礎(chǔ)郵件分詞的方式執(zhí)行變形處理,以構(gòu)造出變形指紋分詞。
進(jìn)一步的,在本實(shí)施方式中,所述步驟S2中變形指紋分詞的字節(jié)數(shù)≥基礎(chǔ)指紋分詞的字節(jié)數(shù)。此種技術(shù)手段可對(duì)郵件指紋中出現(xiàn)中文字符與英文字符混搭時(shí)的應(yīng)用場景,提高了對(duì)垃圾郵件發(fā)送者在發(fā)送的垃圾郵件中人為封裝的干擾信息,從而提高了對(duì)相同郵件的判定準(zhǔn)確率。
然后,執(zhí)行步驟S3、對(duì)步驟S2中的變形指紋分詞作為垃圾郵件樣本的集合X,集合X的元素?cái)?shù)量為N。
然后,執(zhí)行步驟S4、將待判定郵件按照上述步驟S1-S3執(zhí)行,以得到待判定郵件的集合Y,集合Y的元素?cái)?shù)量為M。
然后,執(zhí)行步驟S5、將所述垃圾郵件樣本的集合X與待判定郵件樣本的集合Y中出現(xiàn)的相同元素進(jìn)行匹配并計(jì)數(shù),以得到重復(fù)度C。
最后,執(zhí)行步驟S6、計(jì)算集合X與集合Y中所具有的相同元素的相似比例V,若相似比例V大于或者等于閾值K,則判定為相同郵件;若相似比例V小于設(shè)置閾值,則表示不同郵件;
其中,相似比例V的計(jì)算公式為:V=2*C/(N+M)*100%。
設(shè)已經(jīng)被判定為垃圾郵件中的變形指紋分詞的集合X={a,b,c,……n},集合X的元素?cái)?shù)量為N;設(shè)待判定郵件的變形指紋分詞的集合Y={a’,b’,c’,……n’},集合Y的元素?cái)?shù)量為M。其中,該重復(fù)度C的初始值取0。
計(jì)算相同元素?cái)?shù)量過程如下所示。
依次獲取集合Y中的每個(gè)元素(即變形指紋分詞),具體實(shí)現(xiàn)過程參上述步驟S1至步驟S3所示。然后,將集合Y中的每個(gè)元素與集合X中所有的元素進(jìn)行對(duì)比。如果集合Y中的某個(gè)元素在集合X中出現(xiàn),則從集合Y中刪除該元素,并重復(fù)度C加1;反復(fù)執(zhí)行上述步驟,直到對(duì)比至集合Y中的最后一個(gè)元素。
求兩封郵件中關(guān)于變形指紋分詞的相似比例V。
如果N=0且M=0,則相似比例V=1,則表明兩份郵件為相同郵件。因此可將待判定郵件判定為垃圾郵件。否則,相似比例V的計(jì)算公式如下所示:
V=2*C/(N+M)*100%。
閾值K,如果相似比例V≥閾值K,則表示兩份郵件為相同郵件,否則,表示兩份郵件不相同。
所述步驟S6中的閾值K取80%~100%,并進(jìn)一步優(yōu)選為90%。
在本實(shí)施方式中,實(shí)現(xiàn)了對(duì)待判定郵件的批量化對(duì)比處理,實(shí)現(xiàn)了對(duì)相同郵件實(shí)現(xiàn)高效判斷,對(duì)為后期對(duì)接收的新郵件是否判定為垃圾郵件提供了科學(xué)參考,提高了對(duì)同一模板發(fā)送的垃圾郵件的識(shí)別效率。
上文所列出的一系列的詳細(xì)說明僅僅是針對(duì)本發(fā)明的可行性實(shí)施方式的具體說明,它們并非用以限制本發(fā)明的保護(hù)范圍,凡未脫離本發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本發(fā)明。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。
此外,應(yīng)當(dāng)理解,雖然本說明書按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個(gè)整體,各實(shí)施例中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。