AMaViS

clamavと連携させる事で、メールのウイルス検査を実現するソフトウェア。
単体でリレーMTAとして動作させる事も可能だが、
sendmailやPostfixとかの他MTAで一度受けた後にAMaViSに転送する方が、
セキュリティ的に望ましい。

構築環境

今回検証した環境はこちら

構築(Debian環境)

1. インストール
amavisの一部コマンドがnon-freeリポジトリを使っている為、
リポジトリを追加する事でインストール出来るようにする必要がある。

# vi /etc/apt/sources.list.d/jessie.non-free.list
==================================================
deb http://ftp.jp.debian.org/debian/ jessie non-free
deb http://ftp.jp.debian.org/debian/ jessie-updates non-free
deb http://ftp.jp.debian.org/debian/ jessie-backports non-free

# apt-get install amavisd-new spamassassin clamav-daemon
# apt-get install pyzor razor libnet-dns-perl libmail-spf-perl
# apt-get install arj bzip2 cabextract cpio file gzip lha nomarch pax rar unrar unzip unzoo zip zoo


2. 設定
debian環境の場合は、amavisの設定ファイルが細切れになっている。
概ね、機能毎に纏まっているが一部の設定は全く違うファイルにあったりするので、
該当するコンフィグが見つからない場合は、

# grep -r "検索文字列" ./*

で探し出すのが良い。


そのまま使う設定ファイル

/etc/amavis/conf.d/01-debian
/etc/amavis/conf.d/30-template_localization
/etc/amavis/conf.d/50-user



/etc/amavis/conf.d/05-domain_id

< chomp($mydomain = `head -n 1 /etc/mailname`);
---
> chomp($mydomain = "hoge.org");



/etc/amavis/conf.d/05-node_id

< chomp($myhostname = `hostname --fqdn`);
---
> chomp($myhostname = "mail.hoge.org");



/etc/amavis/conf.d/15-av_scanners

! ['ClamAV-clamd',
!   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"],
!   qr/\bOK$/m, qr/\bFOUND$/m,
!   qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
---
&ask_daemonの第2引数をclamavのソケットと合わせる



/etc/amavis/conf.d/15-content_filter_mode

< @bypass_spam_checks_maps = (
<   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
---
> @bypass_spam_checks_maps = (1);



/etc/amavis/conf.d/20-debian_defaults

< $QUARANTINEDIR = "$MYHOME/virusmails";
< $quarantine_subdir_levels = 1; # enable quarantine dir hashing
---
> ###$QUARANTINEDIR = "$MYHOME/virusmails";
> ###$quarantine_subdir_levels = 1; # enable quarantine dir hashing
==================================================
< @keep_decoded_original_maps = (new_RE(
<   qr'^MAIL$',
<   qr'^MAIL-UNDECIPHERABLE$',
<   qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
<   qr'^Zip archive data',
< ));
---
> @keep_decoded_original_maps = (new_RE(
>   qr'^MAIL$',
>   qr'^MAIL-UNDECIPHERABLE$',
>   qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
> ###qr'^Zip archive data',
> ));
==================================================
! [1] $inet_socket_bind = '127.0.0.1';
! [2] $inet_socket_port = 10026;
! [3] $forward_method = 'smtp:[127.0.0.1]:10025';
! [4] $X_HEADER_TAG = 'X-Virus-Scanned';
! [5] $X_HEADER_LINE = "$myproduct_name at $mydomain";
! [6] $virus_admin = 'admin@mail.hoge.org';
! [7] $spam_admin = 'admin@mail.hoge.org';
---
[1] amavisの待ち受けるIPアドレス
[2] amavisの待ち受けるTCPポート番号
[3] ウイルス検査完了メールの転送先。例だとIP:127.0.0.1-TCP/10025に投げる
[4] ウイルス検査完了メールに付与するヘッダ
[5] ウイルス検査完了メールに付与するヘッダパラメータ
[6] ウイルスメールの転送先アドレス。ドメイン部を$mydomainに置き換え可能
[7] スパムメールの転送先アドレス。ドメイン部を$mydomainに置き換え可能


構築(OpenSUSE版)