メールサーバでウィルス&スパム対策
最近のウィルスメール(ワーム)とスパムメールの勢いは凄いものがあり、連日私のメールボックスにも大量に届いています。
出来ることなら、これらのゴミメールはユーザーのメールボックスに入る以前にサーバレベルで処理したいもの。
そこでこのページでは、既に構築している qmailによるメールサーバに ウィルス&スパム対策 を講じる方法を解説します。

1.ウィルスやスパム対策の手法と手順
2.clamavのインストール
3.SpamAssassinのインストール
4.qmail-scannerのインストール
5.procmailの設定

1.ウィルスやスパムを対策する手法

ウィルス対策の第一段としては、ベースとなるアンチウィルスソフトを導入することが必要となります。
Linux用としては「clamav」というフリーのアンチウィルスソフトがありますので、これを利用します。
次にスパム対策としては「SpamAssassin」を導入します。
「SpamAssassin」は、そのメールがスパムかどうかを判定するためのもので、スパムと判断されればそのメールには目印が付けられます。
そして、メールサーバ(qmail)がこれらを利用出来るようにするため「qmail-scanner」を導入します。
最後に「SpamAssassin」によりスパムと判定されたメールを振り分けるため「procmail」の設定をして完了です。
※ procmail は VineLinuxには標準で入っていますので、設定のみで利用できます。

2.clamavのインストール

必要なファイルをダウンロードし、/usr/local/src 等に置く

clamav-0.75.tar.gz

専用ユーザーとディレクトリの作成
# useradd -d /bin/false clamav
# useradd -d /bin/false qscand
# mkdir /var/log/clam
# chown clamav.clamav /var/log/clam
# mkdir /var/run/clam
# chown qscand.qscand /var/run/clam

コンパイルとインストール
# tar xvzf clamav-0.75.tar.gz
# cd clamav-0.75
# ./configure
# make
# make install

ウィルスデータベースの更新
# /usr/local/bin/freshclam

clamd設定ファイルの変更
エディタで設定ファイルを開きます
# vi /usr/local/etc/clamav.conf

次の箇所を書き換えます (赤字は解説)
# Comment or remove the line below.
#Example 行頭に # を付けてコメントアウトする

LogFile /var/log/clam/clamd.log 行頭の # を外しログファイル名を変更

LogTime 行頭の # を外す

PidFile /var/run/clam/clamd.pid 行頭の # を外しPIDファイル名を変更

User qscand ユーザー名を変更

clamd 起動ファイルの作成
こちらをダウンロードしてコピーしても可 clamd
# vi /etc/rc.d/init.d/clamd

#!/bin/sh
#
#
# chkconfig: 2345 75 40
# description: Starts and stops clamd.
# processname: clamd
# pidfile: /var/run/clam/clamd.pid
# securlevel: 40


# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# See how we were called.
case "$1" in
start)
    echo -n "Clamd: "
    daemon /usr/local/sbin/clamd && touch /var/lock/subsys/clamd
    echo ""
    ;;
stop)
    echo -n "Shutting down clamd: "
    killproc clamd
    echo
    rm -f /var/lock/subsys/clamd
    echo ""
    ;;
restart)
    echo -n "Restarting clamd: "
    $0 stop
    $0 start
    echo "done."
    ;;
status)
    status clamd
    ;;
fresh_clam)
    echo -n " Fresh Clam: "
    /usr/local/bin/freshclam
    ;;
*)
    echo "Usage: qmail {start|stop|restart|status|fresh_clam}"
    exit 1
esac

exit 0

パーミッションの変更。
# chmod 755 /etc/rc.d/init.d/clamd

clamdの起動と自動起動設定
# service clamd start
# chkconfig clamd on

ウィルスデータベースの自動更新設定
# /usr/local/bin/freshclam -d -c 2

3.SpamAssassinのインストール

必要なファイルをダウンロードし、/usr/local/src 等に置く

Mail-SpamAssassin-3.0.1.tar.gz

専用ユーザーの作成
# useradd -s /bin/false spamd

必要となるPerlモジュールのインストール

※PerlモジュールはCPANスクリプトを使って行います。まだ一度もCPANを使った事のない場合はCPAN初期設定を見て初期設定を行って下さい。

CPAN初期設定

# perl -MCPAN -e shell

> o conf prerequisites_policy follow
> install HTML::Parser DB_File Net::DNS BerkeleyDB Net::SMTP Mail::SPF::Query IP::Country::Fast
> quit

インストール途中に質問事項がありますが、全てデフォルトでOKなのでEnterキーを押して進んでください。

コンパイルとインストール
# tar xzf Mail-SpamAssassin-3.0.1.tar.gz
# cd Mail-SpamAssassin-3.0.1
# perl Makefile.PL
# make
# make install

spamd 設定ファイルの作成
# vi /etc/sysconfig/spamassassin


# 次の一行を書き込み保存
SPAMDOPTIONS="-x -u spamd -H /home/spamd -d"

起動スクリプトのコピーと起動設定
# cp spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
# chmod 755 /etc/rc.d/init.d/spamd
# chkconfig spamd on
# ps ax

# プロセスの確認 - 次の行があればOK
***** ? S 0:00 /usr/local/sbin/clamd

SpamAssassin設定ファイルの編集
以下の設定は基本的な設定例です。 required_hits の値を変更することにより、判定レベルを変更できます。
# mkdir /etc/mail
# mkdir /etc/mail/spamassassin
# vi /etc/mail/spamassassin/local.cf

# 次の内容を書き込み保存
# rewrite_header Subject *****SPAM*****
# report_safe 1
# trusted_networks 212.17.35.
# lock_method flock

required_hits 5

rewrite_header Subject [SPAM]

report_safe 0

skip_rbl_checks 0

rbl_timeout 3

score RCVD_IN_BL_SPAMCOP_NET 3

ok_languages ja

ok_locales ja

spamd の起動と自動起動設定
# service spamd start
# chkconfig spamd on

# ps ax

# プロセスの確認 - 次の行があればOK
***** ? S 0:00 /usr/bin/spamd -x -u spamd -H /home/spamd -d

4.qmail-scannerのインストール

必要なファイルをダウンロードし、/usr/local/src 等に置く

maildrop-1.6.3.tar.bz2
tnef-1.2.3.1.tar.gz
qmail-scanner-1.23.gz
qmailqueue-patch

必要となるPerlモジュールのインストール
# perl -MCPAN -e shell

> o conf prerequisites_policy follow
> install Time::HiRes
> quit

tnef インストール
# tar xzf tnef-1.2.3.1.tar.gz
# cd tnef-1.2.3.1
# ./configure
# make
# make install

maildrop インストール
# bunzip2 maildrop-1.6.3.tar.bz2
# tar xf maildrop-1.6.3.tar
# cd maildrop-1.6.3
# ./configure
# make
# make install-strip
# make install-man

qmailの再構築
qmailがqmail-scannerを利用できるようにqmailのソースファイルにパッチをあてて再構築を行います。
qmailのソースファイルの場所は /usr/local/src/qmail-1.03 としていますが、実際にqmailを展開したパスに読み替えてください。
# service qmaild stop # 一旦qmailを停止
# cp qmailqueue-patch /usr/local/src/qmail-1.03 # パッチファイルをコピー
# cd /usr/locak/src/qmail-1.03
# patch < qmailqueue-patch # パッチをあてる
# make
# make setup check

qmail-scanner インストール
# tar xzf qmail-scanner-1.23.tgz
# cd qmail-scanner-1.23
# ./configure --scanners clamdscan,verbose_spamassassin --lang ja_JP.EUC --admin root --domain mydomain --notify admin --install

# mydomain は自分のドメイン名に変更して下さい

qmail 起動ファイルに QMAILQUEUE を追加
# vi /etc/rc.d/init.d/qmaild

#!/bin/sh
#
# description: QMAIL SMTP & POP3 SERVER
# processname: qmaild
# pidfile: /var/run/qmaild.pid
# filename /etc/rc.d/init.d/qmaild
#
# Source function library.

QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE

. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
・
・

# 上の緑字の2行を追加して保存します

qmailの起動
# service qmaild start

ウィルスメールは /var/spool/qmailscan/quarantine/new 以下に隔離(保存)されます。
放っておくと溜まる一方なので定期的に削除するよう設定
# crontab -e

viエディタが立ち上がるので次の一行を書いて保存
この例では10日たったものは削除するようにしている


0 * * * * find /var/spool/qmailscan/quarantine/new/* -mtime +10 -exec rm '{}' \;

5.procmailの設定

procmailとは、特定の条件に従ってメールを振り分けるソフトで、VineLinuxには標準で入っています。
SpamAssassinにより、スパムと判定されたメールには目印が付けられているので、その目印の付いたメールを振り分けるよう設定します。
振り分けたメールは即削除することも可能ですが、まずは動作確認のため 各ユーザーディレクトリのSpamフォルダ内に振り分けるようにします。

procmail設定ファイルの作成
# vi /etc/procmailrc

次の内容を書いて保存
スパムと判定されたメールを即削除する場合は
$HOME/Spam/ を /dev/null とすること
PATH=/usr/bin:/usr/local/bin
LOGFILE=$HOME/procmail.log
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR

:0
* ^X-Spam-Status: Yes

$HOME/Spam/

ユーザー側の設定
procmailを利用するには、各ユーザー毎の設定が必要となります。
ユーザー user を例とします。
# su - user
$ /var/qmail/bin/maildirmake Spam
ユーザー user のホームディレクトリに Spamフォルダを作成

.qmail ファイルの作成
procmailを利用するには、各ユーザー毎の設定が必要となります。
ユーザー user を例とします。
$ vi .qmail
次の一行を書いて保存
$ | /var/qmail/bin/preline /usr/bin/procmail

qmailの起動
再び root に戻って 一旦停止していた qmail を起動します
# service qmaild start

以上で ウィルスメール、スパムメール対策は完了です。
振り分けられたスパムメールは $HOME/Spam/new 何に保存されるので、定期的にチェック、削除するようにして下さい。

| ページ先頭に戻る |

制作:北崎 剛宏