ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
注意ポイント
- 当記事は相当古い内容になってしまいました。
- 以下の記事にPostfix+ClamAV+SpamAssassinでの記事をご紹介していますのでそちらをご参照ください。
-
Postfix + SSL + IPv6 + ClamAV + SpamAssassin + SPF + DKIM + DMARCの構築方法
CentOS8 + Postfix + Dovecotでセキュリティも確保した構築方法を詳しく、全設定ファイルとともに解説します。IPv6にも対応し …続きを見る
毎日毎日Spamメールとウィルスメールの数がすごい。なんとかならないものか。
と考えた結果がこれ。
qmail + F-Prot + Spam Assassin + Qmail-Scanner
つまり、qmailで処理中のキューをqmail scannerで
・Linux用のFreeウィルスチェックソフトでチェック
・SpamAssasignにてSPAMメールの処理
を行う。
その為に1台メールサーバを構築した。といってもVMwareを使用しているので、他のサーバをコピってきて起動するだけ。楽チン。
アンチウィルスメールGWサーバを作る手順の概要は以下の通り。
①F-Protを導入
②SpamAssasinを導入
③qmail-scannerを導入
④qmailの設定変更
⑤チェック
①F-Protを導入
F-ProtのPRMファイルダウンロードサイトよりRPMファイルのダウンロードしてくる。(ホームユーザ版はフリー)
そしてインストール
Preparing... ########################################### [100%]
1:fp-linux-ws ########################################### [100%]
# rpm -qa | grep fp
fp-linux-ws-4.4.6-1
ttfprint-0.9-8
#
# cd /usr/local/f-prot/
# ./f-prot -verno
F-PROT ANTIVIRUS
Program version: 4.4.6
Engine version: 3.14.13
VIRUS SIGNATURE FILES
SIGN.DEF created 23 September 2004
SIGN2.DEF created 23 September 2004
MACRO.DEF created 20 September 2004
#
まずはテストをしてみる。
virustestディレクトリを作成して、そこにテストウィルスを格納。
テストウィルスは以下からダウンロードする。
http://www.eicar.org/download/eicar.com
http://www.eicar.org/download/eicar.com.txt
http://www.eicar.org/download/eicar_com.zip
http://www.eicar.org/download/eicarcom2.zip
# ./f-prot virustest/
Virus scanning report - 26 September 2004 @ 21:40
F-PROT ANTIVIRUS
Program version: 4.4.6
Engine version: 3.14.13
VIRUS SIGNATURE FILES
SIGN.DEF created 23 September 2004
SIGN2.DEF created 23 September 2004
MACRO.DEF created 20 September 2004
Search: virustest/
Action: Report only
Files: "Dumb" scan of all files
Switches: -ARCHIVE -PACKED -SERVER
/usr/local/f-prot/virustest/eicar.com Infection: EICAR_Test_File
/usr/local/f-prot/virustest/eicar.com.txt Infection: EICAR_Test_File
/usr/local/f-prot/virustest/eicar_com.zip->eicar.com Infection: EICAR_Test_File
/usr/local/f-prot/virustest/eicarcom2.zip->eicar_com.zip->eicar.com Infection: EICAR_Test_File
Results of virus scanning:
Files: 4
MBRs: 0
Boot sectors: 0
Objects scanned: 7
Infected: 4
Suspicious: 0
Disinfected: 0
Deleted: 0
Renamed: 0
Time: 0:00
#
ちゃんと検知できたようだ。
定期的にパターンファイルをダウンロードするようにcronに登録する。
②SpamAssasinを導入
必要なもの
① (Perl)Net::DNS
② (Perl)Time::HiRes
③ razor-agents
④ (Perl)Mail::SpamAssassin
①②④ともにCPANにあるので、以下にてインストール。
# perl -MCPAN -e shell
cpan> o conf prerequisites_policy ask
cpan> install Mail::SpamAssassin
cpan> quit
ただし、Mail::SpamAssassinインストール前に③razor-agentsを導入しておく。
razor-agetnsはhttp://razor.sourceforge.netより入手可能。(razor-agents-2.61.tar.gzをダウンロード)
# perl Makefile.PL
# make
# make test
# make install
でインストールし、その後セットアップを行う。
# which razor-client
/usr/bin/razor-client
# razor-client
Creating symlink razor-client <== /usr/bin/razor-check
Creating symlink razor-client <== /usr/bin/razor-report
Creating symlink razor-client <== /usr/bin/razor-revoke
Creating symlink razor-client <== /usr/bin/razor-admin
#
# razor-admin -d -create -home=/etc/razor
…
# touch /etc/razor/razor-agent.log
# chmod 666 /etc/razor/razor-agent.log (本当は666はよろしくない…)
次にspamd(SpamAssassinデーモン)用ユーザ/グループの登録
# useradd -g spamd -c "Spam-Assassin Account" -s /bin/false spamd
spamdをスタートアップに登録
# cp cp spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
# chmod 755 /etc/rc.d/init.d/spamd
# chkconfig --add spamd
# netsysv (にて自動起動するように変更)
/etc/sysconfig/spamassassinを作成
/etc/mail/spamassasin/local.cfを編集しルールを設定
(参考にさせてもらったサイト)
・SecureMail - pukiwiki自宅サーバー構築メモ
・SpamAssassin Milterの導入 [FreeBSD](fkimura.com)
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
###########################################################################
#
lock_method flock
# 2バイトコードの判定をゆるやかにするために ポイントを0に変更
score HEADER_8BITS 0
score HTML_COMMENT_8BITS 0
score SUBJ_FULL_OF_8BITS 0
score UPPERCASE_25_50 0
score UPPERCASE_50_75 0
score UPPERCASE_75_100 0
# 感度の設定。標準は5。
# テストを重ねた結果9がベストだと思う。
required_hits 9
# SpamAssassinがspamメールのタイトルを書き換えられるように
# ただしreport_safe が0の場合にのみ有効
rewrite_subject 1
#rewrite_header Subject *****SPAM*****
# spamと判定された時タイトルに付けられるタグの定義
subject_tag [SPAM]
# spam分析結果をメール本文でなくヘッダに付ける
report_safe 1
# SPAMの時だけヘッダーを出すようにするには 0。常に出すなら 1。
always_add_headers 0
# SPAM判定された場合にその判定理由を出す場合には 0。(デフォルト)
# 出したくない場合には 1にしておく。
always_add_report 0
# Spamassassinは全てのメールを対象に次のようなユーティリティを使うのがデフォルトになってるが、
# (詳しくは http://www.spamassassin.org/dist/INSTALL で)
# CPU負荷になるものを避けるために当分インストールせずに使用不可にしておく。
use_dcc 0
use_pyzor 0
# razor2チェックを使用
use_razor2 1
loadplugin Mail::SpamAssassin::Plugin::SPF
loadplugin Mail::SpamAssassin::Plugin::Razor2
razor_config /etc/razor/razor-agent.conf
# SpamAssassinのRBLチェック :
# 既にqmailのrblsmpdでRBLフィルタを用いたが、SpamAssassinのRBLチェックで別のRBL情報の使用を薦める。
# もっと正確にSPAMタグを添付するためだ。
skip_rbl_checks 0
# 3秒以内にレスポンスがない場合はチェックをスキップする。
rbl_timeout 3
# ここで、いくつかデフォルトの点数を変更しておこう。
#
# デフォルトで使用不可になってるbl.spamcop.netのRBLを用いてヒットすれば3点つけることにする。
# 詳しい情報は http://spamcop.net/fom-serve/cache/290.html で。
score RCVD_IN_BL_SPAMCOP_NET 3
# 特定のネットワークアドレスやメールサーバーのあるネットワークを制御できる。
# つまり、信頼できるネットのメールサーバーにRBLチェックをかける必要はないからだ。
# 下の例はcクラスの123.123.123.0/24をSpamassassinのRBLチェックから除外している。
trusted_networks 192.168.30. 192.168.10. 127.
use_bayes 1
bayes_auto_learn 1
bayes_path /home/spamd/.spamassassin/bayes
また、spamdを起動し、学習を行う。
(参考にさせてもらったサイト)
・Easy setup & configuration of SpamAssassin with fetchmail -Tokyo Linux Entertainment Community-
# service spamd start
# cd /home/spamd
# mkdir spam
# cd spam
# wget http://www.flcl.org/~yoh/spam9xxxx.tar.gz
# tar zxf spam9xxxx.tar.gz
# sa-learn --spam *
③qmail-scannerを導入
qmail-queueを実行する前に他のプログラムに渡すパッチを以下からダウンロードしてパッチを適用する。
http://www.qmail.org/qmailqueue-patch
qmailの構築の仕方はこちら。
http://prdownloads.sourceforge.net/qmail-scanner/よりqmail-scanner-1.23.gzをダウンロードし、インストールする。
まずは専用のアカウントを準備する。
# useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand
#
maildropをダウンロードしインストール
http://www.flounder.net/~mrsam/maildrop/
その後configureをかけてインストール。ちなみにmaildropはbzipという形式で圧縮されているため、以下のようにして解凍する。
その後qmail-scannerのconfigureをかけてインストール
# LANG=ja_JP.EUC (日本語対応するため)
# export LANG
# ./configure --install
このままではまだ動かない。(少なくともRH9では)
perl-suidperlをインストールする。sビットがたっているperlモジュール(/var/qmail/bin/qmail-scanner-queue.pl)を実行しようとするとqmailにて、qqエラーが発生してしまうためsuidperlが必要になる。
suidperlについてはRHからダウンロードできる。
次に/var/qmail/bin/qmail-scanner-queue.plを編集
…
#From: line information used when making reports
my $V_FROM='root@hne.jp'; ←警告メールの差出人
my $V_FROMNAME='System Anti-Virus Administrator'; ←警告メールタイトル
# Address carbon-copied on any virus reports
my $QUARANTINE_CC='root@www.hne.jp'; ←警告メールのCC
#Array of local domains that are checked against for
#deciding whether or not to send recipient alerts to
my @local_domains_array=('kamata-net.com', , 'cannon-ball.net', 'avons.jp', 'hne.jp'); ←ウィルスチェックをするドメインを記述
またファイルパーミッションは以下のようになっている必要がある。
ウィルス検査するタイプの指定ファイル(/var/spool/qmailscan/quarantine-attachments.txt)を編集する。
(参考にさせてもらったサイト)
・qmail-scanner
・9.3 ウィルススキャンの設定
設定を有効にする
ウィルスは/var/spool/qmailscan/quarantine/new/配下に格納される為以下のコマンドをcronに仕込み定期的に削除しなければならない。
④qmailの設定変更
tcpserverに環境変数を追加する。
smtp用tcpserver設定ファイルは以下の通り
127.0.0.1:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/var/qmail/bin/qmail-queue"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
ローカルネットワークとループバックアドレスからのSMTPアクセスではウィルスチェックをしないようにしている。
tcpserverのDB更新も忘れずに
(参考にさせてもらったサイト)
・Qmail-Scanner Frequently Asked Questions
また、うちの環境ではウィルスチェック後wwwサーバに転送するため、/var/qmail/alias/.qmail-defaultファイルに以下のように記述する。
また、/var/qmail/control/smtproutesファイルには受信する全てのドメインについて設定しないと、ループを起こしてしまう。(なぜ.qmail-defaultを見てwww.hne.jpに転送しないのだろう…)
hne.jp:[192.168.aa.bb]
.hne.jp:[192.168.aa.bb]
.kamata-net.com:[192.168.aa.bb]
kamata-net.com:[192.168.aa.bb]
…
⑤チェック
qmailとspamdの再起動を行った後、以下のコマンドにてウィルスを検知できるか確認する。
# cd /usr/local/src/qmail-scanner-1.23/contrib(ソースファイル置き場)
# ./test_installation.sh -doit
また、SPAMメールには以下のヘッダがついていることを確認
Received: from 61.159.253.113
by mail (envelope-from <bbgiyypwbhcxy@passagen.se>, uid 502)
with qmail-scanner-1.23 (f-prot: 4.4.6/3.14.13. spamassassin: 3.0.0. Clear:RC:0(61.159.253.113):SA:1(19.4/9.0):. Processed in 2.305798 secs);
28 Sep 2004 16:22:09 -0000
X-Spam-Status: Yes, hits=19.4 required=9.0
X-Spam-Level: +++++++++++++++++++</bbgiyypwbhcxy@passagen.se>
これによりBecky!ではX-Spam-Status: Yesをゴミ箱にフィルタすることが容易になる。