垃圾郵件處理方法及系統的制作方法
【專利摘要】一種垃圾郵件處理方法,包括如下步驟:接收被攔截的郵件;判斷所述郵件的數據量是否大于閾值;如果是,以單文件的形式單獨存儲所述郵件;如果否,將所述郵件添加在預定文件中進行集中存儲。上述垃圾郵件處理方法,通過判斷郵件的數據量與閾值的關系,將郵件分為兩種存儲方式:郵件的數據量大于閾值的,以單文件的形式單獨存儲郵件;郵件的數據量不大于閾值的,將郵件添加在預定文件中進行集中存儲。將郵件添加在預定文件中進行集中存儲,減少了文件的數量,可以減少磁盤輸入輸出操作的次數,減少了郵件存儲耗時。此外,還提供一種垃圾郵件處理系統。
【專利說明】垃圾郵件處理方法及系統
【技術領域】
[0001]本發明涉及計算機技術,特別是涉及一種垃圾郵件處理方法及系統。
【背景技術】
[0002]電子郵件(E-mail,又稱電子函件、電郵或郵件)是指通過互聯網進行書寫、發送和接收信件,目的是達成發信人和收信人之間的信息交互。
[0003]隨著計算機的普及,電子郵件的使用也越來越廣泛。然而,電子郵件也出現了被濫用的情況,即部分用戶使用電子郵件大量發送廣告等垃圾郵件,使得很多收到垃圾郵件的用戶不得不花很多時間清理。對此,部分郵件服務商提供了自動過濾垃圾郵件的服務,將系統自動識別為垃圾郵件的郵件單獨放置到垃圾箱或是直接刪除等。直接刪除的方式容易導致系統錯誤識別為垃圾郵件的有用郵件的丟失。放置到垃圾箱中的方式由于可以被恢復,因而被廣泛使用。
[0004]隨著垃圾郵件數量的增加,郵件存儲耗費的時間越來越長,也會導致讀取供用戶確認是否是垃圾郵件、恢復為正常郵件的速度越來越慢。對此,部分郵件服務提供商將高概率為垃圾郵件的電子郵件直接刪除而不再存儲,相對概率低一點的垃圾郵件則存儲下來以備用戶恢復,這樣可以減少存儲空間的浪費和對存儲、讀取郵件速度的影響。然而,這種方式還是難免會造成極個別的有用郵件被當作垃圾郵件刪除。
【發明內容】
[0005]基于此,有必要針對傳統的垃圾郵件處理耗時越來越長的問題,提供一種垃圾郵件處理方法。
[0006]一種垃圾郵件處理方法,包括:
[0007]接收被攔截的郵件;
[0008]判斷所述郵件的數據量是否大于閾值;
[0009]如果是,以單文件的形式單獨存儲所述郵件;
[0010]如果否,將所述郵件添加在預定文件中進行集中存儲。
[0011]此外,還有必要針對大量郵件存儲耗時越來越長的問題,提供一種垃圾郵件處理系統。
[0012]一種垃圾郵件處理系統,包括:
[0013]接收模塊,用于接收被攔截的郵件;
[0014]判斷模塊,用于判斷所述郵件的數據量是否大于閾值;
[0015]第一存儲模塊,如果所述郵件大于閾值,以單文件的形式單獨存儲所述郵件;
[0016]第二存儲模塊,如果所述郵件不大于閾值,將所述郵件添加在預定文件中進行集中存儲。
[0017]上述垃圾郵件處理方法及系統,通過判斷郵件的數據量與閾值的關系,將郵件分為兩種存儲方式:郵件的數據量大于閾值的,以單文件的形式單獨存儲郵件;郵件的數據量不大于閾值的,將郵件添加在預定文件中進行集中存儲。將郵件添加在預定文件中進行集中存儲,減少了文件的數量,可以減少磁盤輸入輸出操作的次數,減少了郵件存儲耗時。
【專利附圖】
【附圖說明】
[0018]圖1為第一實施方式的垃圾郵件處理方法的流程圖;
[0019]圖2為第二實施方式的垃圾郵件處理方法的流程圖;
[0020]圖3為第三實施方式的垃圾郵件處理方法的流程圖;
[0021]圖4為第四實施方式的垃圾郵件處理方法的流程圖;
[0022]圖5為第五實施方式的垃圾郵件處理方法的流程圖;
[0023]圖6為第一實施方式的郵件處理系統的模塊圖;
[0024]圖7為第二實施方式的郵件處理系統的模塊圖;
[0025]圖8為第三實施方式的郵件處理系統的模塊圖。
【具體實施方式】
[0026]由于傳統的垃圾郵件處理方法中,郵件存儲的方式通常存儲路徑固定,每個郵件作為一個單獨的文件,這樣某一文件夾下文件數較多,對于正常郵件和垃圾郵件非常多的用戶,同一文件夾下的文件也會非常多,從而影響存取的效率。并且,較多的郵件會導致較多的文件存儲操作,導致磁盤效率低,進一步影響了存取的效率。
[0027]如圖1所示,一實施例中的垃圾郵件處理方法,包括如下步驟:
[0028]步驟S100,接收被攔截的郵件。郵件在被反垃圾郵件系統攔截時,調用垃圾郵件處理方法提供的存儲接口(SaveMail)進行被攔截郵件的臨時存儲,即通過上述存儲接口(SaveMail)接收被反垃圾郵件系統攔截的郵件。攔截郵件的規則可以根據需要進行設定,例如根據郵件地址、關鍵詞等攔截可能為垃圾郵件的郵件。
[0029]步驟S110,判斷郵件的數據量是否大于閾值。郵件的大小是指郵件數據的大小,閾值是指預設的郵件的數據量臨界值,例如512KBUMB等。通過對郵件的數據量和閾值進行比較,判斷收到的郵件的數據量是否大于閾值,如果大于則進入步驟S120,如果不大于,則進入步驟S130。
[0030]步驟S120,以單文件的形式單獨存儲郵件。本步驟中,把郵件的數據量大于預設閾值的每個郵件(以下簡稱大郵件)都以單個文件的形式單獨分別存儲,即每個郵件單獨對應一個文件。因為收到的郵件的郵件的數據量相對較大,所以每個郵件都以單一文件的形式分別存儲,便于管理。
[0031]步驟S130,將郵件添加在預定文件中進行集中存儲。預定文件是指預先設定的用來集中存儲大小小于閾值的郵件(以下簡稱小郵件)的文件。例如,收到的郵件Ml經判斷小于512KB,則將郵件Ml添加到某一預定文件Fl中,隨后如果收到郵件M2經判斷小于512KB時,可以再將郵件M2添加到該預定文件Fl中。這樣實現了將郵件Ml和郵件M2集中存儲在預定文件Fl中。也就是說,集中存儲是將多個郵件集中存儲到一個文件中,當然,預定文件的數量也可以不止一個,只要預定文件的數量大于郵件的數量即可達到集中存儲的目的。預定文件可以是Hash桶文件(哈希桶文件)、打包文件或是壓縮文件等。在進行添加存儲操作時,可以用0_APPEND的方式(以追加的方式打開文件,每次寫之前,都將標志位移動到文件的末端)在預定文件末位添加此次添加的郵件的大小及郵件的內容數據,當然也可以只在預定文件末位添加郵件內容數據,并記錄郵件的起始和結束標記。
[0032]上述垃圾郵件處理方法,通過判斷郵件的數據量與閾值的關系,將郵件分為兩種存儲方式:郵件的數據量大于閾值的,以單文件的形式單獨存儲郵件;郵件的數據量不大于閾值的,將郵件添加在預定文件中進行集中存儲。將郵件添加在預定文件中進行集中存儲,減少了文件的數量,可以減少磁盤輸入輸出操作的次數,減少了郵件存儲耗時。
[0033]如圖2及圖3所示,在其中一個實施例中,還包括以郵件的標識碼進行映射獲得路徑的步驟(S102、S112或S114)。步驟S102在步驟SllO之前,不管是大郵件還是小郵件,映射路徑的方法相同;步驟S112或S114在步驟SllO之后,可以根據大郵件和小郵件制定不同的映射路徑的方法。每個郵件在接收時都會有一個標識碼所標識,郵件的標識碼通常是唯一的(又可以稱為唯一索引為消息id,MeSSageID),并且通常郵件的標識碼中包括了郵件的投遞時間信息,格式為size_t類型,在存儲、讀取、刪除郵件時都會根據郵件的標識碼對郵件進行操作。存儲路徑可以通過以郵件的標識碼進行映射獲得,先把標識碼通過一個Hash函數計算,轉換得到文件存儲路徑,所述路徑包括儲存郵件文件的各級文件夾名稱。在以單文件的形式單獨存儲郵件的步驟S120中,獲得路徑后,將郵件以單文件的形式單獨存儲在所述路徑下,并且可以以郵件的標識碼作為文件名存儲文件,保證了存儲郵件的唯一性;在將郵件添加在預定文件中進行集中存儲的步驟S130中,將郵件添加在上述路徑下的預定文件中。由于采用了映射的方法,可以通過映射規則的設定,使得不同的郵件映射得到的路徑不同,從而使得郵件的存儲位置充分散列,即在同一文件夾下不會有過多的郵件,提高存取的速度。
[0034]在有些具體的應用中,標識碼包含有日期信息,上述以郵件的標識碼進行映射獲得存儲所述郵件的路徑的步驟S102、S112或S114中,可以將日期信息作為路徑的一部分。例如,收到的郵件攜帶的標識碼為mx82tl332829582trzqgfrcg,其中1332829582為日期信息可以轉化為對應的日期20120327。當然,在其他實施例中,標識碼中可以直接包含不需要轉化的日期信息。假設標識碼通過Hash算法映射到磁盤號為09,子目錄為m的路徑,將日期作為上述路徑的一部分得到的存儲路徑為,/ BASE_DIR / 09/m/201203/27或/ BASE_DIR/09/m/2012/03/27等,其中BASE_DIR為基礎存儲目錄。通過將日期信息作為路徑的一部分,可以進一步散列需要存儲的文件,得到的文件存儲路徑能有效的提高文件存取的速度,而且方便過期文件的清理工作。例如,對于超過郵件攔截恢復期限(3天、5天、10天等)的文件,清理程序可以根據路徑中攜帶的日期信息,直接清理整個目錄。
[0035]通常,郵件的標識碼除了包含有日期信息外,還包含有非日期信息,上述郵件的標識碼進行映射獲得存儲所述郵件的路徑的步驟S102、S112或S114中,還可以將非日期信息中的部分或全部作為所述路徑的一部分。仍然以標識碼mX82tl332829582trZqgfrcg為例進行說明,把后4位字符“frcg”提取出來,作為郵件存儲路徑的一部分,例如可以是“/frcg/”或者“/fr/cg/”,從而得到最終的郵件存儲路徑/ BASE_DIR/09 / m/201203/27/frcg/或/ BASE_DIR / 09 / m/201203/27/fr/cg。把郵件標識碼中非日期信息提取出來作為郵件存儲路徑中的一部分,可以使郵件文件充分散列,避免一個文件夾下文件數量過多、導致文件檢索效率變低。除了提取標識碼中的后四位外,也可以提取后一位、后兩位或是中間的幾位等,這些都可以根據需要進行設定。此外,也可以不將非日期信息作為路徑的一部分,例如對于小郵件的存儲來說,由于大量的小郵件已經通過添加在預定文件中進行集中存儲的方式,大大減少了需要存儲的文件的數量,因此,可以不需要進一步的散列,也就是不需要將非日期信息作為路徑的一部分,此時步驟SI 12和SI 14并不完全相同。
[0036]在其他實施例中,除了通過映射的方式獲得路徑外,還可以對每個文件夾存儲的文件或文件夾數量進行限定,當達到限定數量時,即更換存儲路徑,也可避免在同一文件夾下存儲過多的郵件,提高存取的速度。
[0037]如圖4所示,為了在存儲郵件后能夠快速的讀取郵件,上述垃圾郵件處理方法還包括如下步驟:
[0038]步驟S122,本步驟位于步驟SllO之后,位于步驟S120之前或之后均可,即如果判斷郵件大于閾值,在指向文件中與郵件的標識碼對應的標識位設置標識郵件以單文件的形式單獨存儲。指向文件可以是Hash表文件,記錄了郵件的標識碼對應的標識位,在標識位設置有用以標識郵件的存儲形式為以大郵件的形式存儲的數值,例如標識位為O。在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。例如如果讀取到的標識位為0,表明郵件是以單文件的形式單獨存儲的,則可以根據標識碼映射得到路徑,在該路徑下讀取郵件等。當然,也可以直接在指向文件中直接存儲步驟SI 12中映射獲得的路徑。
[0039]步驟S132,本步驟位于步驟SllO之后,位于步驟S130之前或之后均可,即如果判斷郵件不大于閾值,在指向文件中與郵件的標識碼對應的標識位設置標識郵件以集中存儲的形式存儲、在指向文件中設置存儲路徑與在預定文件中的存儲位置。指向文件可以是Hash表文件,記錄了郵件的標識碼對應的標識位,在標識位設置有用以標識郵件的存儲形式為集中存儲的數值,例如標識位為I。在指向文件中還保存有存儲該郵件的預定文件的路徑,以及對應郵件在預定文件中的存儲位置。在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。在讀取郵件時,就不需要再計算預定文件的路徑和郵件的存儲地址了,直接把指向文件讀入計算機內存,在內存中高速檢索,獲取郵件標識碼對應的預定文件地址和在預定文件中的存儲位置,存儲位置可以是預定文件數據段中的偏移地址。
[0040]以下結合更為具體的實施例對上述垃圾郵件處理方法進行更為詳細的說明,如圖5所示,該垃圾郵件處理方法包括如下步驟:
[0041]步驟S500,接收被攔截的郵件。每個郵件在接收時都會有一個標識碼所標識,郵件的標識碼通常是唯一的(又可以稱為唯一索引為消息id,MeSSageID),并且通常郵件的標識碼中包括了郵件的投遞時間信息,格式為size_t類型,在存儲、讀取、刪除郵件時都會根據郵件的標識碼對郵件進行操作。除了郵件的標識碼外,在接收被攔截的郵件時還可以獲得郵件內容和郵件的數據量等信息。
[0042]步驟S510,判斷郵件的數據量是否大于閾值。郵件的大小是指郵件數據的大小,閾值是指預設的郵件的數據量臨界值,例如512KBUMB等,通過對郵件的數據量和預設的閾值進行比較,判斷收到的郵件的數據量是否大于閾值,如果大于則進入步驟S520,如果不大于,則進入步驟S550。
[0043]步驟S520,以郵件的標識碼進行映射獲得路徑。存儲路徑可以通過以郵件的標識碼進行映射獲得,先把標識碼通過一個Hash函數計算,轉換得到文件存儲路徑,所述路徑包括儲存郵件文件的各級文件夾名稱。例如,收到的郵件攜帶的標識碼為mx82tl332829582trzqgfrcg,其中 1332829582 為日期信息,mx82t、trzqgfrcg 為非日期信息,1332829582可以轉化為對應的日期20120327。假設標識碼通過Hash算法映射到磁盤號為09,子目錄為m的路徑,將日期信息和非日期信息中的一部分作為上述路徑的一部分得到的存儲路徑為,/ BASE_DIR / 09 / m/201203/27/fr/cg,其中BASE_DIR為基礎存儲目錄。由于采用了映射的方法,可以通過映射規則的設定,使得不同的郵件映射得到的路徑不同,從而使得郵件的存儲位置充分散列,即在同一文件夾下不會有過多的郵件,提高存取的速度。通過將日期信息作為路徑的一部分,可以進一步散列需要存儲的文件,得到的文件存儲路徑能有效的提高文件存取的速度,而且方便過期文件的清理工作。例如,對于超過郵件攔截恢復期限(3天、5天、10天等)的文件,清理程序可以根據路徑中攜帶的日期信息,直接清理整個目錄。
[0044]步驟S530,以單文件的形式單獨存儲郵件。本步驟中,把大郵件都以單個文件的形式單獨分別存儲,即每個郵件單獨對應一個文件存儲到步驟S520獲得的路徑中,當然,如果不同郵件獲得的路徑相同,可以多個郵件對應的文件存儲在相同的目錄中。可以以郵件的標識碼作為文件名存儲文件,保證了存儲郵件的唯一性。因為收到的郵件的數據量相對較大,所以每個郵件都以單一文件的形式分別存儲,便于管理。
[0045]步驟S540,在指向文件中與郵件的標識碼對應的標識位設置標識郵件以單文件的形式單獨存儲。指向文件可以是Hash表文件,記錄了郵件的標識碼對應的標識位,在標識位設置有用以標識郵件的存儲形式為以大郵件的形式存儲的數值,例如標識位為O。在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。例如如果讀取到的標識位為0,表明郵件是以單文件的形式單獨存儲的,則可以根據標識碼映射得到路徑,在該路徑下讀取郵件等。當然,也可以直接在指向文件中直接存儲步驟S520中映射獲得的路徑。
[0046]如果步驟S510的判斷結果為否,則進入步驟S550,以郵件的標識碼進行映射獲得路徑。步驟S550與步驟S520相似,只是基礎存儲目錄可以不同或者不將非日期信息作為路徑的一部分。因為對于小郵件的存儲來說,由于大量的小郵件已經通過添加在預定文件中進行集中存儲的方式,大大減少了需要存儲的文件的數量,因此,可以不需要進一步的散列,也就是不需要將非日期信息作為路徑的一部分。需要特別說明的是,步驟S550與步驟S520也可以完全相同。
[0047]步驟S560,將郵件添加在預定文件中進行集中存儲。預定文件是指預先設定的用來集中存儲小郵件的文件。例如,收到的郵件Ml經判斷小于512KB,則將郵件Ml添加到某一預定文件Fl中,隨后如果收到郵件M2經判斷小于512KB時,可以再將郵件M2添加到該預定文件Fl中。這樣實現了將郵件Ml和郵件M2集中存儲在預定文件Fl中。預定文件可以是Hash桶文件(哈希桶文件)、打包文件或是壓縮文件等。在進行添加存儲操作時,可以用0_APPEND的方式(以追加的方式打開文件,每次寫之前,都將標志位移動到文件的末端)在預定文件末位添加郵件的數據量、郵件內容數據,當然也可以只在預定文件末位添加郵件內容數據,并記錄郵件的起始和結束標記。
[0048]步驟S570,在指向文件中與郵件的標識碼對應的標識位設置標識郵件以集中存儲的形式存儲、在指向文件中設置存儲路徑與在預定文件中的存儲位置。指向文件可以是Hash表文件,記錄了郵件的標識碼對應的標識位,在標識位設置有用以標識郵件的存儲形式為集中存儲的數值,例如標識位為I。在指向文件中還保存有存儲該郵件的預定文件的路徑,以及對應郵件在預定文件中的存儲位置。在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。在讀取郵件時,就不需要再計算預定文件的路徑和郵件的存儲地址了,直接把指向文件讀入計算機內存,在內存中高速檢索,獲取郵件標識碼對應的預定文件地址和在預定文件中的存儲位置,存儲位置可以是預定文件數據段中的偏移地址。
[0049]上述垃圾郵件處理方法,通過判斷郵件的數據量與閾值的關系,將郵件分為兩種存儲方式:郵件的數據量大于閾值的,以單文件的形式單獨存儲郵件;郵件的數據量不大于閾值的,將郵件添加在預定文件中進行集中存儲。將郵件添加在預定文件中進行集中存儲,減少了文件的數量,可以減少磁盤輸入輸出操作的次數,減少了郵件存儲耗時。同時以日期信息作為存儲的路徑,一方面便于充分散列需要存儲的文件,另一方面也便于集中以日期為單位進行郵件的清理。通過指向文件的方式記錄郵件的存儲方式,可以快速讀取郵件。
[0050]反垃圾郵件系統攔截到被認為是垃圾郵件的郵件時,調用上述垃圾郵件處理方法提供的存儲接口(SaveMail)進行被攔截郵件的臨時存儲;上述垃圾郵件處理方法接收被攔截的郵件并按照上述過程進行被攔截郵件的存儲;當用戶需要恢復被攔截的郵件時,調用上述垃圾郵件處理方法提供的郵件讀取接口(ReadMail),完成被攔截郵件的讀取和轉存:在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。例如如果讀取到的標識位為0,表明郵件是以單文件的形式單獨存儲的,則可以根據標識碼映射得到路徑,在該路徑下讀取郵件;如果讀取到的標識位為1,表明郵件是以添加在預定文件中進行集中存儲的,獲取郵件標識碼對應的預定文件地址和在預定文件中的數據段中的偏移地址,讀取相應的數據以便進行郵件的恢復。
[0051]此外,如圖6所示,本實施例提供了一種垃圾郵件處理系統,包括接收模塊、判斷模塊、第一存儲模塊及第二存儲模塊。
[0052]接收模塊用于接收被攔截的郵件。郵件在被反垃圾郵件系統攔截時,調用垃圾郵件處理系統提供的存儲接口(SaveMail)進行被攔截郵件的臨時存儲,即通過上述存儲接口(SaveMail)接收被反垃圾郵件系統攔截的郵件。攔截郵件的規則可以根據需要進行設定,例如根據郵件地址、關鍵詞等攔截可能為垃圾郵件的郵件。
[0053]判斷模塊用于判斷所述郵件的數據量是否大于閾值。郵件的大小是指郵件數據的大小,閾值是指預設的郵件的數據量臨界值,例如512KBUMB等,通過對郵件的數據量和預設的閾值進行比較,判斷收到的郵件的數據量是否大于閾值,如果大于則指令第一存儲模塊進行存儲,如果不大于,則指令第二存儲模塊進行存儲。
[0054]如果判斷模塊判斷郵件大于閾值,第一存儲模塊以單文件的形式單獨存儲郵件。把郵件的數據量大于預設閾值的每個郵件(以下簡稱大郵件)都以單個文件的形式單獨分別存儲,即每個郵件單獨對應一個文件。因為收到的郵件的數據量相對較大,所以每個郵件都以單一文件的形式分別存儲,便于管理。
[0055]如果判斷模塊判斷郵件不大于閾值,第二存儲模塊將郵件添加在預定文件中進行集中存儲。預定文件是指預先設定的用來集中存儲大小小于閾值的郵件(以下簡稱小郵件)的文件。例如,收到的郵件Ml經判斷小于512KB,則將郵件Ml添加到某一預定文件Fl中,隨后如果收到郵件M2經判斷小于512KB時,可以再將郵件M2添加到該預定文件Fl中。這樣實現了將郵件Ml和郵件M2集中存儲在預定文件Fl中。也就是說,集中存儲是將多個郵件集中存儲到一個文件中,當然,預定文件的數量也可以不止一個,只要預定文件的數量大于郵件的數量即可達到集中存儲的目的。預定文件可以是Hash桶文件(哈希桶文件)、打包文件或是壓縮文件等。在進行添加存儲操作時,可以用0_APPEND的方式(以追加的方式打開文件,每次寫之前,都將標志位移動到文件的末端)在預定文件末位添加此次添加的郵件的數據量及郵件的內容數據,當然也可以只在預定文件末位添加郵件內容數據,并記錄郵件的起始和結束標記。
[0056]上述垃圾郵件處理系統,通過判斷郵件的數據量與閾值的關系,將郵件分為兩種存儲方式:郵件的數據量大于閾值的,以單文件的形式單獨存儲郵件;郵件的數據量不大于閾值的,將郵件添加在預定文件中進行集中存儲。將郵件添加在預定文件中進行集中存儲,減少了文件的數量,可以減少磁盤輸入輸出操作的次數,減少了郵件存儲耗時。
[0057]如圖7所示,在其中一個實施例中,垃圾郵件處理系統還包括以郵件的標識碼進行映射獲得路徑的路徑模塊。每個郵件在接收時都會有一個標識碼所標識,郵件的標識碼通常是唯一的(又可以稱為唯一索引為消息id,MeSSageID),并且通常郵件的標識碼中包括了郵件的投遞時間信息,格式為size_t類型,在存儲、讀取、刪除郵件時都會根據郵件的標識碼對郵件進行操作。路徑模塊可以通過以郵件的標識碼進行映射獲得存儲路徑,先把標識碼通過一個Hash函數計算,轉換得到文件存儲路徑,所述路徑包括儲存郵件文件的各級文件夾名稱。路徑模塊獲得路徑后,第一存儲模塊將郵件以單文件的形式單獨存儲在所述路徑下,并且可以以郵件的標識碼作為文件名存儲文件,保證了存儲郵件的唯一性;第二存儲模塊將郵件添加在上述路徑下的預定文件中。由于采用了映射的方法,可以通過映射規則的設定,使得不同的郵件映射得到的路徑不同,從而使得郵件的存儲位置充分散列,即在同一文件夾下不會有過多的郵件,提高存取的速度。
[0058]在有些具體的應用中,標識碼包含有日期信息,上述路徑模塊以郵件的標識碼進行映射獲得存儲所述郵件的路徑的過程中,可以將日期信息作為路徑的一部分。例如,收到的郵件攜帶的標識碼為mx82tl332829582trzqgfrcg,其中1332829582為日期信息可以轉化為對應的日期20120327。當然,在其他實施例中,標識碼中可以直接包含不需要轉化的日期信息。假設標識碼通過Hash算法映射到磁盤號為09,子目錄為m的路徑,將日期作為上述路徑的一部分得到的存儲路徑為,/ BASE_DIR/09/m/201203/27或/ BASE_DIR / 09/m/2012/03/27等,其中BASE_DIR為基礎存儲目錄。通過將日期信息作為路徑的一部分,可以進一步散列需要存儲的文件,得到的文件存儲路徑能有效的提高文件存取的速度,而且方便過期文件的清理工作。例如,對于超過郵件攔截恢復期限(3天、5天、10天等)的文件,清理程序可以根據路徑中攜帶的日期信息,直接清理整個目錄。
[0059]通常,郵件的標識碼除了包含有日期信息外,還包含有非日期信息,上述路徑模塊以郵件的標識碼進行映射獲得存儲所述郵件的路徑的過程中,還可以將非日期信息中的部分或全部作為所述路徑的一部分。仍然以標識碼mx82tl332829582trzqgfrcg為例進行說明,把后4位字符“frcg”提取出來,作為郵件存儲路徑的一部分,例如可以是“/frcg/”或者“/fr/cg/”,從而得到最終的郵件存儲路徑/ BASE_DIR / 09 / m/201203/27/frcg/或/BASE_DIR / 09 / m/201203/27/fr/cg。把郵件標識碼中非日期信息提取出來作為郵件存儲路徑中的一部分,可以使郵件文件充分散列,避免一個文件夾下文件數量過多、導致文件檢索效率變低。除了提取標識碼中的后四位外,也可以提取后一位、后兩位或是中間的幾位等,這些都可以根據需要進行設定。此外,也可以不將非日期信息作為路徑的一部分,例如對于小郵件的存儲來說,由于大量的小郵件已經通過添加在預定文件中進行集中存儲的方式,大大減少了需要存儲的文件的數量,因此,可以不需要進一步的散列,也就是不需要將非日期信息作為路徑的一部分。
[0060]在其他實施例中,路徑模塊除了通過映射的方式獲得路徑外,還可以對每個文件夾存儲的文件或文件夾數量進行限定,當達到限定數量時,即更換存儲路徑,也可避免在同一文件夾下存儲過多的郵件,提高存取的速度。
[0061]如圖8所示,為了在存儲郵件后能夠快速的讀取郵件,上述垃圾郵件處理系統還包括第一指向模塊及第二指向模塊。
[0062]如果郵件大于閾值,第一指向模塊在指向文件中與郵件的標識碼對應的標識位設置標識郵件以單文件的形式單獨存儲。指向文件可以是Hash表文件,記錄了郵件的標識碼對應的標識位,在標識位設置有用以標識郵件的存儲形式為以大郵件的形式存儲的數值,例如標識位為O。在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。例如如果讀取到的標識位為0,表明郵件是以單文件的形式單獨存儲的,則可以根據標識碼映射得到路徑,在該路徑下讀取郵件等。當然,也可以直接在指向文件中直接存儲路徑模塊映射獲得的路徑。
[0063]如果郵件不大于閾值,第二指向模塊在指向文件中與郵件的標識碼對應的標識位設置標識郵件以集中存儲的形式存儲、在指向文件中設置存儲路徑與在預定文件中的存儲位置。指向文件可以是Hash表文件,記錄了郵件的標識碼對應的標識位,在標識位設置有用以標識郵件的存儲形式為集中存儲的數值,例如標識位為I。在指向文件中還保存有存儲該郵件的預定文件的路徑,以及對應郵件在預定文件中的存儲位置。在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。在讀取郵件時,就不需要再計算預定文件的路徑和郵件的存儲地址了,直接把指向文件讀入計算機內存,在內存中高速檢索,獲取郵件標識碼對應的預定文件地址和在預定文件中的存儲位置,存儲位置可以是預定文件數據段中的偏移地址。
[0064]上述垃圾郵件處理系統,通過判斷郵件的數據量與閾值的關系,將郵件分為兩種存儲方式:郵件的數據量大于閾值的,以單文件的形式單獨存儲郵件;郵件的數據量不大于閾值的,將郵件添加在預定文件中進行集中存儲。將郵件添加在預定文件中進行集中存儲,減少了文件的數量,可以減少磁盤輸入輸出操作的次數,減少了郵件存儲耗時。同時以日期信息作為存儲的路徑,一方面便于充分散列需要存儲的文件,另一方面也便于集中以日期為單位進行郵件的清理。通過指向文件的方式記錄郵件的存儲方式,可以快速讀取郵件。
[0065]反垃圾郵件系統攔截到被認為是垃圾郵件的郵件時,調用上述垃圾郵件處理系統提供的存儲接口(SaveMail)進行被攔截郵件的臨時存儲;上述垃圾郵件處理系統接收被攔截的郵件并按照上述過程進行被攔截郵件的存儲;當用戶需要恢復被攔截的郵件時,調用上述垃圾郵件處理系統提供的郵件讀取接口(ReadMail),完成被攔截郵件的讀取和轉存:在讀取郵件時,根據標識碼找到標識位,再根據標識位判斷郵件的存儲形式,有區別的采取相應的郵件讀取方法。例如如果讀取到的標識位為O,表明郵件是以單文件的形式單獨存儲的,則可以根據標識碼映射得到路徑,在該路徑下讀取郵件;如果讀取到的標識位為1,表明郵件是以添加在預定文件中進行集中存儲的,獲取郵件標識碼對應的預定文件地址和在預定文件中的數據段中的偏移地址,讀取相應的數據以便進行郵件的恢復。
[0066]以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬于本發明的保護范圍。因此,本發明專利的保護范圍應以所附權利要求為準。
【權利要求】
1.一種垃圾郵件處理方法,其特征在于,包括: 接收被攔截的郵件; 判斷所述郵件的數據量是否大于閾值; 如果是,以單文件的形式單獨存儲所述郵件; 如果否,將所述郵件添加在預定文件中進行集中存儲。
2.根據權利要求1所述的垃圾郵件處理方法,其特征在于,還包括以所述郵件的標識碼進行映射獲得路徑的步驟,所述以單文件的形式單獨存儲所述郵件的步驟中,將所述郵件以單文件的形式單獨存儲在所述路徑下;所述將所述郵件添加在預定文件中進行集中存儲的步驟中,將所述郵件添加在所述路徑下的預定文件中。
3.根據權利要求2所述的垃圾郵件處理方法,其特征在于,所述標識碼包含日期信息,所述以所述郵件的標識碼進行映射獲得存儲所述郵件的路徑的步驟中將所述日期信息作為所述路徑的一部分。
4.根據權利要求3所述的垃圾郵件處理方法,其特征在于,所述標識碼還包含非日期信息,所述以所述郵件的標識碼進行映射獲得存儲所述郵件的路徑的步驟中將所述非日期信息中的部分或全部作為所述路徑的一部分。
5.根據權利要求1至4中任意一項所述的垃圾郵件處理方法,其特征在于, 如果判斷郵件大于閾值,還包括在指向文件中與所述郵件的標識碼對應的標識位設置標識所述郵件以單文件的形式單獨存儲的步驟; 如果判斷郵件不大于閾值,還包括在所述指向文件中與所述郵件的標識碼對應的標識位設置標識所述郵件以集中存儲的形式存儲、在所述指向文件中設置存儲路徑與在所述預定文件中的存儲位置的步驟。
6.一種垃圾郵件處理系統,其特征在于,包括: 接收模塊,用于接收被攔截的郵件; 判斷模塊,用于判斷所述郵件的數據量是否大于閾值; 第一存儲模塊,如果所述郵件大于閾值,以單文件的形式單獨存儲所述郵件; 第二存儲模塊,如果所述郵件不大于閾值,將所述郵件添加在預定文件中進行集中存儲。
7.根據權利要求6所述的垃圾郵件處理系統,其特征在于,還包括以所述郵件的標識碼進行映射獲得路徑的路徑模塊,所述第一存儲模塊將所述郵件以單文件的形式單獨存儲在所述路徑下;所述第二存儲模塊將所述郵件添加在所述路徑下的預定文件中。
8.根據權利要求7所述的垃圾郵件處理系統,其特征在于,所述路徑模塊將所述標識碼中的日期信息作為所述路徑的一部分。
9.根據權利要求8所述的垃圾郵件處理系統,其特征在于,所述路徑模塊將所述標識碼中的部分或全部非日期信息作為所述路徑的一部分。
10.根據權利要求6至9中任意一項所述的垃圾郵件處理系統,其特征在于,還包括: 第一指向模塊,如果所述郵件大于閾值,在指向文件中與所述郵件的標識碼對應的標識位設置標識所述郵件以單文件的形式單獨存儲; 第二指向模塊,如果所述郵件不大于閾值,在所述指向文件中與所述郵件的標識碼對應的標識位設置標識所述郵件以集中存儲的形式存儲、在所述指向文件中設置存儲路徑與在所述預定文件中的存儲·位置。
【文檔編號】H04L12/58GK103580989SQ201210271378
【公開日】2014年2月12日 申請日期:2012年7月31日 優先權日:2012年7月31日
【發明者】黃鐵鳴, 文琛, 金烈勝 申請人:騰訊科技(深圳)有限公司