FreeBSD8.0RでPostfixを通過するメールのウィルスチェックをする

メールがPostfixを通過する際にウィルスチェックを行うようにしたい。

7.0Rや7.1Rでも同じだと思うが、当方が8.0Rに移行しているため、以後はこれで試した記録とする。

下記は、参考にさせて頂いたサイト様で、全て見れば設定できる。

これらのサイトさまから情報を集め、インストールしてみたので忘備録とする。

なお、上記サイト様では、Spamassassinによるスパム対策に触れている所もあるが、このページではSpamassassinを使用しない方向ですすめる。

導入手順

  • Postfixインストール(インストール方法は別ページに記載してあるため割愛する)
  • ClamAVのインストール
  • amavisd-newのインストール(Spamassassinが同時にインストールされるが使用しない)
  • ClamAV(ウィルススキャン)の設定
  • ClamAV(パターン更新)の設定
  • amavisd-newの設定
  • Postfixの追加設定

ClamAV インストール

%su
Password:
# cd /usr/ports/security/clamav
# make install clean
# rehash
  • インストール時にオプション指定を聞かれるが、とりあえずそのままで続行。
  • 依存関係にある他アプリケーションも同時にインストールすることになる(Perlなど)。これが結構時間がかかる。

インストールが完了すると、clamav というユーザが作成される。また、/usr/local/etc/rc.d/ に 次の2つの起動/終了シェルスクリプトが作られるので、確認しておく。

  • clamav-clamd
  • clamav-freshclam

amavisd-new インストール

amavisd-newは、Postfix と ClamAV の橋渡しをするプログラムとのこと。

# cd /usr/ports/security/amavisd-new
# make install clean
# rehash
  • インストール時にオプション指定を聞かれるが、とりあえずそのままで続行。
  • 依存関係にある他アプリケーションも同時にインストールすることになる(Perlなど)。これまた、さらに時間がかかる。
  • Spamassassinが同時にインストールされるが使用しない。

インストールが完了すると、次の2つのユーザが作成される。

  • vscan
  • spamd(使用しない)

また、/usr/local/etc/rc.d/ に 次の起動/終了シェルスクリプトが作られるので、確認しておく。

  • amavis-milter(使用しない)
  • amavisd
  • sa-spamd(使用しない)

ClamAV の設定

/usr/local/etc/clamd.conf

/usr/local/etc/clamd.conf を編集する。ファイルのパーミッションが444になっている場合は、書き込み可にしてからviで開く。

# cd /usr/local/etc/
# chmod 644 clamd.conf
# vi clamd.conf : ここで編集して保存
# chmod 444 clamd.conf

↓下のような具合に、LogTime行のコメントアウトを解除し、さらに、後にインストールする amavisd-new と連動させるため、実行ユーザ を vscan で動かすようにする。

# Log time with each message.
# Default: no
LogTime yes

(途中省略)

# Run as another user (clamd must be started by root for this option to work)
# Default: don't drop privileges
#User clamav
User vscan

/usr/local/etc/freshclam.conf

続けて、/usr/local/etc/freshclam.conf を編集する。ファイルのパーミッションが444になっている場合は、書き込み可にしてからviで開く。

# cd /usr/local/etc/
# chmod 644 freshclam.conf
# vi freshclam.conf : ここで編集して保存
# chmod 444 freshclam.conf

↓下のような具合に、LogTime行のコメントアウトを解除し、さらに、後にインストールする amavisd-new と連動させるため、データベース・オーナー名を vscan で動かすように変更する。

# Log time with each message.
# Default: no
LogTime yes

(途中省略)

# By default when started freshclam drops privileges and switches to the
# "clamav" user. This directive allows you to change the database owner.
# Default: clamav (may depend on installation options)
#DatabaseOwner clamav
DatabaseOwner vscan

ファイル(ディレクトリ)オーナーを変更

先に、ClamAV の実行ユーザを vscan に変更したので、これに合わせて関連するディレクトリのオーナー(とグループ)情報を変更する。

# chown -R vscan:vscan /var/run/clamav
# chown -R vscan:vscan /var/log/clamav
# chown -R vscan:vscan /var/db/clamav

amavisd-new の設定

/usr/local/etc/amavisd.conf

# vi /usr/local/etc/amavisd.conf

下記の部分を編集(コメントを解除したり、値を変更)する。

@bypass_spam_checks_maps  = (1);  # controls running of anti-spam code

$mydomain = 'vdobv-sample.com';   # a convenient default for other settings

$myhostname = 'sample.vdobv.com';  # must be a fully-qualified domain name!

$final_virus_destiny      = D_DISCARD;

# ### http://www.clamav.net/
['ClamAV-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
   qr/\bOK$/m, qr/\bFOUND$/m,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
# # NOTE: run clamd under the same user as amavisd, or run it under its own
# #   uid such as clamav, add user clamav to the amavis group, and then add
# #   AllowSupplementaryGroups to clamd.conf;
# # NOTE: match socket name (LocalSocket) in clamav.conf to the socket name in
# #   this entry; when running chrooted one may prefer socket "$MYHOME/clamd".

この設定ファイルの中に virusalert\@$mydomain という記述がある。このメールアドレスを作成しておく(または使用中のメールアドレスに変更する)と、ウィルス発見時にお知らせメールが届く。

/etc/rc.conf

# vi /etc/rc.conf

FreeBSD起動時にclamd、freshclam、amavidがデーモン起動するように、/etc/rc.conf の中に次の3行を加える。ファイル末尾でよい。

clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
amavisd_enable="YES"

Postfix(追加)設定

# vi /usr/local/etc/postfix/main.cf

下記を追加。ファイル末尾にでよい。

content_filter = smtp-amavis:[127.0.0.1]:10024

さらに

# vi /usr/loca/etc/postfix/master.cf

下記を追加。ファイル末尾でよい。

smtp-amavis unix - - n - 2 smtp
	-o smtp_data_done_timeout=1200
	-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

FreeBSDを再起動する。

# reboot

以上、インストールと設定はここまで。

それぞれのログを確認

  • clamd のログは次のファイルに記録される。
    • /var/log/clamav/clamd.log
  • freshclam のログは次のファイルに記録される。
    • /var/log/clamav/freshclam.log
  • amavis のログは次のファイルに記録される。
    • /var/log/maillog

挙動を確認

eicar に存在するテスト用のウィルスファイルを用いて挙動を確認する(利用は自己責任で!)。

ウィルス添付メールを、FromPerson ⇒ ToPerson として送る。

$final_virus_destiny の値による通知先

D_DISCARD virusalertへ通知
D_BOUNCE virusalertへ通知
D_REJECT FromPersonとvirusalertへ通知
D_PASS Subjectに「INFECTED」を付けてToPersonへ送信し、virusalertへ通知

送信者に対してDSNを返したい場合は、

$final_virus_destiny = D_BOUNCE; 

もしくは、

$final_virus_destiny = D_PSSS;
$warnvirussender = 1;

と設定するようだが、実際には未確認。

ウィルスメールと判断されたデータは下記ディレクトリに保管されるようだ(しばらく様子をみることにする)。

# cd /var/virusmails/
# ls -al
freebsd8.0r/clamav_and_amavisd-new_and_postfix.txt · 最終更新: 2010/01/21 16:44 by vdobv
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0