sendmail+spamassassin+clamav

2006.10.08  追記2007/09/24 ClamAV 0.91.2アップデート

前々からやってみたいなと思いながらなかなか手をつけれずにいたが、遅ればせながらやっとSpamAssassinに挑戦してみることができた。ついでにSpamassassinが動作してからClamAVも入れてみた。
まずは情報集めとWebを検索してはみたが、今のご時世ではFedora Core 4とsendmailのドンピシャは引っ掛かってこないな。みんなPostfixばっかりだ。そんなわけで、さしづめつぎあたりが参考になりましょうか。
アイティブースト CentOSで自宅サーバー構築 RBL.JP 日本SpamAssassinユーザ会 TLEC などは拝見させていただきました。

Sendmail + SpamAssasssin インストール手順
Fedora Core 4ではインストール時にすでにspamassassinは勝手にインストールされておりますので確認するくらいで良いでしょう。
手始めとしてはとにかくspamassassinを動作させることを第一の目標とします。そうそう、1日1歩、3日で散歩のごとく。
さて、sendmailはすでに動作しておりspamassassinも入っているので、あと必要となるのはspamass-milterです。
では、spamassassin の確認からスタートです。

# rpm -q spamassassin
spamassassin-3.0.3-4.fc4

spamass-milterはsendmailとspamassassinの間を取り持つモジュールです(らしい)。spamass-milterのインストールはyumを使って行いましたがあっさりOKとなりました。yumの実行では、spamass-milter以外にも必要なものは勝手にアップデートしてくれますので助かります。

# yum -y install spamass-milter
Setting up Install Process
Setting up repositories
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
base 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 1.1 MB 00:03
extras : ################################################## 3943/3943
Added 8 new packages, deleted 8 old in 4.12 seconds
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for spamass-milter to pack into transaction set.
spamass-milter-0.3.1-3.fc 100% |=========================| 6.2 kB 00:00
---> Package spamass-milter.i386 0:0.3.1-3.fc4 set to be updated
~~~省略~~~

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
spamass-milter i386 0.3.1-3.fc4 extras 61 k
Updating for dependencies:
cpp i386 4.0.2-8.fc4 updates-released 2.1 M
~~~省略~~~
Installed: spamass-milter.i386 0:0.3.1-3.fc4

Complete!

Complate!と表示されれば無事終了です。
次に、sendmailがspamass-milterを利用できるようにsendmail.cfを置き換えます。
修正前には当然のことながら運用中のcfなりmcはコピーを取っておきます。

# cd /etc/mail
# vi sendmail.mc

次のINPUT_MAIL_FILTER行を追加します。
FC4の場合、ソケットパスはデフォルトが
/var/run/spamass-milter/spamass-milter.sockとなります。
ちなみに"dnl"はDelete through New Lineの略で、空行の挿入を防止するためのコマンドらしいです。
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter/spamass-milter.sock,, F=, T=C:15m;S:4m;R:4m;E:10m')
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl

cfを生成します。
# make -C /etc/mail

これだけで動作は可能となるみたい。それでは起動させてみます。

# /etc/rc.d/init.d/spamassassin start
# /etc/rc.d/init.d/spamass-milter start
# /etc/rc.d/init.d/sendmail restart

ログをチェックしてエラーなどを吐いてなければ自動起動するようにしておきます。

# chkconfig spamassassin on
# chkconfig spamass-milter on

ここから追加記載-------------------------------------------------2007/09/24

ClamAV アップデート手順 Ver.0.88.7 → 0.91.2
ClamAVがどんどんアップデートされるので時間を見つけてバージョンアップを行った。FC4のextrasはアップデートされていませんが0.90.3のsrpmがあるので、このSPECファイルを修正して0.91.2のrpmを生成します。

まずsrpmをインストールします。

# rpm -ivh clamav-0.90.3-1.src.rpm

SPECファイルを修正します。

# cd /usr/src/redhat/SPEC
# vi clamav.spec

具体的にはバージョン記述を0.90.3から0.91.2に変更するだけです。

# Conditional build (--with/--without option)
# --without milter

Summary: Clamav - an antivirus toolkit for Unix
Name: clamav
Version: 0.91.2
Release: 1
Epoch: 112
License: GPL
Group: System Environment/Daemons
URL: http://www.clamav.net/
Source0: http://download.sf.net/clamav/%{name}-%{version}.tar.gz
Source1: clamd.sh
Source2: clamav-milter.sh
Source3: freshclam.sh
Source4: clamav-milter.sysconfig
Source5: clamd.logrotate
Source6: freshclam.logrotate
Source7: RPM-clamav.txt
Source8: clamav-milter.daily
Source9: freshclam.daily
Patch0: clamav-milter-dontsux.patch
Requires: bzip2-libs gmp zlib >= 1.2.1.2
Requires: curl libidn
BuildRequires: bzip2-devel gmp-devel zlib-devel >= 1.2.1.2
BuildRequires: autoconf automake
BuildRequires: curl-devel libidn-devel
Obsoletes: clamav-lib clamav-update
BuildRoot: %{_tmppath}/%{name}-%{version}-root
~~以下省略~~

修正が終わればSPECファイルを保存しrpmファイルを生成します。

# rpmbuild -ba clamav.spec

/usr/src/redhat/RPMS/i386/以下にrpmが生成されました。

-rw-r--r-- 1 root root 1105626 9月 23 11:33 clamav-0.91.2-1.i386.rpm
-rw-r--r-- 1 root root 10732454 9月 23 11:33 clamav-db-0.91.2-1.i386.rpm
-rw-r--r-- 1 root root 1113328 9月 23 11:33 clamav-debuginfo-0.91.2-1.i386.rpm
-rw-r--r-- 1 root root 316590 9月 23 11:33 clamav-devel-0.91.2-1.i386.rpm
-rw-r--r-- 1 root root 66245 9月 23 11:33 clamav-milter-0.91.2-1.i386.rpm
-rw-r--r-- 1 root root 44844 9月 23 11:33 clamav-server-0.91.2-1.i386.rpm

後はインストールするだけですが、古い既存のClamAVは念のため先にアンインストールしておきました。
設定ファイルであるclamd.confとfreshclam.confはインストールされたそのままで無修正動作します。以下は起動時のログです。

# cat clamd.log
Sun Sep 23 11:57:42 2007 -> +++ Started at Sun Sep 23 11:57:42 2007
Sun Sep 23 11:57:42 2007 -> clamd daemon 0.91.2 (OS: linux-gnu, ARCH: i386, CPU: i386)
Sun Sep 23 11:57:42 2007 -> Log file size limit disabled.
Sun Sep 23 11:57:42 2007 -> Reading databases from /var/lib/clamav
Sun Sep 23 11:57:42 2007 -> Not loading PUA signatures.
Sun Sep 23 11:57:46 2007 -> Loaded 148100 signatures.
Sun Sep 23 11:57:46 2007 -> Bound to tcp port 3310
Sun Sep 23 11:57:46 2007 -> Setting connection queue length to 30
Sun Sep 23 11:57:46 2007 -> Archive: Archived file size limit set to 10485760 bytes.
Sun Sep 23 11:57:46 2007 -> Archive: Recursion level limit set to 8.
Sun Sep 23 11:57:46 2007 -> Archive: Files limit set to 1000.
Sun Sep 23 11:57:46 2007 -> Archive: Compression ratio limit set to 300.
Sun Sep 23 11:57:46 2007 -> Archive support enabled.
Sun Sep 23 11:57:46 2007 -> Archive: Blocking encrypted archives.
Sun Sep 23 11:57:46 2007 -> Archive: Blocking archives that exceed limits.
Sun Sep 23 11:57:46 2007 -> Algorithmic detection enabled.
Sun Sep 23 11:57:46 2007 -> Portable Executable support enabled.
Sun Sep 23 11:57:46 2007 -> ELF support enabled.
Sun Sep 23 11:57:46 2007 -> Detection of broken executables enabled.
Sun Sep 23 11:57:46 2007 -> Mail files support enabled.
Sun Sep 23 11:57:46 2007 -> Mail: Recursion level limit set to 64.
Sun Sep 23 11:57:46 2007 -> OLE2 support enabled.
Sun Sep 23 11:57:46 2007 -> PDF support disabled.
Sun Sep 23 11:57:46 2007 -> HTML support enabled.
Sun Sep 23 11:57:46 2007 -> Self checking every 1800 seconds.
Sun Sep 23 11:58:36 2007 -> ClamAV-milter started at Sun Sep 23 11:58:36 2007
Sun Sep 23 11:58:36 2007 -> Starting ClamAV version 0.91.2, clamav-milter version 0.91.2

# cat freshclam.log
--------------------------------------
ClamAV update process started at Sun Sep 23 11:50:32 2007
Downloading main.cvd [100%]
main.cvd updated (version: 44, sigs: 133163, f-level: 20, builder: sven)
Downloading daily.cvd [100%]
daily.cvd updated (version: 4255, sigs: 18957, f-level: 21, builder: arnaud)
Database updated (152120 signatures) from db.jp.clamav.net (IP: 61.205.61.201)
WARNING: Clamd was NOT notified: Can't find or parse configuration file /etc/clamd.conf

ここまで追加記載-------------------------------------------------2007/09/24

Sendmail + ClamAV インストール手順
ついでだからメールのウイルスチェックもやってみたくなりClam AVをインストールしてみた。
まずは、メールゲートウェイとなるamavisd-newをインストールする。これもyumを使ってインストールしたが依存性を解決してくれるのでamavisd-newをインストールするとclamav-lib,clamav-server,clamav-dataが一緒にインストールされた。

# yum -y install amavisd-new

---> Package freeze.i386 0:2.5.0-3 set to be updated
---> Downloading header for perl-Convert-TNEF to pack into transaction set.
~~~省略~~~
---> Package perl-MailTools.noarch 0:1.74-2.fc4 set to be updated
--> Running transaction check
--> Processing Dependency: perl(IO::String) for package: perl-Archive-Tar
--> Processing Dependency: libclamav.so.1 for package: clamav-server
--> Processing Dependency: clamav-lib = 0.88.4-1.fc4 for package: clamav-server
--> Processing Dependency: perl(Net::CIDR::Lite) >= 0.15 for package: perl-Mail-SPF-Query
~~~省略~~~
---> Downloading header for clamav-lib to pack into transaction set.
clamav-lib-0.88.4-1.fc4.i 100% |=========================| 15 kB 00:00
---> Package clamav-lib.i386 0:0.88.4-1.fc4 set to be updated
Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
amavisd-new noarch 2.4.2-2.fc4 extras 557 k
Installing for dependencies:
cabextract i386 1.1-3 extras 45 k
clamav-data i386 0.88.4-1.fc4 extras 5.6 M
clamav-lib i386 0.88.4-1.fc4 extras 153 k
clamav-server i386 0.88.4-1.fc4 extras 52 k
~~~省略~~~
Installing: clamav-data ####################### [31/35]
Installing: clamav-lib ####################### [32/35]
Installing: clamav-server ####################### [33/35]
Installing: amavisd-new ####################### [34/35]
Cleanup : perl-Compress-Zlib ####################### [35/35]

Installed: amavisd-new.noarch 0:2.4.2-2.fc4
Complete!

次にclamav-milterが足りないのでインストールする。

# yum -y install clamav-milter
Setting up Install Process
Setting up repositories
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
base 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 391 kB 00:02
updates-re: ################################################## 1100/1100
Added 505 new packages, deleted 187 old in 4.58 seconds
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for clamav-milter to pack into transaction set.
clamav-milter-0.88.4-1.fc 100% |=========================| 18 kB 00:00
---> Package clamav-milter.i386 0:0.88.4-1.fc4 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
clamav-milter i386 0.88.4-1.fc4 extras 72 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 72 k
Downloading Packages:
(1/1): clamav-milter-0.88 100% |=========================| 72 kB 00:01
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: clamav-milter ######################### [1/1]

Installed: clamav-milter.i386 0:0.88.4-1.fc4
Complete!

もうひとつ足りないclamav-updateをインストールする。

# yum -y install clamav-update
Setting up Install Process
Setting up repositories
updates-released 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
base 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for clamav-update to pack into transaction set.
clamav-update-0.88.4-1.fc 100% |=========================| 16 kB 00:00
---> Package clamav-update.i386 0:0.88.4-1.fc4 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
clamav-update i386 0.88.4-1.fc4 extras 40 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 40 k
Downloading Packages:
(1/1): clamav-update-0.88 100% |=========================| 40 kB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: clamav-update ######################### [1/1]

Installed: clamav-update.i386 0:0.88.4-1.fc4
Complete!

次に設定ファイルの修正を行う。まずはウイルスのパターンファイルが自動的にアップデートされるようfreshclamの設定を行う。
場所は/etc/sysconfig/freshclam
最終行の「FRESHCLAM_DELAY=disabled-warn # REMOVE ME」を削除もしくはコメント化する。

## When changing the periodicity of freshclam runs in the crontab,
## this value must be adjusted also. Its value is the timespan between
## two subsequent freshclam runs in minutes. E.g. for the default
##
## | 0 */3 * * * ...
##
## crontab line, the value is 180 (minutes).
# FRESHCLAM_MOD=

## A predefined value for the delay in seconds. By default, the value is
## calculated by the 'hostid' program. This predefined value guarantees
## constant timespans of 3 hours between two subsequent freshclam runs.
##
## This option accepts two special values:
## 'disabled-warn' ... disables the automatic freshclam update and
## gives out a warning
## 'disabled' ... disables the automatic freshclam silently
# FRESHCLAM_DELAY=

### !!!!! REMOVE ME !!!!!!
### REMOVE ME: By default, the freshclam update is disabled to avoid
### REMOVE ME: network access without prior activation
#FRESHCLAM_DELAY=disabled-warn # REMOVE ME

次にfreshclam.confの設定を行う。
場所は/etc/freshclam.conf
最初の方にある「Example」と「NotifyClamd /etc/clamd.conf」をコメント化する。

##
## Example config file for freshclam
## Please read the freshclam.conf(5) manual before editing this file.
## This file may be optionally merged with clamd.conf.
##

# Comment or remove the line below.
#Example

# Path to the database directory.
# WARNING: It must match clamd.conf's directive!
# Default: hardcoded (depends on installation options)
DatabaseDirectory /var/lib/clamav
# Send the RELOAD command to clamd.
# Default: disabled
#NotifyClamd
# By default it uses the hardcoded configuration file but you can force an
# another one.
#NotifyClamd /etc/clamd.conf
~~~省略~~~

次にmilter.confの設定を行う。
場所は/etc/clamd.d/milter.conf
これも最初の方にある「Example」をコメント化する。
##
## Example config file for the Clam AV daemon
## Please read the clamd.conf(5) manual before editing this file.
##


# Comment or remove the line below.
#Example

# Uncomment this option to enable logging.
# LogFile must be writable for the user running daemon.
# A full path is required.
# Default: disabled

~~~省略~~~

次に、sendmailがclamav-milterを利用できるようにsendmail.cfを置き換えます。
修正前には当然のことながら運用中のcfなりmcはコピーを取っておきます。

# cd /etc/mail
# vi sendmail.mc

次のINPUT_MAIL_FILTER行を追加します。

INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter/spamass-milter.sock,, F=, T=C:15m;S:4m;R:4m;E:10m')dnl
INPUT_MAIL_FILTER(`clamilt', `S=local:/var/run/clamav-milter/clamav.sock, F=, T=S:4m;R:4m')dnl
define(`confINPUT_MAIL_FILTERS', `spamassassin,clamilt')dnl

define(`confMILTER_MACROS_ENVRCPT', `Z, v, r, b, {rcpt_mailer}, {rcpt_host}, {rcpt_addr}')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl

cfを生成します。
# make -C /etc/mail

動作させる前にウイルスパターンファイルが最新に更新されるかチェックしてみます。
また、/etc/cron.d/clamav-updateというファイルができていますのでcronの実行頻度を調整しておきましょう。

# freshclam

パターンファイルの更新がうまくいったら起動させてみます。

# /etc/rc.d/init.d/clamav-milter start
# /etc/rc.d/init.d/clamd.amavisd start
# /etc/rc.d/init.d/amavisd start

# /etc/rc.d/init.d/sendmail restart

ログをチェックしてエラーなどを吐いてなければ自動起動するようにしておきます。

# chkconfig clamav-milter on
# chkconfig clamd.amavisd on

# chkconfig amavisd on

あと、テストウイルスを使って本当に動作しているのか検証もしておきましょう。
きょうはここまで...これでとりあえずの動作はしてくれますのであとはじっくりと腰をすえて吟味といこう。


| home |