摘要:電子郵件的使用提升了辦公的效率與質量, 但是垃圾郵件給用戶帶來了負面的影響, 同時也占據了大量的存儲空間, 特別是其中存在的一些釣魚軟件帶來的負面影響非常大, 因此, 屏蔽這些垃圾郵件非常重要。針對Linux環境下反垃圾郵件管理系統的需求, 具體設計了系統的總體架構及前后臺界面, 具體實現過程主要圍繞前臺界面、郵件接受模塊、郵件原文解析、郵件內容分析及檢測釣魚郵件等展開, 滿足了用戶的體驗和需求, 取得了較好的效果。
關鍵詞:Linux環境; 反垃圾郵件; 管理系統; 設計; 實現;
Abstract:Mail use enhances the efficiency and good quality of office, but spam has brought a negative impact to the user, and occupied a lot of memory at the same time, especially the existence of some fishing software has a great negative impact, it is very important to shield these spam.Based on the specific requirements of the anti-spam management system design in Linux, the overall of the system framework and the front and back interface are designed; the implementation process is mainly focused on front and back interface, mail acceptance module, mail text analysis, mail content analysis and detection of phishing mail. The anti-spam management system in Linux environment realizes the needs of design, meets user experience and requirements, and achieves good results.
Keyword:Linux environment; anti spam; management system; design; implementation;
當前人們對反垃圾郵件的研究越來越多, 相應的技術也在不斷更新, 例如MAT控制技術、黑白名單技術、關鍵詞過濾技術等。MAT控制技術設計了發件認證功能, 只有具備合法的用戶名與密碼才能進行發件[1-2];黑白名單技術, 則只有被信任的IP地址才能發送相關的郵件[3];關鍵詞過濾技術是通過關鍵詞的過濾, 在一定程度上實現了對垃圾郵件的較好過濾[4]。當前反垃圾郵件技術已經成為了一種協作式、多層次過濾式、多技術體系融合式技術[5-6], 而本文是在Linux環境下對反垃圾郵件管理系統進行了設計與實現, 實踐證明, 對垃圾郵件的應對有著較好的效果。
1、Linux環境下反垃圾郵件管理系統的設計需求分析
1.1、功能需求
(1) 在Linux環境下設計的反垃圾郵件管理系統需要實現對垃圾郵件的識別, 這里需要以實際的郵件內容為出發點, 通過使用算法對接受的郵件進行過濾, 將其中的正文信息提取之后, 對郵件的具體性質通過計算郵件權重、特征項匹配、中文分詞等進行定性。
(2) 在Linux環境下得到的反垃圾郵件管理系統, 需對釣魚郵件進行識別, 要從釣魚郵件的實際特征出發, 將釣魚軟件有效隔離在用戶郵箱之外。這就需要在Linux環境下設計的反垃圾郵件系統可對郵件進行HTML格式解析, 將其中包含的超鏈接提取出來。
(3) 在Linux環境下設計的反垃圾郵件系統, 應當具備郵件轉發的功能, 若系統判定其為正常郵件, 則郵件不應當被系統攔截, 而應當通過系統轉發的方式進入用戶郵箱中。這就需要在設計反垃圾郵件管理系統時, 設計出高效郵件轉發方案。
(4) 設計出用戶隔離區管理。若在Linux環境下設計的反垃圾郵件管理系統將某些郵件攔截, 這些郵件應當進入到系統中的用戶隔離區。與此同時, 對于系統隔離區實際的使用情況應當在一定時間內向用戶進行反饋, 特別是當隔離區充滿時, 應當設計成雙向機制, 或者提醒用戶進行手動清理, 也可設計為自動清除的方式。
(5) 設計出前臺界面。在Linux環境下設計的反垃圾郵件管理系統應當有科學合理布置的前臺, 對于設計得到的前臺界面應當包括處理日志、過濾郵件通行、病毒郵件、垃圾郵件及正常郵件界面, 同時還需要有靈活多變的查詢方式。界面中也應當具備登錄功能, 按照不同的身份, 可分為普通用戶與管理員。
1.2、性能需求
為了更好地滿足用戶對垃圾郵件隔離處理的需求。在Linux環境下設計反垃圾郵件管理系統, 應當滿足兩個方面的性能:其一, 對于進出用戶郵箱的所有郵件, 均能夠實現高速度識別, 得到的召回率應當超過98%;其二, 對于進出用戶郵箱的垃圾郵件, 應當實現高速精準識別, 通常情況下, 所能夠達到的處理速度應當在每小時十萬封以上, 對于郵件的轉發能力應當在每小時五萬封以上。
1.3、安全性需求
在Linux環境下設計得到的反垃圾郵件管理系統, 在進行郵件處理的過程中, 需要采用“真空”傳遞的技術, 從而確保所有用戶的郵件處于機密狀態。同時, 該系統在進行安裝時, 應當做到配置簡單, 這對于提升整個系統的易用性是非常關鍵的。系統還應當實現遠程維護功能, 從而降低這一系統的總體維護成本。此外, 在這一反垃圾郵件管理系統中, 還需要加入系統生存性方面的功能, 從而確保整個系統都處于運行可靠和穩定的狀態。
2、Linux環境下反垃圾郵件管理系統設計
2.1、系統總體構架
首先是系統的網絡結構。整個系統在進行具體設計時選擇使用了B/S架構, 主要分為前臺與后臺兩個部分。系統管理者可通過用戶瀏覽器進入到系統, 并實現對系統的全面控制。對于用戶原有的IP地址可采用直接分配的方式進入到郵件的網關中。對于反垃圾郵件系統的外部, 郵件到達之后首先將進入到網關系統當中, 若系統判定郵件是正常郵件時, 會通過轉發的方式發送到用戶內部的服務器當中。
其次是系統的體系結構。在Linux環境下設計的反垃圾郵件管理系統, 其服務器均在Linux上, 需要PHP解析器, 網關系統分為系統后臺功能與前臺界面兩部分。其中前臺包括日志管理、基礎配置、系統管理等相關模塊。系統后臺功能包括蜜罐技術、郵件轉發、郵件隔離、郵件內容分析、原文解析等。
2.2、系統前臺設計
圖1是Linux環境下設計的反垃圾郵件管理系統的總體用例圖。在Linux環境下設計的系統前后臺角色分為管理員與普通用戶。其中普通用戶的進入需要管理員的允許, 同時管理員具備配置與查看操作權限的作用, 普通用戶只能管理自身隔離區與日志查看的權限。
在Linux環境下設計的反垃圾郵件管理系統的前臺一共包含有四大模塊, 分別為:日志管理、用戶隔離區、基礎配置及系統管理。這四個模塊包含了對應的內容。例如日志管理模塊, 就設計了很多功能, 有垃圾郵件的日志、接收郵件的日志、轉發郵件的日志、日志的導出與導入、疑似釣魚郵件日志等。
圖1 Linux環境下設計的反垃圾郵件管理系統的總體用例圖
2.3、系統后臺設計
反垃圾郵件管理系統在Linux環境下進行設計總體也較為繁瑣, 對于系統的后臺主要有原文解析模塊、接收模塊、檢測模塊、轉發模塊以及隔離管理模塊等必要的郵件接收、分析和處理方面的模塊。整個系統也可分為三個主要部分:對郵件進行轉發的模塊、對郵件進行過濾的模塊及接收郵件的模塊。其中對郵件進行過濾的模塊主要功能是根據郵件的具體內容通過一定的算法對郵件進行過濾, 同時, 在接收郵件時, 需要將其中包含的SMTP協議進行全面的解析。在Linux環境下對郵件進行轉化的實質是將用戶使用的郵件服務器和SMTP協議實現交互。
(1) 郵件接收模塊。該模塊需要完成協議解析交互, 若入口位置收到了連接服務器請求, 在系統中會形成一個套接字, 該套接字是接受數據的基礎, 若有新的數據, 需要在Linux環境下進行SMTP協議解析。若通過解析之后得到的命令為HELO, 則會收到250回復, 表明OK;若得到的命令為MAIL, 需要對收到的郵件格式進行判斷, 若得到的回復是501, 則系統會出現判斷錯誤的指令。完成對郵件格式的甄別之后, 需使用套接字對郵件體信息進行接收, 并將得到的郵件頭信息與郵件體信息完整的收入到郵件的信息緩沖區當中, 這就完成了對郵件整體的接收。
(2) 郵件原文的解析模塊。在對郵件進行完全過濾之前, 需對郵件正文進行全面的解析, 這里需在Linux環境下使用MIME協議, 其中的內容是將整個郵件的正文按照MIME協議的要求全部解析成文本的格式。這就需要使用到該郵件的頭部信息, 并對整個郵件的正文內容進行整體解碼, 然后得到存儲結構, 這也就是郵件整個原文的結構體, 并最終采用鏈表的方式將解析的結果進行存儲。這里需從實際情況出發, 對郵件中包含的原文內容進行分析提取, 若僅需數據, 則對其中包含的數據進行解析即可。
(3) 郵件內容分析模塊。在該環境下設計反垃圾郵件管理系統時, 對垃圾郵件的過濾, 需以自學習文本分類器的構造作為基礎, 采用一種Winnow算法對郵件內容按照規則進行分類處理[7]。這就要求對前期的樣本郵件集合按照規則進行分類訓練, 也就是構造一個郵件分類器。在進行訓練時, 具體可分為如下過程:預處理郵件;對特征進行提取與選擇;使用Winnow算法對最開始的權重向量進行不斷的調整, 并形成分類器。其中在對正文進行調整時, 首先需要確定出典型內容的特征, 這里對垃圾郵件使用文本分類算法實現高效識別, 本次系統設計采用了Linux環境下的Winnow算法。其次是郵件訓練, 這里需要準備出垃圾郵件與正常郵件樣本, 選擇Winnow算法實現對郵件的有效訓練, 在進行訓練之后, 把所有類別中的所有特征對應的權重確定出來, 并將這些權重寫入到文件當中。再就是對內容進行分析, 在進行分析時, 需要將所有類別中的權重之和確定出來, 其中權重之和最大的對應類對應郵件分類。在對郵件進行預處理的過程中, 通過設置分詞的方式將其中包含的各種類型的詞語按照內容的不同進行分類, 其中, 選擇使用中文分詞的方式可實現各種信息的有效處理。在完成郵件分類器構造的過程中, 主要使用的一種算法是Winnow算法, 按照這一算法通過不斷反饋的形式, 對其中的權重向量按照不同的需求有針對性地更新, 并得到最終的郵件分類權重的向量。一旦接收到未知郵件, 就可以按照算法要求進行分析, 并將郵件特征向量計算出來, 實現與權重向量的相乘, 若得到的結果超過了閾值則認定為垃圾郵件, 反之則為正常郵件。
(4) 釣魚郵件構造模塊。當前很多釣魚郵件在進行散發時, 往往通過和采用大量誘導性郵件的形式進行散發, 通過將郵件偽裝成一個可信組織機構的形式進行分發, 并誘導更多的終端用戶[8]。通常情況下其中包含一個緊急動作請求, 比如有一個容易出現混淆的鏈接。其主要特征為:郵件內容相對于正常郵件有著較大的差異, 例如郵件中包含用戶密碼、中獎號碼、用戶賬號等方面信息;郵件中包含有一個或多個連接到虛假網站的鏈接, 當用戶點擊進入之后往往提示用戶輸入相關的密碼賬號等重要的信息[9-10]。這些是釣魚軟件的主要特征, 本次在Linux環境下設計的反垃圾郵件管理系統對釣魚郵件的檢測流程進行了設計, 具體為:當系統收到郵件之后, 通過原文解析對其中包含的各種類型的文本轉換為正文解析的HTML格式, 從而將其中包含的超鏈接提取出來, 提取出來之后, 對黑名單中對應的URL域名進行匹配, 并對郵件的特征與釣魚郵件的特征進行全面綜合的判斷, 從而實現對釣魚鏈接的有效識別。
(5) 郵件轉發模塊。這一模塊實現的是SMTP郵件并轉發的功能, 然后將接收到的郵件按照郵件收件人的地址存儲為域名并存儲成為文件。在進行郵件轉發之前往往會將該郵件進行解析, 從而確定出該郵件需要進行的是本地域轉發還是遠程轉發。在進行轉發模塊的設計時, 采用了內存緩沖區域管理的機制, 通過在緩存區中設置郵件文件名, 構建出較多的轉發在線流程, 從而將文件名不斷地從緩沖區中有效提出, 并根據文件名, 對網關中包含的交互過程進行解析。
(6) 郵件隔離區管理模塊。在管理用戶隔離區時, 若其中包含了較多的郵件, 則需要及時清空;若出現了隔離區已滿的情況, 需對這些用戶及時發送提醒, 提醒用戶根據自身的需求對隔離區域進行及時清理;若出現了超過隔離區容量的情況, 本次設計的系統會根據具體時間對隔離區中包含的郵件進行清理。
(7) 蜜罐技術模塊。這里主要是故意將一些郵箱地址進行公開, 并將其設置為蜜罐, 讓SPAMMER對這些地址進行獲取。由于認定的是若郵件是正常的則進入不到這些郵件當中, 因此, 正常郵件往往均會直接進入到已知的郵箱當中, 所以進入到該郵箱當中的郵件往往是垃圾郵件, 其本質就是一種陷阱。當收到了垃圾郵件之后, 需對這些郵件進行分析, 并將其加入到黑名單中。
(8) 分類器更新模塊。郵件分類器是對郵件內容進行全面分析的一種過濾模塊。在進行本次系統設計時, 采用了以蜜罐技術與反饋技術為綜合的郵件分類器更新技術。隨著各種技術的不斷進步, 選擇使用郵件分類器更新模塊是非常關鍵的。在進行具體的更新時, 需要將正常郵件與垃圾郵件作為訓練樣本。在具體設計時, 對文本中包含的郵件首先按照特定協議進行解析, 由此對郵件中所包含的原文信息實現全部還原, 然后再對整個郵件的正文內容進行具體解析。在郵件內容分析模塊, 因為需要使用樣本郵件按照特定算法對郵件進行分類, 所以這樣就會得到較好的一個郵件識別結果。本次設計就通過將蜜罐技術與反饋技術進行結合的方式, 形成了分類器定時更新機制。垃圾郵件的制造者通常情況下會設置一些自動收集電子郵件的地址, 而通過蜜罐技術會將大量垃圾郵件中包含的郵箱地址進行捕獲, 并將這些內容加入到蜜罐當中, 進行全面的分析研究。
3、Linux環境下反垃圾郵件管理系統的實現
3.1、開發環境及工具
Linux本質為一個可進行移植的操作系統, 總體的可靠性非常強, 后臺系統的編程選擇了C語言, 其中使用的GCC開發工具是編譯器套件中的一種。本文的前臺開發工具使用的是基于Linux Apache+My SQL+PHP組合而展開的, 其中的PHP (超文本預處理器) 是基于服務器端的一種容易使用的HTML嵌入式的腳本語言。
3.2、系統實現
(1) 前臺界面設計。在進行具體設計時, 需要考慮能夠為系統的操作人員提供方便快捷的一個管理界面, 與此同時, 也盡可能為用戶提供可以便捷查閱網頁內容的一個界面。具體分三個步驟進行設計。第一步, 先登錄界面設計, 獲取用戶IP, 并將獲取的結果存儲到PHP全局變量當中, 然后獲取用戶的MAC地址, 并通過C程序編程的方式將GETMAC可執行程序放置到其中。第二步, 對垃圾郵件的讀取與存儲進行處理設計, 隨著時間的推移, 其中包含的郵件數量將不斷增多, 若將其中包含的所有垃圾郵件條目全部存儲到某一張表格中, 整個系統插入與讀取的速度均會降低。因此, 在進行具體設計時, 選擇使用對所有收件人的地址進行散列處理的方式, 從而將所有的用戶全部散列到不計其數的列表中。此外, 為系統的管理人員設計搜索功能, 搜索的可選項有:收件人地址、郵件時間、郵件類型等。第三步, 在系統中進行字符編碼的轉換, 期間為了增強反垃圾郵件系統的適用性和通用性, 整個轉換界面的文字統一采用的編碼形式主要是UTF-8, 該設計通過php系統函數中的iconv功能實現。第四步, 上傳與配置, 設計采用了系統的管理人員對配置進行隨時保存, 增強了系統管理的便捷性。
(2) 郵件接收模塊的設計與實現。該模塊主要設計了創建郵件接受線程、監聽線程等, 在整個進程當中, 需要對數據進行釣魚郵件過濾、內容過濾、數據庫連接初始化等操作, 并完成對郵件完整信息、SMTP緩沖區申請等操作。當收到的郵件經過了全部的過濾之后, 還設計了向存儲空間進行申請空間的操作, 當完成了申請之后, 整個郵件的接收過程也就此結束了, 對于接收得到的郵件則可在后續的過濾模塊中通過過濾的方式發揮其全部的功能。
(3) 郵件原文解析模塊的設計與實現。在完成發送和接收郵件的整個過程中, 需要反垃圾郵件系統對整個郵件的正文進行全面的很好的解析。此時, 若郵件的格式采用的是RFC822, 則說明采用這一格式的郵件在整個結構方面總體來說還是較為簡單的, 這樣的郵件包含了郵件的正文與郵件頭, 而MIME (多用途網絡郵件擴協議的英文簡稱) 則是在RFC822格式基礎上的基本結構的一種協議擴展。在這一MIME協議中, 其ContentType (內容類型) 所規定的內容描述的是郵件正文中所包含的數據;而其中的Content-TransferEncoding (傳輸編碼) 所規定的內容表示的是郵件傳送過程中可以被接受的一種方式, 即指出系統用來表示郵件消息正文的一種消息類型。在所采用的郵件編碼形式中經常用到的還有以下幾種, 如UUENCODE、Quoted-printable等, 以及Binary、Base64、HZ、7bit、8bit等。如果郵件采用的是HTML格式, 那么在對郵件進行解析的過程中, 需要將其解析為HTML格式與純文本格式, 對于解析結果使用存儲鏈表的方式, 每個鏈表中包含有2個節點。對郵件進行解碼的過程其實就是編碼過程的逆過程, 這就需要在完成解碼時, 提前將其中的解碼算法找出來。
(4) 郵件內容分析模塊的設計與實現。在過濾垃圾郵件時, 主要采用Winnow算法對其中包含的內容進行分類, 在具體實施時, 需對郵件進行集合訓練, 也就是構造分類器, 并對收集到的新郵件按照訓練結果進行分類, 從而實現對郵件性質的有效判定。在具體訓練時, 其具體過程為:郵件特征選擇、郵件提取與選擇、郵件預處理等。在進行具體的預處理時, 需要將郵件的正文分詞全面找出來, 這是對信息進行處理的關鍵與基礎。同時, 在這個過程中需要對特征進行提取與選擇, 對特征進行合并, 得到對應的全特征集, 這里通常使用到的是信息增益算法, 對整個信息系統中包含的所有的信息增益進行全部解析。在進行特征提取之后, 構建成完整的特征集合, 具體的內容分析需要分析郵件的整個正文內容, 然后選擇和提取其中典型的內容并按照特定規則找到其中的特征, 再利用Winnow算法中的文本分類算法對其中的垃圾郵件內容進行識別, 其內容分析程序的召回率和準確率都是高的。
(5) 釣魚郵件檢測模塊的設計與實現。本次設計中, 選擇使用了以URL抗過濾技術為基礎的一種設計技術。若郵件中存在較多的無關內容, 雖然其與正常郵件較為類似, 但是通過郵件檢測模塊, 能夠實現對其中一些非法內容的準確率較高的判斷, 然后按照特定規則檢測到上述釣魚郵件中的一些特征, 通過采用建立在URL域名基礎上的郵件過濾模塊, 并在系統通過Hash數快速去查找整個系統中存在的URL域名, 這樣就能有效地過濾掉其中的釣魚郵件。這一功能模塊, 首先需要對釣魚郵件鏈接的一些特征進行具體分析, 在反垃圾郵件系統對釣魚郵件進行過濾的過程中, 需結合URL域名中包含的黑名單與白名單進行檢測。此外, 還需對郵件轉發模塊進行設計, 本次設計還采用了建立在內存緩沖區管理基礎上的一種機制及其處理的策略, 通過將郵件所記錄的文件名全部寫入到系統的緩存區之中, 然后通過形成較多的轉發流程, 實現對郵件的有效提取。而在系統的轉發線程中不斷地查詢在系統的緩沖區中是否存在需要轉發的文件及其文件名。如果存在需要轉發的文件, 則通過系統解析相應的文件, 然后就可以將解析完成的郵件進行轉發。采用這樣的設計, 可使得系統中的主線程和轉發線程以及多個轉發線程之間同時對緩沖區進行同樣的操作, 這也就使系統中存在系統資源互斥的問題, 為了解決這一問題, 本文的設計中采用了一種系統線程同步處理的方式, 然后通過系統的互斥鎖以規避系統線程可能存在的沖突。
4、結語
在Linux環境下設計反垃圾郵件管理系統可取得較好的效果。但是管理系統的具體設計是一個較為復雜的過程, 需要設計人員從用戶的實際需求出發, 面對互聯網不斷發展給反垃圾郵件工作帶來的挑戰, 對反垃圾郵件管理系統進行設計并不斷完善, 從而更好地服務于用戶。
參考文獻
[1]夏正新.一種基于滑動窗口技術的郵件特征選擇方法[J].南京郵電大學學報:自然科學版, 2017 (6) :1-8.
[2]李玉峰.基于Spam Assassin的中文垃圾郵件過濾系統的設計與實現[J].內蒙古農業大學學報:自然科學版, 2012, 33 (3) :245-249.
[3]王青松, 魏如玉.基于短語的貝葉斯中文垃圾郵件過濾方法[J].計算機科學, 2016, 43 (4) :256-259+269.
[4]王靖, 王興偉, 趙悅.基于變精度粗糙集決策樹垃圾郵件過濾[J].系統仿真學報, 2016, 28 (3) :705-710.
[5]李艷濤, 馮偉森.堆疊去噪自編碼器在垃圾郵件過濾中的應用[J].計算機應用, 2015, 35 (11) :3256-3260+3292.
[6]郭軍權, 諸葛建偉, 孫東紅, 等.Spampot:基于分布式蜜罐的垃圾郵件捕獲系統[J].計算機研究與發展, 2014, 51 (5) :1071-1080.
[7]黃國偉, 許昱瑋.基于用戶反饋的混合型垃圾郵件過濾方法[J].計算機應用, 2013, 33 (7) :1861-1865.
[8]劉海韜, 陽潔.云計算平臺下一種新型反垃圾郵件系統的研究[J].中南大學學報:自然科學版, 2013, 44 (5) :1869-1874.
[9]孫廣路, 齊浩亮.基于在線排序邏輯回歸的垃圾郵件過濾[J].清華大學學報:自然科學版, 2013, 53 (5) :734-741.
[10]柴寶仁, 谷文成, 牛占云, 等.基于Boosting算法的垃圾郵件過濾方法研究[J].北京理工大學學報, 2013, 33 (1) :79-83.