最近のウィルスメール(ワーム)とスパムメールの勢いは凄いものがあり、連日私のメールボックスにも大量に届いています。
出来ることなら、これらのゴミメールはユーザーのメールボックスに入る以前にサーバレベルで処理したいもの。
そこでこのページでは、既に構築している 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の起動
ウィルスメールは /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 を起動します
以上で ウィルスメール、スパムメール対策は完了です。
振り分けられたスパムメールは $HOME/Spam/new 何に保存されるので、定期的にチェック、削除するようにして下さい。
| ページ先頭に戻る |
|