amavisd-new(A Mail Virus Scanner)というメールフィルターがあります。このソフトは、SMTPで取り扱うメールをspamチェッカーやウィルスチェッカーに送ってチェックするためのフィルターです。
このソフトとClam AntiVirusを組み合わせて、ウィルスメールフィルターを設定したいと思います。
MTAはpostfixを使用している前提で書いています。
ちなみに、spamフィルターまで入れてしまうと、自分がお客さんなどに送信するメールまでspam扱いされる可能性もありますので、amavisd-newではspamメールフィルターは使わないようにします。
まず、インストールの際、一点注意点があります。
amavisd-newもportsから一発インストールできるのですが、Clam AntiVirusと連携する場合は、ユーザー・グループを一致させる必要があります。
そのため、makeにオプションをつけてインストールします。
(こちらのサイトを参考にしました:http://www.leafgreen.jp/freebsd/clamav.html)
# cd /usr/ports/security/amavisd-new
# make AMAVISUSER=clamav AMAVISGROUP=clamav install
インストールが完了したら、設定に入ります。
まずは、/usr/local/etc/amavisd.confを設定します。
以下の設定を有効にします。
@bypass_spam_checks_maps = (1); # controls running of anti-spam code
$daemon_user = 'clamav'; # (no default; customary: vscan or amavis), -u
$daemon_group = 'clamav'; # (no default; customary: vscan or amavis), -g
$mydomain = 'harmonicom.jp'; # a convenient default for other settings
「@bypass_spam_checks_maps」が入っていると、spamフィルターが動作しなくなります。
また、以下はコメント化してしまいます。
#$virus_admin = "virusalert@$mydomain"; # notifications recip.
#$mailfrom_notify_admin = "virusalert@$mydomain"; # notifications sender
#$mailfrom_notify_recip = "virusalert@$mydomain"; # notifications sender
#$mailfrom_notify_spamadmin = "spam.police@$mydomain"; # notifications sender
#$mailfrom_to_quarantine = ''; # null return path; uses original sender if undef
ウィルスメールが来るたびに警告メールが欲しい人は、逆にここを設定してください。
私は不要だと思ったので入れていません。
そして、以下の設定を記述します。
$undecipherable_subject_tag = '';
$myhostname = 'mail.harmonicom.jp'; # must be a fully-qualified domain name!
$notify_method = 'smtp:[127.0.0.1]:10025';
$forward_method = 'smtp:[127.0.0.1]:10025'; # set to undef with milter!
$undecipherable_subject_tagは、圧縮ファイルなどでチェックできなかったものがある場合に、Subjectに文字列を追加します。デフォルトだと「***UNCHECKED***」と入るので、これがうっとうしい場合は、空文字を指定します。
また、amavisd-newはウィルス検知のたびに警告メールを送ってくるので、静かにさせるために下記の設定を追加します。
$warnvirussender = 0;
$warnspamsender = 0;
$warnbannedsender = 0;
$warnbadhsender = 0;
ここも前述のとおり、警告メールが必要な人は入れないようにしてください。
そして使用するウィルス対策ソフトの設定をします。
Clam AntiVirusを有効にします。
@av_scanners = (
### http://www.clamav.net/
['ClamAV-clamd',
&ask_daemon, ["CONTSCAN {}n", "/var/run/clamav/clamd"],
qr/bOK$/, qr/bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
@av_scanners_backup = (
### http://www.clamav.net/ - backs up clamd or Mail::ClamAV
['ClamAV-clamscan', 'clamscan',
"--stdout --no-summary -r --tempdir=$TEMPBASE {}",
[0], qr/:.*sFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
これ以外のウィルスチェッカーは全てコメントアウトします。かなり多くてめんどくさいですが、がんばってください。
次に、postfixの/usr/local/etc/postfix/main.cfに以下の設定を追記します。
content_filter = smtp-amavis:[127.0.0.1]:10024
最後に、同じくpostfixの/usr/local/etc/postfix/master.cfに下記の設定を追記します。
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
全ての設定が完了したら、/etc/rc.confに
amavisd_enable="YES"
を追加して、amavisd-newを起動し、postfixを再起動します。
Clam AntiVirusのデーモンが起動していなかったら、併せて起動します。
# /usr/local/etc/rc.d/amavisd start
# /usr/local/etc/rc.d/postfix restart
# /usr/local/etc/rc.d/clamav-clamd start
ためしに設定したメールサーバーを使ってテストメールを送ってみましょう。
eicarというところでテスト用の擬似ウィルスコードを配布していますので、そのコードをメール本文に記述して、送信してみてください。
http://www.eicar.org/anti_virus_test_file.htm
マシンのウィルスチェッカーに引っかかって送信できない人は、sendmailコマンドで試してみましょう。
# sendmail (自分のアドレス)
(eicarコードを入力)
.
すると、メールログやClamAVのログにウィルス検知の記録が残ります。
# cat /var/log/maillog
Jan 7 18:44:28 mail amavis[21882]: (21882-19) Blocked INFECTED (Eicar-Test-Signature), <ooo> -> <xxxxx>,
quarantine: virus-45nAaY2kC6uX, Message-ID: <20080107094428.0C049138B496@xxx.jp>,
mail_id: 45nAaY2kC6uX, Hits: -, size: 403, 146 ms
# cat /var/log/clamav/clamd.log
Mon Jan 7 18:44:28 2008 -> /var/amavis/tmp/amavis-20080107T173525-21882/parts/p001: Eicar-Test-Signature FOUND
コメントする