« PHP@Linux vs MS-SQL Server database (using FreeTDS) | 首頁 | 我們這一家 (あたしンち) 片尾曲 ~ 大好き!! ^^ »
2005年01月23日
Sendmail + MailScanner + ClamAV 安裝實錄
MailScanner 是著名的郵件掃毒、防止廣告信的自由軟體, 它可支援多種防毒軟體與 MTA (參見: MailScanner@FSF), 以下是在 Linux 系統裝設 MailScanner 的步驟:
安裝環境: Fedora Core 1 (使用 Sendmail)
安裝
Step 1. 安裝 MailScanner
官方網站: http://www.sng.ecs.soton.ac.uk/mailscanner/
下載 Stable → Version xxx for RedHat and Mandrake Linux (and other RPM-based Linux distributions)
安裝後, 修改 /etc/MailScanner/MailScanner.conf:
Max Children = 5 設定 MailScanner 啟動時, 最多產生幾個子程序 (processing)
預設值 = 5 (主記憶體只有 64MB 時, 建議設定為 1)Virus Scanning = yes 開啟病毒掃瞄功能
預設值 = yesVirus Scanners = clamav 指定病毒掃瞄套件
可一次指定多個掃毒套件, 以空白字元分隔即可
預設值 = noneUse SpamAssassin = yes 設定是否使用 SpamAssassin 套件來偵測廣告信件
必須先安裝 SpamAssassin 套件才可正常使用
預設值 = no
Step 2. 安裝 Clam AntiVirus
官方網站: http://www.clamav.net/
安裝前須建立 clamav 帳號:
useradd -s /sbin/nologin -M clamav
安裝後, 修改以下檔案:
/usr/local/etc/clamd.conf
/usr/local/freshclam.conf
將 Example 加上井字號註解掉 → #Example
執行 /usr/local/bin/freshclam 測試是否能正常運作
Step 3. 重新啟動 MailScanner
service MailScanner stop
chkconfig sendmail off (以後就由 MailScanner 啟動 sendmail, 所以要禁止 sendmail service 於開機時自動啟用)
killall sendmail (有時候 sendmail process 會殘存在記憶體中, 在此將它一舉消滅)
service MailScanner start
※從此以後, 由 MailScanner 負責啟動 MTA (Sendmail), 所以取消 Sendmail 服務, 由 MailScanner 取代
防毒機制測試
至 http://www.eicar.org/anti_virus_test_file.htm 下載病毒檔, 透過剛剛裝上 MailScanner 的 Mail Server 進行病毒郵件發送測試, 成功的話會收到 Mail Server 攔截病毒郵件的通知郵件. (亦可 tail -f /var/log/maillog 監視 mail log 訊息)
讓 SpamAssassin 學習辨別垃圾郵件 - 資料夾方案
#建立垃圾郵件 (spam) 與非垃圾郵件 (ham) 目錄
mkdir /var/tmp/spam /var/tmp/ham#設定目錄權限, 讓使用者可以將郵件儲存到目錄中
#以 NFS 或 Samba 分享這兩個目錄, 並教育使用者將垃圾郵件存入 spam 資料夾, 被系統誤判為垃圾郵件的非垃圾郵件存入 ham 資料夾, 讓系統自動學習黑白名單
chmod 1777 /var/tmp/spam /var/tmp/hamvi /usr/local/bin/sa-learn.sh
#!/bin/bash
cd /var/tmp/spam
for i in *; do
sa-learn --no-sync --spam "$i" && rm -f "$i"
done
cd /var/tmp/ham
for i in *; do
sa-learn --no-sync --ham "$i" && rm -f "$i"
done
sa-learn --sync
chmod +x /usr/local/bin/sa-learn.sh
crontab -e
*/30 * * * * /usr/local/bin/sa-learn.sh
讓 SpamAssassin 學習辨別垃圾郵件 - IMAP 方案
useradd -s /sbin/nologin -M spam && passwd spam
useradd -s /sbin/nologin -M ham && passwd ham
於使用者電腦建立 IMAP 帳號, 以 Outlook Express 為例:
- 顯示名稱: spam
- 電子郵件地址: spam@your.company.com
- 我的內送郵件伺服器是: IMAP
內收郵件伺服器: your.imap.host
外寄郵件伺服器: localhost (無需以此帳號寄送郵件)- 帳戶名稱: spam
密碼: password_for_spam_account建立帳號之後, 再點選 "內容" 進行細部設定 (非必要):
- IMAP
- 取消勾選 "檢查所有資料夾有無新郵件"
- 取消勾選 "將特殊的資料夾儲存到 IMAP 伺服器"
以上是 spam 帳號的設定方式, ham 帳號依此類推
完成後教育使用者將垃圾郵件丟 (拖曳) 入 spam 收件夾, 被系統誤判為垃圾郵件的非垃圾郵件丟入 ham 收件夾, 讓系統自動學習黑白名單
最後於 mail server 建立 sa-learn.sh 自動學習黑白名單的 shell script:
vi /usr/local/bin/sa-learn.sh
#!/bin/bash
SPAM=/var/spool/mail/spam
HAM=/var/spool/mail/hamsa-learn --sync --spam --mbox $SPAM && true > $SPAM
sa-learn --sync --ham --mbox $HAM && true > $HAM
chmod +x /usr/local/bin/sa-learn.sh
crontab -e
*/30 * * * * /usr/local/bin/sa-learn.sh
參考資料
Posted by Jamyy at 2005年01月23日 22:53
Trackback Pings
TrackBack URL for this entry:
http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/40
Comments
謝謝你這篇心得
對我自己架postfix+spamassassin 幫助很大
再次感謝
Posted by: Kane at 2006年10月27日 11:34
大大您好
假如之前User寄垃圾信給系統學習時
已經直接轉寄原垃圾信給伺服器
而不是以附加檔案的方式寄給伺服器
是否會有影響
會無法學習
還是會讓User被系統認為寄信者(User)為垃圾信的寄件者
會有影響嗎
如果會有問題,請問一下我該如何補救呢
Posted by: akong at 2007年04月18日 18:10
老實說我也不太清楚會不會影響學習效果
不過寄件者是內部 user, 應該不至於會被判為 spammer
如果要讓系統重新學習, 只要執行 sa-learn --clear 就行了
Posted by: Jamyy at 2007年04月18日 20:59
ok,不错的教程,thanks
Posted by: 打包机 at 2007年08月15日 22:29
請教大哥一下
我用clamav 安裝進去
# useradd -M clamav
#./configure
但是並末看到make file
所以我無法安使用make && make install 指令
請問這是何原因造成的
Posted by: BREH at 2008年01月15日 00:49
BREH 您好,
請找出執行 ./configure 時出現的錯誤訊息才能追查原因喔!
Posted by: Jamyy at 2008年01月15日 09:12