專利名稱:一種電子郵件網(wǎng)關(guān)類系統(tǒng)郵件賬戶維護(hù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶的維護(hù)方法。
(二)
背景技術(shù):
電子郵件憑借低廉、簡單、快捷的優(yōu)勢已經(jīng)成為人們工作和生活中的重要 通信方式,但人們在享受電子郵件提供諸多便捷之時(shí),也在忍受著它的副產(chǎn)品 所帶來了的痛苦,即互聯(lián)網(wǎng)上垃圾郵件泛濫成災(zāi),并且近幾年有愈演愈烈的趨 勢。
目前對垃圾郵件的治理還是集中在依靠垃圾郵件過濾技術(shù)。而基于網(wǎng)關(guān)的 電子郵件過濾技術(shù)成為從根本上遏制垃圾郵件的有效方法。該技術(shù)通過將所有 經(jīng)過網(wǎng)關(guān)的電子郵件進(jìn)行分析,在判斷是否投遞,可以減少垃圾郵件在網(wǎng)絡(luò)上 傳輸所占用的帶寬。
但目前基于網(wǎng)關(guān)類的電子郵件過濾產(chǎn)品由于其和真正的電子郵件系統(tǒng)隔 離,無法獲得其郵件帳戶信息,因此對郵件帳戶的管理缺乏有效的手段。此外, 基于字典的垃圾郵件方法,通過構(gòu)造郵件地址向大量郵件服務(wù)器發(fā)送垃圾郵件。 因此,實(shí)現(xiàn)一種基于網(wǎng)關(guān)的郵件賬戶維護(hù)技術(shù)十分重要。
(三)
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶維護(hù)的方法。 本發(fā)明的目的是這樣實(shí)現(xiàn)的
1 )采用SMTP協(xié)議和POP3協(xié)議探測郵件帳戶是否存在;
2) 采用散列結(jié)構(gòu)和時(shí)間鏈表結(jié)構(gòu)存儲郵件帳戶信息;
3) 經(jīng)過固定周期時(shí)間將散列結(jié)構(gòu)存儲到文件;
4) 支持從文件系統(tǒng)中加載郵件帳戶信息;
5) 郵件帳戶是否存在判定方法。
所述的采用SMTP協(xié)議探測方法為l)將網(wǎng)關(guān)接收到的電子郵件信息采用 SMTP協(xié)議發(fā)送到目標(biāo)郵件系統(tǒng);2)如果投遞成功則將證明該郵件帳戶存在, 否則,郵件帳戶不存在。所述的采用POP3協(xié)議探測方法為1)從網(wǎng)關(guān)收到的
4電子郵件中提起出目標(biāo)賬戶信息username; 2)采用POP3協(xié)議發(fā)送User usemame,如果收到用戶名不存在信息,則郵件帳戶不存在;否則,郵件帳戶 存在。
所述的采用散列結(jié)構(gòu)和時(shí)間鏈表結(jié)構(gòu)存儲郵件帳戶信息的方法是1)將郵 件帳戶"@"字段之前提取2個字節(jié),如果不足用比特"00000000"補(bǔ)齊2) 在提取的信息中去掉每個字節(jié)的第一個比特,這樣構(gòu)成由14個比特構(gòu)成的比特 串;3)根據(jù)14比特構(gòu)成二進(jìn)制的數(shù)值作為散列表的入口; 4)在散列表中查 找到這一行的最后一個郵件信息,并將地址和時(shí)間信息寫入散列結(jié)構(gòu)中,并將 前一個接點(diǎn)的后續(xù)指針指向該接點(diǎn),時(shí)間節(jié)點(diǎn)末指針也指向該節(jié)點(diǎn)。
所述的經(jīng)過固定周期時(shí)間將散列結(jié)構(gòu)存儲到文件的方法是1)從散列表中
依據(jù)時(shí)間鏈提取出郵件信息和時(shí)間信息;2)將郵件信息和時(shí)間信息存儲到指定 目錄中的"SPAM.txt"文件中的一行中,并在結(jié)尾添加回車換行,即"\r\n"; 3)使用循環(huán)結(jié)構(gòu)將所有賬戶信息都存儲到該文件中。
所述的郵件帳戶是否存在判定的方法是1)從接收到的電子郵件信息中提 取出目標(biāo)郵件地址;2)將該郵件地址進(jìn)行散列(散列方法如前述相同);3) 在散列表中查找其是否存在,若存在則將郵件正常投遞,否則丟棄。
針對以上情況,本發(fā)明從郵件的目標(biāo)賬戶處罰,提出了電子郵件網(wǎng)關(guān)類系 統(tǒng)郵件帳戶維護(hù)的方法。
本發(fā)明是基于如下問題而設(shè)計(jì)的
基于網(wǎng)關(guān)類的電子郵件過濾產(chǎn)品由于其和真正的電子郵件系統(tǒng)隔離,無法 獲得其郵件帳戶信息,因此對郵件帳戶的管理缺乏有效的手段。此外,基于字
典的垃圾郵件方法,通過構(gòu)造郵件地址向大量郵件服務(wù)器發(fā)送垃圾郵件。因此, 實(shí)現(xiàn)一種基于網(wǎng)關(guān)的郵件賬戶維護(hù)技術(shù)具有十分重要的意義。
本發(fā)明的主要技術(shù)特征體現(xiàn)在
1)不需要借助其他特別算法和協(xié)議
從郵件系統(tǒng)中獲取賬戶信息, 一般需要采用特定的技術(shù)和額外的約定,將帳 戶信息傳遞給網(wǎng)關(guān)系統(tǒng),本技術(shù)采用已有的電子郵件協(xié)議進(jìn)行郵件探測,不需要 進(jìn)行額外的開發(fā)和設(shè)計(jì)。
具體技術(shù)路線是l.發(fā)送SMTP報(bào)文,測試目標(biāo)郵件帳戶是否存在;2.發(fā)送
5POP3報(bào)文測試郵件帳戶是否存在。
2)郵件帳戶探測可以自動按時(shí)間實(shí)時(shí)更新
具體技術(shù)路線1.根據(jù)郵件帳戶信息建立的散列結(jié)構(gòu)中加入了時(shí)間鏈信息; 2)時(shí)間鏈按照時(shí)間先后順序組織,可以減少郵件信息的組織時(shí)間。
本發(fā)明的優(yōu)點(diǎn)在于可以同時(shí)為多臺郵件服務(wù)器的賬戶信息進(jìn)行管理;過 濾大量目標(biāo)地址不存在的垃圾郵件信息。
(四)
圖1散列表結(jié)構(gòu); 圖2時(shí)間鏈表結(jié)構(gòu);
圖3散列表與時(shí)間鏈表結(jié)合結(jié)構(gòu)
具體實(shí)施方式
下面結(jié)合附圖舉例對本發(fā)明做更詳細(xì)地描述
1) 郵件帳戶探測方法
基于網(wǎng)關(guān)類的電子郵件過濾產(chǎn)品由于其和真正的電子郵件系統(tǒng)隔離,無法獲 得其郵件帳戶信息,因此對郵件帳戶的管理缺乏有效的手段。從郵件系統(tǒng)中獲取 賬戶信息, 一般需要采用特定的技術(shù)和額外的約定,將帳戶信息傳遞給網(wǎng)關(guān)系統(tǒng), 本技術(shù)采用已有的電子郵件協(xié)議進(jìn)行郵件探測,不需要進(jìn)行額外的開發(fā)和設(shè)計(jì)。 *發(fā)送SMTP報(bào)文,測試目標(biāo)郵件帳戶是否存在;具體實(shí)現(xiàn)如下1)發(fā) 送"helo目標(biāo)服務(wù)器"報(bào)文,并得到確認(rèn);2)發(fā)送"mail from:源地 址報(bào)文",并得到確認(rèn);3)發(fā)送"rcptto:目標(biāo)地址"報(bào)文,如果受到 "550 no such user here"則證明該賬戶不存在,否則存在。 *發(fā)送POP3報(bào)文測試郵件帳戶是否存在具體實(shí)現(xiàn)如下1)建立POP3 連接,收到"+OK……"確認(rèn);2)發(fā)送"User目的地址"報(bào)文,如 果收到"+OK......"證明該賬戶存在,否則不存在。
2) 郵件帳戶信息管理方法
針對郵件帳戶信息,需要有一種高效的動態(tài)管理方法。這種方法要求能夠 適應(yīng)賬戶的添加、刪除等操作,并且要求能夠在較短的時(shí)間內(nèi)快速匹配過程。
本技術(shù)采用散列表和時(shí)間鏈表結(jié)構(gòu)相結(jié)合的方法。其中散列表結(jié)構(gòu)如圖
1所示、時(shí)間鏈表結(jié)構(gòu)如圖2所示和散列表結(jié)構(gòu)和時(shí)間鏈表結(jié)合如圖3所示。散列表對具有相同散列值的郵件地址進(jìn)行管理。時(shí)間鏈表結(jié)構(gòu)將所有地址信息 用時(shí)間鏈連接起來,保證信息按照順序管理,這兩種方法結(jié)合即達(dá)到了將郵件 帳戶信息組織起來的目的,支持快速匹配,又實(shí)現(xiàn)了實(shí)時(shí)的郵件帳戶更新。
工作原理如圖3所示,每個郵件地址信息通過雙向散列表組織起來,每個 結(jié)構(gòu)又添加了兩個時(shí)間鏈表指針,這樣可以增加檢索和節(jié)點(diǎn)調(diào)整地效率。
主要對散列表的操作分為以下幾種
1. 在散列表中添加一個節(jié)點(diǎn),分為以下幾步a)計(jì)算出節(jié)點(diǎn)X所在的散 列地址,并找到最后一個節(jié)點(diǎn)Y; b)用Y節(jié)點(diǎn)的后項(xiàng)位置指針指向X 節(jié)點(diǎn),將X節(jié)點(diǎn)的前項(xiàng)位置指針指向Y節(jié)點(diǎn);C)用時(shí)間尾指針節(jié)點(diǎn)Z 的時(shí)間后項(xiàng)指針指向X節(jié)點(diǎn),用X節(jié)點(diǎn)的前項(xiàng)時(shí)間指針指向Z節(jié)點(diǎn), 并將時(shí)間位指針節(jié)點(diǎn)指向X節(jié)點(diǎn)。
2. 在散列表中去掉一個節(jié)點(diǎn),分為以下幾步a)計(jì)算出刪除節(jié)點(diǎn)X所在 的位置;b)用X節(jié)點(diǎn)的位置前項(xiàng)節(jié)點(diǎn)的后續(xù)指針指向X節(jié)點(diǎn)的位置后 項(xiàng)節(jié)點(diǎn),并將X節(jié)點(diǎn)的位置后項(xiàng)節(jié)點(diǎn)的前項(xiàng)指針指向X節(jié)點(diǎn)的位置前 項(xiàng)節(jié)點(diǎn);c)用X節(jié)點(diǎn)的時(shí)間前項(xiàng)節(jié)點(diǎn)的后續(xù)指針指向X節(jié)點(diǎn)的時(shí)間后 項(xiàng)節(jié)點(diǎn),并將X節(jié)點(diǎn)的時(shí)間后項(xiàng)節(jié)點(diǎn)的前項(xiàng)指針指向X節(jié)點(diǎn)的時(shí)間前 項(xiàng)節(jié)點(diǎn);
3. 更新時(shí)間節(jié)點(diǎn),分為以下幾個步驟1)當(dāng)判斷時(shí)間達(dá)到時(shí)間頭指針?biāo)?指向的節(jié)點(diǎn)X時(shí),首先判斷該節(jié)點(diǎn)所存儲的地址信息是否有效。2)如 果無效,則將該節(jié)點(diǎn)刪除,按照在散列表中去掉一個節(jié)點(diǎn)步驟進(jìn)行; 如果有效,將時(shí)間頭指針指向X節(jié)點(diǎn)的時(shí)間后續(xù)節(jié)點(diǎn),將X節(jié)點(diǎn)的時(shí) 間前項(xiàng)指針指向時(shí)間尾節(jié)點(diǎn)指向節(jié)點(diǎn)Y,并將節(jié)點(diǎn)Y的時(shí)間后項(xiàng)指針指 向X節(jié)點(diǎn),將時(shí)間尾指針指向X節(jié)點(diǎn)。
2)定時(shí)備份與恢復(fù)方法
由于散列表結(jié)構(gòu)比較復(fù)雜,如果每次都重新生成散列表結(jié)構(gòu),則會對系 統(tǒng)會造成很大的負(fù)擔(dān),因此采用定時(shí)備份的方法,將散列表中的信息定時(shí) 存儲的文件系統(tǒng)中,存儲策略按照時(shí)間順序進(jìn)行。文件名為"SPAM.txt"
例如
webmaster@sina.com 2008-11-18 20:20:20 webmaster@163.com 2008-11-18 20.22.20每一個條記錄中的地址信息和時(shí)間信息用空格分開,每條信息用回車換 行分開。由于在存儲過程中文件描述符在打開狀態(tài),程序的突然退出會造 成信息丟失,因此在備份的過程中,將信息存儲到臨時(shí)文件中,如
"SPAMl.txt",中,等到所有信息都保存完畢,再將用文件"SPAMl.txt" 覆蓋文件"SPAM.txt",最后將"SPAMl.txt"文件刪除。
當(dāng)系統(tǒng)重新啟動的時(shí)候,要從文件中恢復(fù)散列表結(jié)構(gòu),由于文件中采用 按照時(shí)間順序存儲,所以按照郵件帳戶信息管理方法中"在散列表中添加 一個節(jié)點(diǎn)"步驟進(jìn)行。
權(quán)利要求
1、一種電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶維護(hù)方法,其特征是1)采用SMTP協(xié)議和POP3協(xié)議探測郵件帳戶是否存在;2)采用散列結(jié)構(gòu)和時(shí)間鏈表結(jié)構(gòu)存儲郵件帳戶信息;3)經(jīng)過固定周期時(shí)間將散列結(jié)構(gòu)存儲到文件;4)支持從文件系統(tǒng)中加載郵件帳戶信息;5)郵件帳戶是否存在判定方法。
2、 根據(jù)權(quán)利要求1所述的電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶維護(hù)方法,其特征 是所述的采用SMTP協(xié)議探測方法為1)將網(wǎng)關(guān)接收到的電子郵件信息采用 SMTP協(xié)議發(fā)送到目標(biāo)郵件系統(tǒng);2)如果投遞成功則判定該郵件帳戶存在,否 則,郵件帳戶不存在;所述的采用POP3協(xié)議探測方法為l)從網(wǎng)關(guān)收到的電 子郵件中提起出目標(biāo)賬戶信息usemame;2)采用POP3協(xié)議發(fā)送User username, 如果收到用戶名不存在信息,則判定郵件帳戶不存在;否則,郵件帳戶存在。
3、 根據(jù)權(quán)利要求2所述的電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶維護(hù)方法,其特征 是所述的采用散列結(jié)構(gòu)和時(shí)間鏈表結(jié)構(gòu)存儲郵件帳戶信息的方法是l)將郵 件帳戶"@"字段之前提取2個字節(jié),如果不足用比特"00000000"補(bǔ)齊;2) 在提取的信息中去掉每個字節(jié)的第一個比特,這樣構(gòu)成由14個比特構(gòu)成的比特 串;3)根據(jù)14比特構(gòu)成二進(jìn)制的數(shù)值作為散列表的入口; 4)在散列表中查找 到這一行的最后一個郵件信息,并將地址和時(shí)間信息寫入散列結(jié)構(gòu)中,并將前 一個接點(diǎn)的后續(xù)指針指向該接點(diǎn),時(shí)間節(jié)點(diǎn)末指針也指向該節(jié)點(diǎn)。
4、 根據(jù)權(quán)利要求3所述的電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶維護(hù)方法,其特征 是所述的經(jīng)過固定周期時(shí)間將散列結(jié)構(gòu)存儲到文件的方法是O從散列表中 依據(jù)時(shí)間鏈提取出郵件信息和時(shí)間信息;2)將郵件信息和時(shí)間信息存儲到指定 目錄中的"SPAM.txt"文件中的一行中,并在結(jié)尾添加回車換行,艮卩"\r\n"; 3)使用循環(huán)結(jié)構(gòu)將所有賬戶信息都存儲到該文件中。
5、 根據(jù)權(quán)利要求4所述的電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶維護(hù)方法,其特征 是所述的支持從文件系統(tǒng)中加載郵件帳戶信息為l)打開文件"SPAM.txt", 并從中獲取一行,以"\r\n"為分隔符;2)從提取出的信息中分離出郵件地址和時(shí)間信息,將這一行信息添加到散列表中;3)采用SMTP協(xié)議和POP3協(xié)議 探測郵件帳戶是否存在。
6、根據(jù)權(quán)利要求5所述的電子郵件網(wǎng)關(guān)類系統(tǒng)郵件帳戶維護(hù)方法,其特征 是所述的郵件帳戶是否存在判定的方法是1)從接收到的電子郵件信息中提 取出目標(biāo)郵件地址;2)將該郵件地址進(jìn)行散列;3)在散列表中査找其是否存 在,若存在則將郵件正常投遞,否則丟棄。
全文摘要
本發(fā)明提供的是一種電子郵件郵件網(wǎng)關(guān)類系統(tǒng)郵件賬戶維護(hù)的方法。使用POP3協(xié)議和SMTP協(xié)議探測郵件帳戶信息,并將有效賬戶信息存儲在動態(tài)散列表中,通過時(shí)間滑動窗口維護(hù)信息的有效性,這樣當(dāng)發(fā)現(xiàn)投遞失敗的郵件則將其從散列表中丟棄,對于新增加的用戶在經(jīng)過滑動窗口的等待時(shí)間以后在重新進(jìn)行探測。在固定周期內(nèi),將散列結(jié)構(gòu)存儲到文件系統(tǒng)中,防止信息丟失,在系統(tǒng)意外重起時(shí),可以直接從文件加載。本發(fā)明的有點(diǎn)在于1)可以幫助郵件網(wǎng)關(guān)過濾掉大量賬戶不存在的郵件信息,降低了網(wǎng)關(guān)的負(fù)擔(dān),提高網(wǎng)關(guān)系統(tǒng)的利用率;2)支持在一個郵件網(wǎng)關(guān)中,同時(shí)管理多個郵件系統(tǒng),減少了系統(tǒng)的部署成本。
文檔編號H04L12/58GK101499981SQ20091007157
公開日2009年8月5日 申請日期2009年3月19日 優(yōu)先權(quán)日2009年3月19日
發(fā)明者妍 初, 吳艷霞, 林 國, 張樂君, 張健沛, 張澤寶, 靜 楊, 申林山, 迪 高, 華 黃 申請人:哈爾濱工程大學(xué)