メールサーバー構築 SMTP Virus Filter using ClamAV

(最終更新日時:2012-11-19 20:13:50)
アンチウィルスソフト Clam AntiVirus をSMTPサーバー Postfix と連携させるためのフィルター ClamSMTP をインストールします。

clamsmtp-1.8.tar.gz による構築情報は、http://www.system-act.com/archives/mail/clamsmtp.html に移動しました。
参照の状況により予告なく削除いたします。ご了承ください。
なお、今後 ClamSMTP の tar による構築情報の更新予定はありません。

インストール

ソースRPMを取得しインストールします。
公式サイト : http://memberwebs.com/stef/software/clamsmtp/
[devel]$ cd rpmbuild/SRPMS
[devel]$ wget http://www.inet.lt/clamsmtp/clamsmtp-1.10-1.src.rpm
[devel]$ rpmbuild --rebuild clamsmtp-1.10-1.src.rpm

[devel]$ sudo yum -y --nogpgcheck localinstall ../RPMS/x86_64/clamsmtp-1.10-1.x86_64.rpm
[devel]$ rm -f clamsmtp-1.10-1.src.rpm

※ 以下の内容は clamsmtp-1.10 を対象に記述しています。
※ 下線部は 2012/11/19 現在の最新バージョンです。

設定

設定ファイルを編集します。
# vi /etc/clamsmtpd.conf
----------(vi ここから)----------
       :
# Address to listen on (defaults to all local addresses on port 10025)
#Listen: 0.0.0.0:10025
Listen: 127.0.0.1:10025                                       # localhostの待機ポートです
       :
# A header to add to all scanned email
#Header: X-Virus-Scanned: ClamAV using ClamSMTP
Header: X-Virus-Scanned: ClamAV using ClamSMTP                # メールヘッダを追加します

# Directory for temporary files
#TempDirectory: /tmp
TempDirectory: /tmp                                           # 作業用ディレクトリです
       :
# Whether or not to keep virus files
#Quarantine: off
Quarantine: on                                                # ヘッダ情報を通知するため、メールを一時的に残します
       :
# User to switch to
#User: clamav
User: clamav                                                  # clamav ユーザで実行します
       :
#VirusAction: /path/to/some/script.sh
VirusAction: /usr/local/etc/email_virus_action.sh             # ウィルス検出時に実行するスクリプトです
       :
----------(vi ここまで)----------

ウィルス検出時に実行するメール通知スクリプトを作成します。
# vi /usr/local/etc/email_virus_action.sh
----------(vi ここから)----------
#!/usr/bin/perl
# ==========================================================================================
# File    : /usr/local/etc/email_virus_action.sh
# Author  : System House ACT
# History : $Date:: 2012-11-19 20:11:47 #$ $Rev: 49 $ $Author: tyamaguchi $
#
# ClamSMTP ウィルス検出時のメール通知スクリプト
#
# Copyright 2008-2012 System House ACT All rights reserved.
# ==========================================================================================

use Encode qw(from_to);

$FROM   = 'ClamSMTP <clamsmtp>';
$TO     = 'virusalert';
$MAILER = '/usr/sbin/sendmail -t';
$LINE   = "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n";

$hdr = << EOM;
From: $FROM
To: $TO
Subject: ウィルスメール受信通知($ENV{VIRUS})
EOM

$body = << EOM;
以下のメールからウィルス($ENV{VIRUS})が検出されました。
メールおよびウィルスはメールサーバが削除しました。

発信元:$ENV{SENDER}

宛先  :$ENV{RECIPIENTS}

メールのヘッダ情報:
EOM

open(F, "|$MAILER") || die "$MAILER: $!";
  Encode::from_to($hdr,  'utf8', 'iso-2022-jp');
  Encode::from_to($body, 'utf8', 'iso-2022-jp');
  print F $hdr;
  print F $body;
  open(H, "formail -X '' < $ENV{EMAIL} |") || die;
    @hdrinf = <H>;
  close(H);
  print F $LINE;
  foreach (@hdrinf) { print F "$_"; }
  print F $LINE;
close(F);

unlink($ENV{EMAIL});
----------(vi ここまで)----------
# chmod 755 /usr/local/etc/email_virus_action.sh

# # メールのヘッダ情報を抽出するため formail を使用しますので、procmail をインストールします。
# yum -y install procmail

起動

自動起動スクリプトを取得し、起動します。
# cd /etc/rc.d/init.d
# wget http://memberwebs.com/stef/software/clamsmtp/contrib/clamsmtpd
# chmod 755 /etc/rc.d/init.d/clamsmtpd
# chkconfig clamsmtpd on
# service clamsmtpd start

パッケージアップデートチェックの抑止

リポジトリに EPEL を追加しているため、EPELのClamSMTPパッケージから依存関係のチェックを行おうとします。
EPELのClamSMTPは、clamavではなくclamav-serverと依存関係を持っているため、毎日 yum.cron から依存関係のエラーメッセージが通知されます。
clamsmtpについては、アップデートのチェックを行わないようにします。
# vi /etc/yum.conf
----------(vi ここから)----------
       :
distroverpkg=centos-release
exclude=clamsmtp*

#  This is the default, if you make this bigger yum won't see if the metadata
       :
----------(vi ここまで)----------

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は、Weblog/Twitter にて受け付けております。

System House ACT Weblog 内記事 : メールサーバー構築 ClamSMTP

トラックバックまたはコメントにてお寄せください。

Twitter では .@systemact 宛につぶやいてください。
また、こちら から、この記事についてつぶやくことができます。
a System House to build an Accounting system by the Computer Technology