為了保護公司郵件伺服器免受病毒威脅,本文詳細介紹如何在現有 qmail 環境中部署病毒掃描機制。經綜合評估,採用 qmail-scanner 搭配 ClamAV(開源免費)的方案最為合適,優點在於若 qmail 已套用 queue patch,原系統幾乎無需更動即可整合。
前提:已擁有正常運作的 qmail 系統。
tar zxvf maildrop-1.5.2.20030423.tar.gz
cd maildrop-1.5.2.20030423
./configure [options]
make
make install-strip
make install-man
rpm -ivh perl-Time-HiRes-1.38-3.i386.rpm
groupadd clamav
useradd -g clamav -s /bin/false clamav
tar zxvf clamav-0.65.tar.gz
cd clamav-0.65
./configure
make check
make install
更新病毒庫: 執行 freshclam,並將其加入 crontab 定時更新。
設定檔調整: 編輯 /usr/local/etc/clamav.conf,將 Example 那行前加 # 或刪除。
測試掃描: 依序執行 clamscan、clamd、clamdscan 驗證功能正常。
groupadd qscand
useradd -g qscand -s /bin/false qscand
tar zxvf qmail-scanner-1.20.tgz
cd qmail-scanner-1.20
./configure --qmail-queue-binary /var/qmail/bin/qmail-queue \
--admin postmaster --domain abc.com.cn \
--notify sender,admin --local-domains abc.com.cn \
--lang en_GB --debug yes --unzip yes --scanners clamscan
確認無錯誤後,加上 --install 參數重新執行 configure 進行正式安裝。
安裝完成後,檢查 /var/qmail/bin/qmail-scanner-queue.pl 是否存在,並設定權限:
chown qscand:qscand /var/qmail/bin/qmail-scanner-queue.pl
chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
以一般使用者身份測試:
/var/qmail/bin/qmail-scanner-queue.pl -z
若無 Can't do setuid 錯誤即代表成功。若出現錯誤,進入原始碼的 contrib 目錄執行 make && make install。
chown qscand:qscand /var/qmail/bin/qmail-scanner-queue
chmod 4755 /var/qmail/bin/qmail-scanner-queue
chmod 0755 /var/qmail/bin/qmail-scanner-queue.pl
再次以一般用戶測試:
/var/qmail/bin/qmail-scanner-queue -z
/var/qmail/bin/qmail-scanner-queue -g
在 qmail 啟動腳本中加入環境變數:
QMAILQUEUE=/var/qmail/bin/qmail-scanner-queue.pl
export QMAILQUEUE
或依官方建議,在 tcpserver SMTP 規則檔中設定 QMAILQUEUE,可針對不同 IP 範圍決定是否掃描。範例:
# /etc/tcpserver/smtp.rules
127.:allow,RELAYCLIENT="",RBLSMTPD="", QMAILQUEUE="/var/qmail/bin/qmail-queue"
10.:allow,RELAYCLIENT="",RBLSMTPD="", QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
修改後執行 maketcprules 或 tcprules 重建資料庫,最後重啟 qmail。
若發現 clamscan 掃描不到病毒,請修改 qmail-scanner-queue.pl 中的選項:
my $clamscan_options = "-r --disable-summary --max-recursion=10 --max-space=1000000";
# 改為
my $clamscan_options = "-r --mbox --disable-summary --max-recursion=10 --max-space=1000000";
加入 --mbox 參數即可正常掃描郵件格式。
完成上述步驟後,您的 qmail 郵件系統即具備即時病毒掃描能力,有效阻擋惡意程式碼透過郵件傳播。建議定期檢查日誌並持續更新 ClamAV 病毒特徵碼,確保防護效果。