http://jdev.tw/blog/1677/hmailserver-with-spamassassin-sawin32php
為瞭解決垃圾信泛濫的狀況,這兩天「跨界」測試了運行在Windows上的免費Mail server:hMailServer,它內建了與垃圾郵件過濾軟體SpamAssassin的連結,也能透過ClamWin來進行病毒掃描。這些軟體所有是自由使用的,不花一毛錢就能在Windows平臺上創建電子郵件環境。不過,在SpamAssassin的使用上卻遭遇許多困難,網路上的資料泰半都是Linux的操做方法,教導Windows版本的資料很是稀少,或許本篇測試能為你們提供一些參考。html
為了避免資料夾名稱問題形成狀況,建議將這些軟體都安裝在不含空白字元的資料夾裡,如c:\hMailServer、c:\SpamAssassin等。apache
下載路徑以下,自行下載並依指示安裝。sass
hMailServer須要使用資料庫,預設是使用SQL Server Compact 3.5,若安裝的主機沒有安裝的話,hMailServer的安裝程式會自動下載並安裝。 簡述其餘設定的幾個重點:dom
SAwin32裡我們主要用來處理過濾功能的是spamd.exe(Spam Daemon),spamd的參數很多,完整的指令能夠參考spamassassin.apache.org上的說明。我們只使用兩參數:spa
c:\SpamAssassin\spamd --syslog="c:\SpamAssassin\spamd.log" -D
spamd.exe以背景方式執行,可透過工做管理員來終結它。執行的過程只能經由觀察spamd.log來確認。.net
只要勾選【Settings→Anti-spam→SpamAssassin頁籤→Use SpamAssassin】就能夠了,勾選後每個hMailServer收到的mail就會丟給spamd作運算與處理,當spamd計算某信件的分數超過5時,就斷定為垃圾郵件,接著spamd在mail主旨開頭插入[SPAM]或**SPAM**等字串,再給你使用的mail client收信,我們只要再創建郵件規則來過濾主旨含有SPAM字串的信件,自動作刪除便可。當正確率到達較高的程度時,就能夠考慮在Mail server上直接把垃圾郵件刪掉。code
最後記得將【Settings→Anti-spam】裡的DNS blacklist與SURLBL Servers都Enable,這樣應該能過濾一大半的垃圾郵件。server
SpamAssassin是使用貝氏運算來逐步增長垃圾郵件的判斷正確率,SA-learn.exe就是能用來學習的指令,我們如下列幾個步驟來達成自動學習的處理:htm
目錄: C:\hMailServer\Data\你的Domain\spam\08 2010/04/23 11:23p
c:\hMailServer\Data\你的Domain\spam\08 c:\hMailServer\Data\你的Domain\spam\2A c:\hMailServer\Data\你的Domain\spam\2C ... c:\hMailServer\Data\你的Domain\spam\FE c:\hMailServer\spam-dir
spam-dir.lst的最後一行c:\hMailServer\spam-dir是存放垃圾郵件檔案(*.eml)的資料夾,系統管理人員也能夠把垃圾信存成.eml放入這個資料夾讓SA-learn.exe來讀取。
將如下指令存成learn-spam.bat:
@echo off echo start %DATE% %TIME% > learn-spam.log c:\SpamAssassin\sa-learn.exe --spam --folders="c:\SpamAssassin\spam-dir.lst" >> learn-spam.log echo end %DATE% %TIME% >> learn-spam.log
執行sa-learn.exe時會讀取列在spam-dir.lst裡的每個資料夾裡的每封信件,解析、記錄這些垃圾郵件的特徵。
@echo off echo start %DATE% %TIME% > learn-nospam.log c:\SpamAssassin\sa-learn.exe --ham --folders="c:\SpamAssassin\nospam-dir.lst" >> learn-ham.log echo end %DATE% %TIME% >> learn-ham.log
嗯,就這樣先運行看看,看執行狀況以後再持續報導吧。