Nopam, no spam.
Nopam, stop the spams with no pain :-)
 
垃圾信氾濫帶來很多痛苦,對於使用者,充滿垃圾信的信箱處理起來很頭痛,採用垃圾信過濾軟體,正常信被誤殺而掉信時很心痛,企業或機關團體為了垃圾信問題浪費時間,還要花心思選購軟體,而多數軟體不只昂貴,還可能不夠理想,不只是頭痛心痛,口袋也痛!!
 
目前垃圾郵件過濾軟體的主要技術不外乎:黑名單,白名單,Rule Based,Bayesian Filter 之內容過濾,大多數軟體都有採用上述之方法。而Bayesian filter更是資訊過濾技術裡之主流技術。
 
Bayesian Filter內容過濾之基本原理為:假設有兩堆樣本信件,一堆為正常信件,一堆為垃圾信件,Bayesian filter 會運用統計的分析,利用樣本信件訓練出屬於垃圾信件的關鍵字群組,再利用這些內容特徵來評估一封新信件垃圾信傾向的分數。然而此種內容過濾技術存在一些缺點:
 
足夠大又精確的樣本空間並不容易建立,而且利用此技術先天上誤判的危險性是高的。比方說,假設垃圾信樣本裡有很多信件的標題含有「很重要」,而正常信樣本裡並無,則經過訓練後的內容過濾器有可能會誤殺一封標題含有「很重要」 之關鍵字的正常信件,而此誤殺的代價可能是極嚴重的。請注意,上述情形為實際發生過的例子。另一方面,我們發現有些信件,如一些購物方面的電子報或含有一些敏感內容例如藥品或情色的私人信件,其內容可能因為含有一些垃圾信件的成分,而容易被誤判。
 
多數垃圾信過濾系統,往往需要較為複雜的設定,例如設定白名單,黑名單,砍殺分數點 (threshold),並且需要使用者在使用上的參與,透過使用者回報來調教系統。這些也往往帶來使用上的頭痛與困擾。比方說,有些系統可以選擇垃圾信防治的機制是輕度、中度、還是強度,或者讓管理者決定砍信的基準線,但這不就意味著:讓使用者在信箱的乾淨度與正常信件被誤殺度的兩難之間做痛苦的抉擇 ?!
 
 
二、設計理念
 
(一) 垃圾信的偵測率要夠高。正常信件的誤殺率必須極低。而且縱使萬一發生誤殺,其誤殺的代價必須是低的!!
(二) 系統的執行效率必須非常快速,必須做到隱型效果,讓信件的收發絲毫不受到影響,沒有任何的延遲。
(三) 系統的穩定性與可靠度必須非常高,務必做到傳送過程滴水不漏,並有嚴密的保護機制來保證系統不掉信。
(四) 系統的使用必須是極易安裝,無須設定(例如白名單/黑名單),無須調教,一旦安裝系統就會自動的發揮功效。
(五) 為了讓我們的系統未來能不分地域。語系的運用於不同地方,我們思考著要如何設計出一種不需正常與垃圾信件樣本的訓練,不需要經過學習痛苦,就能夠適用於各種語系與國家的系統。而要達到此目的的前提是,必須要設計出一種技術,能夠掌握垃圾信關鍵的特徵,而此特徵是無關乎信件內容,語系與地域的。
 
經過了一番深思與觀察,我們體會到:
 
「垃圾郵件與正常郵件最大的分野在於行為而非內容。」
 
一般垃圾信發信軟體為了躲避過濾軟體的偵測,多會用各種造假的技術。
 
然而同一份垃圾信,在不同的造假版本之間,仍然會存有相當程度的相似度;也就是說垃圾信件最大共通特徵在於造假、大量發送、與相似度,而這些特徵無關乎信件內容、語言與地域。根據垃圾信件這些特徵,我們基於過去在網路通訊技術、搜尋引擎、近似比對、演算法設計等研究專長與成果,利用搜尋引擎技術,以近似比對與造假分析之行為分析來偵測垃圾郵件,並發展出「個人郵際關係分析」(relational closure analysis)之技術來保護使用者正常郵件免於誤殺的困擾,並將誤殺率降至最低。
 
在系統設計實作方面,為了追求高速的效能,除了演算法與資料結構的精心設計,我們全部以 C 程式語言來開發,(註,相當多郵件過濾系統是以Perl等高階語言開發)。在效能測試上,我們的系統在一般 Intel P4 機器上一天就能夠處理一百萬份以上的郵件。
 
 
三、系統自主性與延伸性
 
在系統設計初期我們考慮到兩種途徑選擇:底層的通訊系統要採用網路上現成的Open Source,例如Postfix,or Amavis等,或自行重新開發。後來,思考到為了確保效率的傑出與未來系統的延伸性,我們決定充分掌握每一層技術,一切的程式模組都自行開發。
 
在未來延伸性上,QS 可以 archive 所有經過的電子郵件進一步建立郵件資料庫來提供郵件長期備份,搜尋,重要文件保護,資料探勘分析,甚至於知識管理等進階功能。
 
未來,Nopam不只要幫忙解除痛苦(防弊),還要帶給使用者在電子郵件世界裡幸福快樂(興利)的功能 :-)