UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Linux - CentOS Postfix+AMaViS+Clamav



一般的にメールサーバのウィルス対策といえばメールゲートウェイの位置でアプライアンスなどを導入しそこでウィルスやスパムなどのチェックをしてスプールサーバに流すのが主なやり方だと思いますがスプールサーバ側でも実施することで2重のチェックを行うのも悪くないと思います。


但し、ここで紹介するのはウィルス対策のみでスパム対策は行いません。スパム対策はメールゲートウェイのみで行うのが望ましいと考えておりなおかつアンチスパムソフトを導入するとメールサーバの動作がかなり重くなるからです。


OSはRHEL6.0(32bit)です。必要なソフトをyumからインストールしますが、そのままだと依存関係でエラーが発生し蹴られてしまいましたので、これを回避するため以下の設定を行いました。

# vi /etc/yum.repos.d/rpmforge.repo

[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/extras
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

# yum check-update

yumで必要なソフトをインストールします。

# yum install amavisd-new clamav clamd

# rpm -qa | grep amavisd-new
amavisd-new-2.6.6-3.el6.rf.i686

# rpm -qa | grep clamav
clamav-0.97.6-1.el6.rf.i686
clamav-db-0.97.6-1.el6.rf.i686

# rpm -qa | grep clamd
clamd-0.97.6-1.el6.rf.i686


私の場合、上記のコマンドで関連パッケージが50個程度、合わせてインストールされました。



■AMaViSの設定


ア ンチウィルスソフトとMTAを連携させるためにAMaViSを利用します。AMaViSはMTA上で動作し外からメールサーバに到達したメールをメールボックスに配信する前に添付ファイルを抽出し、もし圧縮されていれば解凍し、アンチウィルスプログラムに渡しその結果を使って配送を行います。/etc/amavisd.confが設定ファイルとなりますが、以下は必要な部分のみ抜粋して記載しています。

# vi /etc/amavisd.conf

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

$mydomain = 'unix-power.net'; # a convenient default for other settings
$virus_admin = "virusalert\@$mydomain"; # notifications recip.

$mailfrom_notify_admin = "virusalert\@$mydomain"; # notifications sender
$mailfrom_notify_recip = "virusalert\@$mydomain"; # notifications sender
$mailfrom_notify_spamadmin = "spam.police\@$mydomain"; # notifications sender

# ### http://www.clamav.net/
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
qr/\bOK$/m, qr/\bFOUND$/m,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],


上記の他にも細かいオプションは定義可能ですので上記以外の設定を行いたい場合は頑張って英語を解読して下さい。



■ClamAVの設定


設定ファイルは/etc/clamd.confです。これはウィルス検査時の動作を設定するファイルです。これの主な設定項目を以下に記載しますが、これ以外にも多数のオプションが設定可能です。

# vi /etc/clamd.conf

LogFacility LOG_MAIL
LogVerbose yes

# Default: 100M
MaxScanSize 10M

# Default: 25M
MaxFileSize 10M

# Default: 16
MaxRecursion 10

# Default: 10000
MaxFiles 15000


以下のコマンドでウィルス定義ファイルの更新を行うことができます。cronに登録しておくと便利です。

# freshclam
ClamAV update process started at Wed Dec 12 16:37:09 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 27.96.54.66)
WARNING: getpatch: Can't download daily-15077.cdiff from db.jp.clamav.net
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 218.44.253.75)
WARNING: getpatch: Can't download daily-15077.cdiff from db.jp.clamav.net
WARNING: getfile: daily-15077.cdiff not found on remote server (IP: 203.212.42.128)
WARNING: getpatch: Can't download daily-15077.cdiff from db.jp.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
connect_error: getsockopt(SO_ERROR): fd=5 error=110: Connection timed out
Can't connect to port 80 of host db.jp.clamav.net (IP: 219.106.242.51)
Trying host db.jp.clamav.net (203.212.42.128)...
Downloading daily.cvd [100%]
daily.cvd updated (version: 15737, sigs: 302602, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 204, sigs: 41, f-level: 63, builder: neo)
Database updated (1347030 signatures) from db.jp.clamav.net (IP: 203.212.42.128)
WARNING: Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd.sock
connect(): No such file or directory

# freshclam
ClamAV update process started at Wed Dec 12 16:42:29 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cvd is up to date (version: 15737, sigs: 302602, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 204, sigs: 41, f-level: 63, builder: neo)


ちなみにメールのみに使えるウィルスエンジンというわけではなく手動でファイルをスキャンすることも可能です。例えば/etc以下にあるファイル全てをウィルスチェックしてみたいという場合、以下のコマンドで実施可能です。

# clamscan /etc
/etc/rndc.key: OK
<省略>

----------- SCAN SUMMARY -----------
Known viruses: 1341636
Engine version: 0.97.6
Scanned directories: 1
Scanned files: 125
Infected files: 0
Data scanned: 1.89 MB
Data read: 1.22 MB (ratio 1.55:1)
Time: 6.112 sec (0 m 6 s)



■Postfixの設定


Postfixの設定を修正します。メールはPostfix→AMaViS→ClamAV (ウィルス感染していれば隔離 )→AMaViS→Postfixという流れでウィルスチェックが行われます。

# vi /etc/postfix/main.cf

content_filter = smtp-amavis:[127.0.0.1]:10024

# vi /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



■各種デーモンの起動


ここ まで設定できれば各種デーモンを起動します。

# /etc/rc.d/init.d/clamd restart
Stopping Clam AntiVirus Daemon: [ OK ]
Starting Clam AntiVirus Daemon: [ OK ]

# /etc/rc.d/init.d/amavisd start
Mail Virus Scanner (amavisd) を起動中: fetch_modules: error loading optional module \ MIME/Decoder/BinHex.pm:
Can't locate Convert/BinHex.pm in @INC <省略>
[ OK ]


上記のようにAMaViS起動の際に何やらエラーらしきものが発生しました。ないと言っているパッケージをyumでインストール。

# yum install perl-Convert-BinHex
# /etc/rc.d/init.d/amavisd restart
Mail Virus Scanner (amavisd) を停止中: [ OK ]
Mail Virus Scanner (amavisd) を起動中: [ OK ]


無事 起動しました。Postfixもリロードしておきます。

# /etc/rc.d/init.d/postfix reload
postfix を再読み込み中: [ OK ]


これでウィルスチェックがかかり、パスしたもののみ送受信するよう設定が完了しました。本当にウィルスチェックがかかっているかテストファイルを添付して送ってみてください。




 

 関連記事
 Postfix+Dovecotのインストール
 Postfix+Dovecot+OpenLDAPの設定
 PostfixAdmin+Dovecot+MySQLのインストール
 Postfixでバーチャルドメイン
 Mailmanのインストール
 RoundCubeのインストール
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.