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コマンドで探し出す。

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


 設定内容


3. 設定反映
書き換えた設定をAMaViSに反映させる為にプロセスの再起動を行う。

# systemctl restart amavis.service
# netstat -an | egrep -i "tcp.*10026.*LISTEN"


構築(CentOS)

1. インストール
コアとなるclamavと関連ライブラリはEPELリポジトリを使っている為、
事前にEPELリポジトリを追加しておく必要がある。

# yum install amavisd-new spamassassin
# yum install clamav clamav-data clamav-filesystem clamav-lib clamav-scanner-sysvinit clamav-scanner
# yum install clamav-server-systemd clamav-server-sysvinit clamav-server clamav-update


2. 設定
CentOSの場合amavisの設定ファイルは、/etc/amavisd/amavisd.confの一つに集約されている。
/etc/clamd.d/amavisd.confにも設定があるが、こちらは使わないので放置する。

 設定内容


3. スクリプト書き換え
デフォルトのままだと、amavisd本体clamdが呼び出すamavisプロセスの2つが動いてしまい、
2倍のメモリを消費してしまう。
起動スクリプトを調整する事で、二重起動を防止する。

 設定内容


4. 設定反映
amavisdを一つだけにする為、関連するプログラムを再起動する
設定を間違えてamavisdが二重起動しようとしている場合や、systemdによるサービス自動再起動が動作し、
プログラムが上手く再起動出来ない(1つだけにならない)場合は下記ログがmessagesに出力される

systemd: Starting clamd scanner (amavisd) daemon...
clamd:   ERROR: Can't open/parse the config file /etc/clamd.d/amavisd.conf
systemd: clamd@amavisd.service: main process exited, code=exited, status=1/FAILURE
systemd: Unit clamd@amavisd.service entered failed state.
systemd: clamd@amavisd.service failed.
systemd: clamd@amavisd.service holdoff time over, scheduling restart.
systemd: start request repeated too quickly for clamd@amavisd.service
systemd: Started clamd scanner (amavisd) daemon.

 

※再起動順序
amavisdがforeground引数を付けた状態で起動していたら、clamd経由でamavisが起動している(二重起動状態)
---
# systemctl restart clamd
# systemctl restart amavisd
# netstat -an | egrep -i "tcp.*10026.*LISTEN"
# ps -ef | grep amavis