ClamAv+Amavisd-newでメールサーバにウィルス対策

December 11, 2007 – 9:09 pm

前回のエントリで書いたように、一応、メールサーバを立ち上げることができた。メールサーバを立ち上げると、どうしてもウィルス対策、さらにはスパムメール対策をしなければという気分になる。Linuxで使用できる無償のウィルス対策用ソフトとしては、Clamav、Amavisd-newのセットが定番のようだ。我がPCサーバにもこれをインストールすることにした。

ウィルス対策の仕組み: ClamAv+Amavisd-newにより、どのようにウィルス対策が行われているのか、その仕組みをネット上の解説記事を頼りに調べてみた。「スタックアスタリスク」のサイトに「Postfixの運用・管理第03回:ウィルス対策」と題する解説を見つけた。ここでは、MTAとしてPostfixを採用した場合のウィルスチェックメカニズムが簡潔に説明されている。説明を要約すると次のようにまとめることができる。

Postfixにより受信したメールは、まず、Amavisに送られる。Amavisは、受信したデータを、解凍などのデータ処理によりデータ本来のかたちに戻したのち、ウィルスチェックプログラム、ClamAvに送る。ClamAvで行ったウィルスチェックの結果は、Amavis経由で、Postfixに通知され、一連のウィルスチェックを行ったメールが配送されることになる。

Amavis、Clamavのインストール: Postfixは、前回の作業で、既にインストール済み。ここでは、Amavis、Clamavのインストール作業をやらねばならない。これまで、我がサーバのインストール作業は、yumを頼りにしてきた。残念ながら、CentOS5では、これらふたつのソフトは、標準のレポジトリには含まれていないらしい。インストールに先立ちレポジトリの準備からインストール作業を開始する。

レポジトリファイルの作成は、「はじめての自宅サーバ構築~Fedora/CentOS~」さんに示されているものをそのまま使わせて頂いた。/etc/yum.repos.d/CentOS-Dag.repoファイルを作成し、その内容を以下のように編集した。

[dag]
name=CentOS-$releasever – Dag
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

yumによるダウンロード・インストール:  このレポジトリを用いて、Amavis、ClamAvのパッケージを、yumを用いて、ダウンロードインストール。

yum –y install clamav
yum –y install amavis-new

インストール終了後、レポジトリファイルのenabled=1をenabled=0に変更し、今回、作成したレポジトリの役割はひとまず終了。

ClamAvのyumインストールで、clamav-db、clamav、clamdがインストールされていた。インストールされたバージョンは、0.91.2、これはClamAvのフィシャルサイトで示されている最新版リリースと一致している。Amavis-newのバージョンは、2.5.2。これもamavis-newの最新版リリースになっている(ここで確認)。一応、初期インストールはうまくいったようだ。

これで、一応、ウィルスチェックを行うソフトの顔並みは揃った。いよいよ、設定作業の開始である。

Postfixの設定:Amavisdとのデータ送受信を行うため、まず、設定ファイル /etc/postfix/main.cfに以下の行を付け加える;

content_filter=smtp-amavis:[127.0.0.1]:10024

次に、/etc/postfix/master.cfを編集し、以下を付け加える;

smtp-amavis unix -    -    n    -    2  smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -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
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000

これにより、Postfixで受信したメールは、一旦、ポート10024/tcpを介してamavisd転送され、amavisdから戻されるウィルスチェック済みメールはポート10025/tcpを介して再受信されることになるはずだ。(設定の詳細は、「ハッピーリナックス」さんの記事を参照させて頂いた)。

Clamavの設定: clamdデーモンの設定ファイル/etc/clamd.confは、yumによりダウンロード/インストールしたものを、特には、編集することなく使用した。正直なところ、Clamavとamavisdの間の通信、データのやり取りがどのように設定されていくのかは理解できないままになってしまった。また、後日、検討することにしよう。ウィルスデータベース更新用のfreshclamの設定ファイル/etc/freshclam.confについても、特に変更を加えなくオリジナル版をそのまま用いた。

amavisdの設定: ディフォルトの/etc/amvisd.conf を編集し、以下の部分についてのみオリジナルと異なる設定を行った。

$mydomain = ‘domain.tld’
$myhostname = ‘hostname.domain.tld’
$final_virus_destiny = D_PASS
$final_spam_destiny = D_PASS

この設定では、ウィルスが検知されたメールそしてスパムメールのいずれについても、受信者に対して無条件に配送することになっている。現状では、このメールサーバは、私一人で使用している。ユーザーが増えた段階で運用形態を変えることにする。また、この設定に際しては、Postfixにおいて定義した通信用ポートの設定との整合性を分かる範囲で確認した。問題なさそうだ。

以上の設定の後、関連するソフト(デーモン)clamd、amavisd、spamassassinを自動起動をさせるため、以下のコマンドを実行

/sbin/chkconfig clamd on
/sbin/chkconfig amavisd on
/sbin/chkconfig spamassassin on

メールサーバを動作させるために、postfixの再起動、そして、その他3つのソフトを新たに起動。

/sbin/service postfix restart
/sbin/service clamd start
/sbin/service amavisd start
/sbin/service spamassassin start

なお、上記のspamassassinはスパム判定用ソフトで、amavis-newをインストールすると、一緒に、インストールされている。

これで、ウイルス対策を施したメールサーバが立ち上がった。一応、テスト用のダミーウィルスを用いてテストも行ない、機能も確認してみた。このテスト結果については、その他のメールサーバ構築を通じて気のついたことも含めて、次回の記事で書くことにしよう。

関連ポスト: