postfix logo Postfixのぺーじ
− Postfix - AMaViS - Sweep HOWTO
更新: 2005年2月19日 [English Page]


ホームオリジナルドキュメント >Postfix - AMaViS - Sweep HOWTO


この HOWTO の原文は Shannon Lekas さん (Shannon.lekas-at-flyingmug.com) に提供して頂きました。翻訳の許可もいただきましたので、 私(ike@kobitosan.net)が日本語に翻訳しました。


この文章はかなり荒いものです... そしてインストール後におこなったものです... おそらく見逃したことは何もないと思いますが。 (ここで使う)システムは RedHat 7.3 で、up2date を (kernel アップデートも含めて) 常におこなっています。 私は Sophos sweep をウィルススキャナとして動かしていますが、 以下に示す amavis パッケージは約11種類のスキャナをサポートしています。 このドキュメントは、あなたがすでに postfix を動かしていて、 sophos がインストール済みであることを想定しています。 新しい sophos の IDE ファイルを週に1回またはそれ以上取得するために、 cron から動かすスクリプトで wget コマンドを使うことをお勧めします。 以下は私がインストールする際に必要となったパッケージです。 私はこれらの rpm をホスティングするつもりはありませんが、 CD に入れてあるので、もしホスティングしたい人がいれば、 それらを FTP または E-mail で送ります。 代わりに、以下の正確な名前を単に www.google.com で検索してもよいでしょうし、それらの多くは rpmfind.net やその他のサイトで 見つかるでしょう。

amavisd-postfix-20010714-3rm.i386.rpm  
perl-Convert-UUlib-0.212-1.noarch.rpm
arc-5.21e-4.i386.rpm                   
perl-IO-stringy-2.108-1.i386.rpm
perl-MailTools-1.50-1.noarch.rpm
db3x-3.2.9-4.i386.rpm                  
perl-MIME-tools-5.411-2.noarch.rpm
lha-1.14i-4.2rm.i386.rpm               
perl-TimeDate-1.10-14.i386.rpm
ncompress-4.2.4-1cl.i386.rpm           
perl-Unix-Syslog-0.98-1.noarch.rpm
perl-Archive-Tar-0.22-10.i386.rpm      
unarj-2.43-10.i386.rpm
perl-Archive-Zip-1.00-1.i386.rpm       
unrar-2.71-1.1rm.i386.rpm
perl-Compress-Zlib-1.16-1.i386.rpm    
xbin-2.3-4.i386.rpm
perl-Convert-TNEF-0.17-1.noarch.rpm    
zoo-2.10-7.i386.rpm

ダウンロードしたら、それらのインストールを始め、それから 最後に amavis rpm をインストールしてください (そうしないと 依存関係のエラーになるでしょう)。

$rpm -Uvh packagename.rpm

注意: 他に必要なパッケージがあれば,それらは全て私が入れ忘れたものです。 問題があって私に連絡をくれたら、私のシステムと比較するために rpm -qa から抜き出したものを送ります (Shannon.lekas-at-flyingmug.com)。 インストールが終わったら up2date が動いていることを確認してください。 Redhat 製の rpm のいくつかが更新されるでしょう。 最後に Amavis の rpm をインストールします。

$rpm -Uvh amavisd-postfix-20010714-3rm.i386.rpm

この時点ではエラーは出ないはずです。 注意: %pre-scriplet error% エラーが出た場合には、簡単な解決法が あります... これを見つけるまでにとても時間がかかりました。 linuxconfig を開き、UID が 77 の全てのユーザの UID を変えてください。 amavis rpm は vscan というユーザを作りますが、UID 77 がすでに 使われていると rpm は失敗します。UID を変更すれば、RPM は問題なく インストールできるでしょう。ここでこのコマンドを実行します。

$Service amavisd start

これは rpm でインストールされたデーモン版の amavis を起動します。 この rpm パッケージはすでにデフォルトシェルが失敗するような vscan ユーザをインストールしていることに注意してください。 これにより、telnet セッションやコンソールにこの ID では 誰もログインできません。

次に amavisd.conf ファイルを変更します。

$vi /etc/amavisd.conf

設定ファイルに次のように書いてあることに気づくでしょう:

# amavisd (snapshot-20010714) was configured for use with:
# ALL

これはさまざまなアンチウィルススキャナを動かすのに、amavis を 再コンパイルする必要がないことを意味しています。 前にも述べたように、私は sweep を使っています。 そこで私は HBEV path "/usr/bin/antivirus" のエントリを削除し、 "" に変更しました。

# H+BEDV AntiVir
$antivir = "";

そして sophos antivirus バイナリのパスを入れました。

# Sophos Anti Virus (sweep)
$sophos = "/usr/local/bin/sweep";
$sophos_ide = "/usr/local/sav";

sophos を他のディレクトリにインストールしたり、IDE ファイルが 別のディレクトリにある場合は、適当に読み替えてください。 ここで重要なのは、使いたいスキャナ以外のすべてのアンチウィルス スキャナのパスが "" となっていることを確認することです。

ここで何が起こっているかを知るために、ロギングを有効にすることを お勧めします。

$DO_SYSLOG = "yes";

# Directory to put log entries (if not using syslog)
$LOGDIR = "/var/spool/vscan/amavis";
$LOGFILE = "amavis.log";

# 0: default - startup/exit/failure messages
# 1: args passed from client
# 2: virus scanner output
# 3: server client
# 4: decompose parts
$log_level = 4;

syslog = yes をセットすることは、amavis のログエントリが /var/log/messages に書かれることを意味します。 サーバに別の ssh セッションを開いて、何が起こっているかを監視する ために次のコマンドを実行するとよいでしょう。

$tail -f /var/log/messages

log_level = 4 を設定すると、非常に詳細なログメッセージを 得ることが出来ます。

これらを変更したら、次のコマンドを実行します。

$service amavisd restart

/var/log/messages を tail すれば、新しいロギングが有効に なっていることがわかるでしょう。

postfix に入りましょう。

メールを postfix から amavis と sweep に渡してやる必要があります。 これがわかるまでに、私は少し時間がかかりました...そしてこの方法は 完璧ではないかもしれませんが動いています...これより良い方法があれば 私にメールで送ってください。

$vi /etc/postfix/main.cf

ファイルの最後に次の行を追加します。

content_filter = vscan:[127.0.0.1]:10025

これはユーザ vscan が localhost の 10025 番でコンテンツフィルタリング することを postfix に伝えます。

保存して終了します。

ここで master.cf ファイルを編集します。

$vi /etc/postfix/master.cf

次の2行をファイルの最後に加えます。

vscan            unix  -  n  n  -  10  pipe user=vscan argv=/usr/sbin/amavis ${sender} ${recipient}

localhost:10025  inet  n  -  n  -  -   smtpd -o content_filter=

保存して終了します。

次のコマンドを実行します:

$postfix reload

postfix は設定を更新し、これで準備が整います。maillog ファイルを tail していれば、リフレッシュされるのがわかるでしょう。

$tail -f /var/log/maillog

自分自身に email を送ると、maillog ファイルにメールを受信したという エントリが見られるでしょう。 それから、amavis 配送にメールが中継されたというエントリが 見られるでしょう。この時点で /var/log/messages ファイルに、 sweep がスキャンし、配送のために postfix にファイルを戻したという エントリが見つかるはずです。

www.eicar.com へ行って テストウィルスをダウンロードし、それを自分自身にメールを送ると、 /var/log/messages ファイル出力にウィルスが見つかったという 行が見つかるでしょう。その時点で警告メールが作られるはずです。

注意すべきこと。私は包括的なボディチェックも同様にサーバで 動かしています。これでウィルススキャナによる不必要な処理を 避けています。私のサーバでは、生の実行ファイル、つまり .exe, .com, .vbs などがメールで送られるのを認めていません。 ボディチェックは入ってきたり出ていくメールがウィルススキャン される前になされます。 そのため、ウィルスが入ってきても単純な実行ファイルであれば、 サーバがこの形式の添付ファイルを認めていないといって、 ボディチェックが蹴り返すことになります。すなわち、ファイルが ウィルススキャナに渡す必要がなく、処理サイクルを浪費しません。

これが役に立つことを願ってます。

Shannon



ike@kobitosan.net