改用 amavisd-new 來搭 clamav

因為 clamsmtp 實在太自作主張了,
今天考完 computer architecture 回家就把它移除,
著手安裝 amavisd-new,
它的設定還蠻複雜的...

由於 FreeBSD 從 ports 安裝的話,
預設就會有一份 amavisd.conf,
裡面的設定就是假設你用的是 spamassassin + uvscan 的環境,
所以要先把 spamassassin 關掉,
在前面加上一行 @bypass_spam_checks_maps = (1); 就可以了,
其它就是照大多數 google 搜得到的去設定那幾項...

postfix 的 master.cf 就在後面加上:

然後 main.cf 最後補一行

就可以了。 

再來就是要讓執行 clamav daemon 的 user 和 amavisd 一樣,
我覺得改 clamav 的 user 比較簡單,
就把 clamav 相關設定檔裡的帳號改成 vscan,
然後去 /var 下面找到相對應的幾個目錄 chown 一下...

由於 amavisd 還會很雞婆的去用 regexp 掃一堆東西然後把信丟掉或是做額外的標記處理,
所以又加上了:

把這些多餘的行為濾除掉...
要知道怎樣設定這些東西,
必須看 amavisd.conf-default 的內容才知道,
這裡面有最完整的解說,
以及各選項變數的預設值...

再來就是我很不喜歡 MTA 主動把信丟掉,
丟或不丟的處理應該由 MUA 來負責才對,
MTA 只應該盡到告知的義務即可,
所以全部的情形都把它設定成 D_PASS:

雖然只有用到 virus,不過既然看到就順手改一改...
這樣如果掃出來是病毒信,
amavisd-new 會產生一封新信件,
把原信當成附件送給 user,
新信件的內容會寫出病毒名稱,
header 會出現以「X-Amavis-Alert: INFECTED」為開頭的字串,
所以只要在 MUA 設定成去檢查它來分類信件就可以了...
雖然只有用到 virus,不過既然看到就順手改一改...這樣如果掃出來是病毒信,amavisd-new 會產生一封新信件,把原信當成附件送給 user,新信件的內容會寫出病毒名稱,header 會出現以「X-Amavis-Alert: INFECTED」為開頭的字串,所以只要在 MUA 設定成去檢查它來分類信件就可以了... 

接下來就會發現到 amavisd-new 會把病毒信留一份副本起來,
所以要另外加一行:

這樣就讓它不會畫蛇添足了...
 

最後因為移除 clamsmtp 和停掉 postfix 的關係,
造成 mail queue 裡有一些遺跡,
一直在 maillog 看到煩死人的 warning:

跑去 /var/spool/postfix 把下面各目錄裡的檔案用直覺清一清,就解決了...
整體來說 clamav 抓病毒的能力還算是滿意,
至少可以認出這陣子在系上非常猖獗的病毒,
也丟了前陣子網路上很流行拿來測防毒軟體能力的 101 隻病毒,
懶得算抓到幾隻,不過為數不少就是了...