2015年5月25日月曜日

Amazon AMI にAmavid-new を導入してみた

CentOS の Postfixメールサーバにウイルススキャンとスパムフィルタリング機能追加のため amavisd-new と Clamav を同時にインストールしていました。標準のレポジトリーに amavisd-new と Clamav のどちらも提供されているためyum install でどちらも簡単にインストールできました。

Amazon AMI では、そのままで Postfix + amavisd-new + Clamav 構成のメールサーバは導入はできません。標準のレポジトリーに amavisd-new の提供がありません。Clamav は提供されていて、以下 URL などで分かりやすく導入に関する資料が載っています。

http://www.agilegroup.co.jp/technote/ec2-clamav.html

epel リポジトリを追加すれば yum で amavisd-new もインストールできるようになるようですが、いままで yum でインストールしたことしかなく amavisd-new をインストールすることでどのようなファイルがどこに配置され、どのような設定がされるのかよく分かりません。そのためepel レポジトリからインストールした amavisd-new で問題が起きないか心配です。

そこで amavisd-new (amavisd-new-2.10.1.tar.xz)をプロジェクトのメインサイト

http://www.ijs.si/software/amavisd/ 

からダウンロードして手動インストールしてみました。

[
このブロッグを投稿してからしばらくして、以下 URL のページを見つけました。よくわかっている方のページなので参考になるとおもいます

http://linux.yebisu.jp/memo/765
]


ダウンロードして最初に分かったことは、Postfix 用には2つのファイルしか必要ないということです。 (amavisd 本体と 設定ファイルamavisd.conf) amavisd は Perl で書かれたプログラムで、いくつかの Perlモジュールに依存しているようです 。Perlと依存モジュールがあれば amavisd は動作しそうです。

1. Perl をインストール

2. INSTALL ファイルに記載されている依存モジュールをインストール

Archive::Zip   (Archive-Zip-x.xx) (1.14 or later, currently 1.30)
Compress::Zlib (Compress-Zlib-x.xx) (1.35 or later, currently 2.060)
Compress::Raw::Zlib (Compress-Raw-Zlib) (2.017 or later)
MIME::Base64   (MIME-Base64-x.xx)
MIME::Parser   (MIME-Tools-x.xxxx) (currently 5.504)
Mail::Internet (MailTools-1.58 or later have workarounds for Perl 5.8.0 bugs)
Net::Server    (Net-Server-x.xx) (version 2.0 adds support for IPv6)
Digest::MD5    (Digest-MD5-x.xx) (2.22 or later)
Time::HiRes    (Time-HiRes-x.xx) (1.49 or later)
Unix::Syslog   (Unix-Syslog-x.xxx)
Mail::DKIM     (Mail-DKIM-0.31 or later, currently 0.40)

>perl –MCPAN –e shell
>install [モジュール名]

3. オプションとなっている Mail::Spamassassin モジュールをインストールしようとしましたがエラーになってしまいます。代わりに yum で spamassassinをインストールしました。

これで amavisd の実行環境は整ったはずですが、amavisd はどのように起動するのでしょうか。ダウンロード済のファイルに amavisd-init.sh がありました。とりあえず開いてみると "/usr/sbin/amavisd"(19行名), "/etc/amavisd.conf"(22行目)となっています。amavisd 本体は /usr/sbin に、設定ファイルは /etc にコピーしておけば、amavisd-init.sh で起動できそうです。

シェルスクリプトを /etc/init.d に amavisd という名前でコピーしてから、chkconfig –add でサービス登録、最後に/sbin/service amavisd start で起動できるはずですが、起動前に /etc/amavis.conf を確認しておきます。

17/18行目に起動ユーザ名/グループの指定があります。

17行 $daemon_user  = 'vscan';     # (no default;  customary: vscan or amavis), -u
18行 $daemon_group = 'vscan';     # (no default;  customary: vscan or amavis), -g

以下の行のコメントは外しました。

22行  $MYHOME = '/var/amavis';

32行 $db_home   = "$MYHOME/db";      # dir for bdb nanny/cache/snmp databases, -D
33行 $helpers_home = "$MYHOME/var";  # working directory for SpamAssassin, -S
34行 $lock_file = "$MYHOME/var/amavisd.lock";  # -L
35行 $pid_file  = "$MYHOME/var/amavisd.pid";   # -P

ユーザ/グループの既定値はないようです。いままで amavis というユーザ、グループ名を使っていたため、vscanをamavis に変更。まだ、Linux にamavisというグループとユーザがないため、amavis グループとユーザをログイン不能(-s /sbin/nologin)として作成しました。ホームディレクトリは /var/amavis にしました。

これで起動できそうです。amavis サービスをスタートすると、エラーが表示されました。必要なディレクトリが存在しないようです。/etc/amavisd.conf を見ると 36行目に

#NOTE: create directories $MYHOME/tmp, $MYHOME/var, $MYHOME/db manually

とあります。$MYHOME = '/var/amavis' ですので /var/amavis/tmp, /var/amavis/var, var/amavis/db ディレクトリを作成してから、ディレクトリのオーナーとグループをamavis に変更後、再度サービスをスタートさせてみました。起動しました。停止もできました。

Clamav との連携も amavis.conf の 383-386行のコメントを外して387-391行の Note の通りに設定すれば問題ないようです。

まだ確認したわけではありませんが、amavisd-new のインストールは Perl関連モジュール導入するだけなので epel レポジトリからインストールしても問題はなさそうです。インストール後の amavis.conf の$daemon_user、$daemon_groupとソケットファイル名を確認すれば Clamavとの連携も問題はないのではないでしょうか。

INSTALLファイル43-49行に外部プログラム(解凍用)に関する記述があります。

The following external programs are used for decoding/dearchiving
if they are available:
  compress, gzip, bzip2, nomarch (or arc), lha, arj (or unarj), rar (or unrar),
  unzoo (or zoo), pax, cpio, lzop, freeze (or unfreeze or melt), ripole,
  tnef, cabextract.
Self-extracting archives (executables) can be of types zip, rar, lha or arj,
and are only recognized when the corresponding dearchiver is available.

レポジトリから amavisd-new を Yum でインストールすると、これらのプログラムもインストールされるはずです。しかし、Amazon AMI ではrar, ripole, tnef などを別途導入しないとログに必要な外部プログラムが存在しないと書き込まれてしまいました。Amazon AMI 標準のレポでは提供されていないようなので、ログをみて必要な解凍プログラムを rpmforge から導入しました。

インストールが完了後に INSTALLファイルの下の方にインストール方法に関する説明が
あることを発見しました。わざわざ手動インストールしたので、ここに記載されている手順にしたがってインストールしたら amavis についてよくわからないままになっていたはずです。amavis.conf ファイルを見ながら(試行錯誤しながら)導入したおかげで いままでより amavis がよく分かった様な気がします。

備考:

いままでAmavisd の重要な設定について以下URLの解説が役に立ちました。amavisd と PostfixやClamav と連携する方法の説明は見かけますが、ウィルス感染したファイルが添付されていると判断されメールや、スパムと判断されたりしたメールをどう扱うかの設定についての説明はあまり見かけません。このページでは virus, spam, bad headerメールをどのように処理するのかの設定を説明しています。

http://www200.pair.com/mecham/spam/amavisd-settings.html



0 件のコメント:

コメントを投稿