ライン

ポイント:ウィルスチェックを受信時に行う

ライン

 はじめに

security/clamav

  電子メールに添付されるウィルスをサーバ側で除去してしまう、商用であっても無料で利用できる ClamAV。
そのMilterによる利用についてのメモ。

 以下に、その方法を記述します。
FreeBSD 7.1での例です。

 導入と設定

導入

 早速、導入を開始します。portsから導入を行います。

# cd /usr/ports/security/clamav
# make config

MILTER をチェックすればいいのですが、他にも選択できるオプションが増えているようです。
今回はそれについては、何も試しませんが。

# cd /usr/ports/security/clamav
# make install clean

終わったら、/etc/rc.conf に設定を加えます。

clamd_enable="YES"
clamav_clamd_enable="YES"
clamav_clamd_socket="/var/run/clamav/clamd.sock"

clamav_milter_enable="YES"
clamav_milter_flags="--postmaster-only --noxheader --local --outgoing --noreject --max-children=10"

clamav_freshclam_enable="YES"
clamav_freshclam_flags="--daemon-notify=/usr/local/etc/clamd.conf --checks=12 --user=clamav --log-verbose"
設定ファイルの作成 (freshclam.confとclamd.conf)

 設定ファイルをさわっていきます。
freshclam.conf から。/usr/local/etc 以下にあります。

# grep -v "^#" freshclam.conf | grep -v '^$'
DatabaseDirectory /var/db/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogVerbose yes
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner clamav
AllowSupplementaryGroups yes
DatabaseMirror db.jp.clamav.net
DatabaseMirror database.clamav.net
NotifyClamd /usr/local/etc/clamd.conf
OnUpdateExecute /usr/local/etc/rc.d/clamav-milter.sh restart

として更新してみました。
同様に、clamd.conf は、以下の通り。

# grep -v "^#" clamd.conf | grep -v '^$'
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
LogTime yes
LogVerbose yes
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/db/clamav
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket yes
User clamav
AllowSupplementaryGroups yes
ScanMail yes

ここで2つのスクリプトを実行してしまいます。

# /usr/local/etc/rc.d/clamav-clamd start
# /usr/local/etc/rc.d/clamav-freshclam start

設定ファイルの作成 (/etc/mail)

 さて、毎度の /etc/mail 以下の設定を加えることにします。
sendmail側の設定です。

INPUT_MAIL_FILTER(`clmilter', `S=local:/var/run/clamav/clmilter.sock,F=,T=S:4m;R:4m')dnl

として更新します。

# make cf install all
# make restart

これで反映されました。
ここで、最後に残ったスクリプトの起動を実施します。

# /usr/local/etc/rc.d/clamav-milter start
Waiting for clamd socket..
Starting clamav_milter.
Loaded ClamAV 0.94.2/9022/Sun Feb 22 11:31:59 2009
ClamAV: Protecting against 513674 viruses
Waiting for clamav-milter socket.. 60..
おまけ

 clam-milt_chk.shという処理を動かしています。

*/10    *       *       *       *       root    /bin/sh /usr/local/etc/mail/clam-milt_chk.sh 1> /dev/null 2>&1 /dev/null

 やっていることは、サービス監視をしているだけで、

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
EXECDATE=`date +%Y-%m-%d.%H:%M|awk '{print $0}'`

COUNT=`grep '^clamav_milter_enable="YES"' /etc/rc.conf | wc -l`
if [ ${COUNT} -eq 0 ]; then
        exit 0
fi

if test -f /var/run/clamav/clamav-milter.pid
then
        PID=`cat /var/run/clamav/clamav-milter.pid`
        COUNT1=`ps -aux | grep "$PID"| grep -v "grep" |  wc -l`
else
        /usr/local/etc/rc.d/clamav-milter.sh start
        echo "Restart : $EXECDATE"
        exit 0
fi

if [ ${COUNT1} -eq 1 ]; then
        exit 0
else
        ps -aux | grep 'sbin/clamav-milter' | grep -v $PID | awk '{print $2}' | xargs kill -KILL
        /usr/local/etc/rc.d/clamav-milter.sh start
        echo "Restart : $EXECDATE"
fi

exit 0

のように、しています。
 動けばいいや的な作りですが、何が理由かサービスが落ちてしまった際には起動し直すように動作させています。

【改訂履歴】作成:2009/02/22
2009/05/31 … Namazu検索の窓を追加
【参考リンク】
Clam AntiVirus … Clam AntiVirusのオフィシャルページ

Copyright © 1996,1997-2006,2007- by F.Kimura,