2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Postfix With ClamAntiVirus + AmavisNewのインスコ(Linux ソース編)!

ClamAntiVirusのソースインスコの説明。ClamAVは、有志の方々でサポートして運営しているFreeのAntiVirusパッケージである。ワクチンの対応状況も有償のウィルススキャナに負けないくらい頻度が高い。元々FreeBSDでは、 Portsで提供されているようだが、やっぱLinuxとか他のUnixのためにソースでインスコ出来ないとなぁ~(ーー;)みたいな考えを前提にしこしこやってみた。やったのは良いけど、まともな情報が英文の同サイトの情報が一番詳しいのでサイト情報を頼りに行った(英語が苦手の俺には、ちと敷居が高かったけどね(;-_-;))。

ClamAV仕込みOS : LL5 Linux SecureEdition6.9(RedHat6.2Base)
             Debian GNU Linux Sarge3.1 番外編


ClamAVのメール配送の仕組みを以下に示す。

1)ソースのゲットと展開

ここ( http://www.clamav.net/ )からゲットしてくる。執筆時点(2004年10月)では、clamav-0.80.tar.gzが最新だった。
したがって、このバージョンで話を進める。

# cd /usr/local/src
# tar zxvf clamav-0.80.tar.gz
# chown -R root.root clamav-0.80

2)clamavユーザ作成

# groupadd clamav
# useradd -g clamav -s /bin/false clamav

3)コンパイルとリンク

# ./configure
# make
# make install

4)pid & socketとlogディレクトリを作成する

# mkdir /var/run/clamav
# chown clamav.clamav /var/run/clamav

# mkdir /var/log/clamav
# chown clamav.clamav /var/log/clamav

5)confファイルを編集する

◆ clamad.confを編集する

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

#Example                     ←コメントする
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
LocalSocket /var/run/clamav/clamd.sock

これだけでOK!

◆ freshclam.confを編集する

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

#Example                      ←コメントする
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid

これだけでOK!

6)起動する

# /usr/local/sbin/clamd
10898 ? S 0:00 /usr/local/sbin/clamd

こんな感じでプロセスが走ってれば良い。
注: /var/log/clamav/clamd.logをチェックして起動時のエラーが無いか確認する。

7)ウィルス定義自動更新

# freshclam
ClamAV update process started at Sun Oct 24 21:27:39 2004
main.cvd is up to date (version: 27, sigs: 23982, f-level: 2, builder: tomek)
daily.cvd is up to date (version: 548, sigs: 1549, f-level: 3, builder: ccordes)

これでアップデートされた状態である。

◆ cronでの更新

実際の定期的な更新はcronでやるなら、まずアップデートログを作成する。
# touch /var/log/clamav/update.log
# chmod 644 /var/log/clamav/update.log
# chown clamav /var/log/clamav/update.log

/etc/crontab などに登録する。
30* * * * clamav /usr/local/bin/freshclam –quiet -l /var/log/clamav/update.log

◆ デーモンでの更新

デーモンで定期的に更新するならば、
# freshclam -d -c 5
これは、デーモンで一日に5回更新する。

8)実際にスキャンしてみる

/tmpディレクトリをウィルススキャンする。

# clamscan -r /tmp
/tmp/.s.PGSQL.5432.lock: OK
/tmp/popcheck.sh: OK
/tmp/sudo: OK
/tmp/index.html: OK
/tmp/school.log: OK
/tmp/named: OK
/tmp/sendfax: OK
/tmp/vm: OK
/tmp/mars-nwe.log: OK
/tmp/hbedv.key: OK
/tmp/YourlicensekeyAntiVir.txt: OK
/tmp/mod_jk-eapi.so: OK
/tmp/mod_jk-noeapi.so: OK
/tmp/squid: OK
/tmp/.pid_antivir_551: OK/tmp/eicar.com.txt: Eicar-Test-Signature FOUND   ←テストウィルスを入れておいたらちゃんと引っかかった。/tmp/main.cf: OK
/tmp/procmailrc: OK

———– SCAN SUMMARY ———–
Known viruses: 25531
Scanned directories: 1
Scanned files: 18
Infected files: 1  
← 感染してるファイルが一個有ることを意味する。Data scanned: 0.64 MB
I/O buffer size: 131072 bytes
Time: 5.028 sec (0 m 5 s)

9)その他

モジュールのアップデート時期について。どうも、Clamavは使える期限が有るらしい。以下のlogをチェックしてワーニングが出ていたら、モジュールをアップデートしよう。

# more /var/log/clamav/freshclam.log

--------------------------------------
Received signal 14, wake up
ClamAV update process started at Thu Sep 22 15:01:18 2005
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
See the FAQ at http://www.clamav.net/faq.html for an explanation.
WARNING: Your ClamAV installation is OUTDATED - please update immediately!
WARNING: Local version: 0.80 Recommended version: 0.87
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
WARNING: Your ClamAV installation is OUTDATED - please update immediately!
WARNING: Current functionality level = 3, required = 5
daily.cvd is up to date (version: 1097, sigs: 718, f-level: 6, builder: ccordes)
WARNING: Your ClamAV installation is OUTDATED - please update immediately!
WARNING: Current functionality level = 3, required = 6

アップデート後の freshclam.log

--------------------------------------
Received signal 15, terminating
--------------------------------------
freshclam daemon 0.87 (OS: linux-gnu, ARCH: i386, CPU: i686)
ClamAV update process started at Thu Sep 22 19:15:21 2005
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
See the FAQ at http://www.clamav.net/faq.html for an explanation.
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
daily.cvd is up to date (version: 1097, sigs: 718, f-level: 6, builder: ccordes)
--------------------------------------

10)ログのローテーション

黙ってるとログがいつの間にか肥大化するので、ログのローテーションはちゃんと処理しておくこと。

# cd /etc/logrotate.d
# vi clamd-freshclam
/var/log/clamav/clamd.log{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/clamav/clamd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

/var/log/clamav/freshclam.log{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/clamav/freshclam.pid 2> /dev/null` 2> /dev/null || true
endscript
}


2.Amavis-Newのインスコ

1)Amavisユーザ作成

# groupadd vscan
# useradd -g vscan -d /var/amavis -s /bin/false vscan

念のため、お互いに協調しあうため互いのグループへ互いのユーザを追加。
# gpasswd -a vscan clamav
# gpasswd -a clamav vscan

2)ソースのゲット

ソースの在処は、 ここ で執筆時点(2004年10月)の最新は amavisd-new-2.2.0-rc1.tar.gz であった。

3)ソースの展開と必要ディレクトリ作成とファイルのコピー

amavisは基本的にperlスクリプトなのでコンパイル入らない。
その代わり、コピーの手作業が有る。

# cd /usr/local/src
# tar zxvf amavisd-new-2.2.0-rc1.tar.gz
# chown -R root.root amavisd-new-2.2.0
# cd amavisd-new-2.2.0
# cp amavisd /usr/sbin
# cp amavisd.conf /usr/local/etc        
←多分、デフォルトは/usr/local/etcに格納することになってると思う。/etcにする場合は、/usr/sbin/amavisdの中身のパスを書き換えなければならない。
# mkdir /var/amavis
# chown vscan.vscan /var/amavis        
←ここにpidファイルも入る。
# mkdir /var/virusmails
# chown vscan.vscan /var/virusmails
# mkdir /var/log/amavis
# chown vscan.vscan /var/log/amavis
# mkdir /var/amavis/tmp
# chown vscan.vscan /var/amavis/tmp

# mkdir /var/amavis/db
# chown vscan.vscan /var/amavis/db

4)confファイルの編集

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

省略
@bypass_spam_checks_maps = (1);   # uncomment to DISABLE anti-spam code(俺の場合は、amavisでanti spamは使わないのでDISABLEにする)

$max_servers = 2;               # number of pre-forked children (2..15 is common)
$daemon_user = ‘vscan’;           # (no default; customary: vscan or amavis)
$daemon_group = ‘vscan’;          # (no default; customary: vscan or amavis)

$mydomain = ‘xxxxxxxx.com’;        # a convenient default for other settings(ドメイン名)

$MYHOME = ‘/var/amavis’;        # a convenient default for other settings(amavisdホーム)
$TEMPBASE = “$MYHOME/tmp”;    # working directory, needs to be created manually(ワークスペース)
$ENV{TMPDIR} = $TEMPBASE;      # environment variable TMPDIR
$QUARANTINEDIR = ‘/var/virusmails’;
$db_home = “$MYHOME/db”;
$pid_file = “$MYHOME/amavisd.pid”;
$lock_file = “$MYHOME/amavisd.lock”;

@local_domains_maps = ( [“.$mydomain”] );

$log_level = 0;                # verbosity 0..5
$log_recip_templ = undef;         # disable by-recipient level-0 log entries
$DO_SYSLOG = 1;              
# log via syslogd (preferred)(syslogでlog収集)
$SYSLOG_LEVEL = ‘mail.info’;       #(mail.infoレベル)

$enable_db = 1;               # enable use of BerkeleyDB/libdb (SNMP and nanny)
$enable_global_cache = 1;        # enable use of libdb-based cache if $enable_db=1

$inet_socket_port = 10024;        # listen on this local TCP port(s) (see $protocol)
$unix_socketname = “$MYHOME/amavisd.sock”; # when using sendmail milter

省略

$forward_method = ‘smtp:[127.0.0.1]:10025’;  # set to undef with milter!
$notify_method = ‘$forward_method’;

$hdr_encoding = “iso-2022-jp”;
$bdy_encoding = “iso-2022-jp”;

省略

[‘ClamAV-clamd’,
\&ask_daemon, [“CONTSCAN {}\n”, “/var/run/clamav/clamd.sock”],    
#(赤色の部分のsockファイルのパスを設定しないと、エラーを出すので注意
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],            
#(primary scanner setting)省略

# vi /usr/sbin/amavisd

省略
my($config_file) = ‘/usr/local/etc/amavisd.conf‘; # default location of config file
省略

注:amavisd.conf中でlogは、syslogを利用した方が良い。個別のamavis.logで行うとログローテーションの時にamavisはどうもpidへシグナルを与えると落ちるみたいである。原因は多分チャイルドプロセスに有ると思う

これだけ確認して、編集するところは編集して無ければ追加記入する。

5)ポートの追加

# vi /etc/services
省略
amavisd 10024/tcp
smtp-amavis 10025/tcp
省略

6)amavisのデバッグ

root@hiro:/# amavisd debug

省略

Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Amavis::Conf 2.033
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Archive::Tar 1.29
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Archive::Zip 1.16
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module BerkeleyDB 0.27
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Compress::Zlib 1.41
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Convert::TNEF 0.17
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Convert::UUlib 1.06
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module MIME::Entity 5.419
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module MIME::Parser 5.419
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module MIME::Tools 5.419
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Mail::Header 1.74
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Mail::Internet 1.74
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Net::Cmd 2.26
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Net::SMTP 2.29
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Net::Server 0.90
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Time::HiRes 1.66
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Module Unix::Syslog 0.99
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Amavis::DB code loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Amavis::Cache code loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Lookup::SQL code NOT loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Lookup::LDAP code NOT loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: AMCL-in protocol code loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: SMTP-in protocol code loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: ANTI-VIRUS code loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: ANTI-SPAM code NOT loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Unpackers code loaded
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $file at /usr/bin/file
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No $arc, not using it
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $gzip at /usr/bin/gzip
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $bzip2 at /usr/bin/bzip2
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No $lzop, not using it
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $lha at /usr/bin/lha
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $unarj at /usr/bin/unarj
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $uncompress at /usr/bin/uncompress
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No $unfreeze, not using it
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No $unrar, not using it
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $zoo at /usr/bin/zoo
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $cpio at /bin/cpio
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $ar at /usr/bin/ar
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found $rpm2cpio at /usr/bin/rpm2cpio
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No $cabextract, not using it
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No $dspam, not using it
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Using internal av scanner code for (primary)
ClamAV-clamd
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: KasperskyLab AVP – av
eclient
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: KasperskyLab AntiVira
l Toolkit Pro (AVP)
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: KasperskyLab AVPDaemo
nClient
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: H+BEDV AntiVir or Cen
tralCommand Vexira Antivirus
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: Command AntiVirus for
Linux
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: Symantec CarrierScan
via Symantec CommandLineScanner
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: Symantec AntiVirus Sc
an Engine
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: F-Secure Antivirus
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: CAI InoculateIT
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: CAI eTrust Antivirus
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: MkS_Vir for Linux (be
ta)
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: MkS_Vir daemon
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: ESET Software NOD32
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: ESET Software NOD32 –
Client/Server Version
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: Norman Virus Control
v5 / Linux
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: Panda Antivirus for L
inux
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: NAI McAfee AntiVirus
(uvscan)
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: VirusBuster
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: CyberSoft VFind
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: Ikarus AntiVirus for
Linux
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No primary av scanner: BitDefender
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Found secondary av scanner ClamAV-clamscan a
t /usr/local/bin/clamscan
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No secondary av scanner: FRISK F-Prot Antivi
rus
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No secondary av scanner: Trend Micro FileSca
nner
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No secondary av scanner: drweb – DrWeb Antiv
irus
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: No secondary av scanner: KasperskyLab kavsca
nner
Mar 4 19:37:46 hiro /usr/sbin/amavisd[1827]: Creating db in /var/amavis/db/; BerkeleyDB 0
.27, libdb 3.3
Mar 4 19:37:47 hiro /usr/sbin/amavisd[1827]: Net::Server: Beginning prefork (2 processes)
Mar 4 19:37:47 hiro /usr/sbin/amavisd[1827]: Net::Server: Starting “2” children
Mar 4 19:37:47 hiro /usr/sbin/amavisd[1828]: Net::Server: Child Preforked (1828)
Mar 4 19:37:47 hiro /usr/sbin/amavisd[1828]: TIMING [total 14 ms] – bdb-open: 14 (100%),
rundown: 0 (0%)
Mar 4 19:37:47 hiro /usr/sbin/amavisd[1829]: Net::Server: Child Preforked (1829)
Mar 4 19:37:47 hiro /usr/sbin/amavisd[1827]: Net::Server: Parent ready for children.
Mar 4 19:37:47 hiro /usr/sbin/amavisd[1829]: TIMING [total 17 ms] – bdb-open: 17 (100%), rundown: 0 (0%)

ここで止まれば成功。

エラーが出た場合は、エラーが消えるまでデバッグする。
このときperlのプラグインモジュールが無いぞ!と怒られたら、以下のようにCPANする。
必要なPerlモジュールは、
IO::Wrap
IO::Stringy
Unix::Syslog
Mail::Field
Mail::Address
Mail::Header
Mail::Internet
MIME::Words
MIME::Head
MIME::Body
MIME::Entity
MIME::Parser
Net::Server
Net::Server::PreForkSimple
MIME::Decoder::Base64
MIME::Decoder::Binary
MIME::Decoder::Gzip64
MIME::Decoder::NBit
MIME::Decoder::QuotedPrint
MIME::Decoder::UU
BerkeleyDB
Convert::TNEF
Convert::UUlib
Compress::Zlib
Archive::Tar
Archive::Zip
たぶんこれだけのはず。

# perl -MCPAN -e shell

エラーのモジュールは以下のコマンドでさがす。

cpan> m /モジュール名/

で以下のコマンドで必要モジュールをインスコする。

cpan> install 大元のモジュール名

7)amavisの起動

# /usr/sbin/amavisd
11313 ? S 0:05 amavisd (master)
11364 ? S 0:00 amavisd (virgin child)
11373 ? S 0:00 amavisd (virgin child)

あたしバージンなの(ーー;)。
プロセスは、こんな感じになっていればOK!

8)alert aliasesの追加

# vi /etc/aliases
省略
virusalert: root
spamalert: root
省略

# newaliases

9)postfixへの設定

◆ main.cfへの設定

# cd /usr/local/etc/postfix
# vi main.cf
省略
content_filter = smtp-amavis:[127.0.0.1]:10024

◆ master.cfへの設定

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

注 😮 の前のスペースには必ずTABを入れること。

10)起動スクリプトを仕込む

# vi /etc/rc.d/rc.local

省略

# ClamAntiVir Start
if [ -x /usr/local/sbin/clamd ]; then
/usr/local/sbin/clamd
fi

# Amavis Start
if [ -x /usr/sbin/amavisd ]; then
/usr/sbin/amavisd
fi

# ClamAntiVirus Freshclam Start
if [ -x /usr/local/bin/freshclam]; then
/usr/local/bin/freshclam -d -c 5
fi

11)ログのローテーション

clam関係のログの切り分けを設定しておく。

# cd /etc/logrotate.d
# vi clam-amavis
/var/log/clamav/clamd.log {
missingok
postrotate
/bin/kill -HUP `/bin/cat /var/run/clamav/clamd.pid`
endscript
}

/var/log/clamav/freshclam.log {
missingok
postrotate
endscript
}

12)amavisdが効いてるかどうか確認してみる。その1

◆ テストウィルスを使う
http://www.eicar.org/anti_virus_test_file.htm
ここで、使っても感染しないテストウィルスを使ってテストしてみる。4パターン置いてある。

◆ ヘッダー情報
X-Virus-Scanned: by amavisd-new at hogehoge.net
X-UIDL: H”A!!j-c”!Jog!!9LV!!

例えば、送受信ヘッダー情報がこんな風になっている。

◆ ウィルスメールが来たときは
/var/virusmailsディレクトリに、

bash-2.05b# ls -al /var/virusmails
total 6
drwxr-x— 2 vscan vscan 512 Oct 24 13:47 .
drwxr-xr-x 26 root wheel 512 Oct 23 17:04 ..
-rw-r—– 1 vscan vscan 1462 Oct 24 13:47 virus-20041024-134707-00526-05

こんな具合に分別される。内容は、

bash-2.05b# more virus-20041024-134707-00526-05
Return-Path:
Delivered-To: virus-quarantine
X-Envelope-To:
X-Envelope-From:
X-Quarantine-id:
Received: from michi.morashita.com (sub2.morashita.com [222.xxx.xxx.180])
by ns.hogehoge.net (Postfix) with ESMTP id ABC2EB2DD1
for ; Sun, 24 Oct 2004 13:47:01 +0900 (JST)
Received: from localhost (localhost [127.0.0.1])
by michi.morashita.com (Postfix) with ESMTP id 424F311BCEC
for ; Sun, 24 Oct 2004 13:47:00 +0900 (JST)
Received: from michi.morashita.com (localhost [127.0.0.1])
by localhost (AvMailGate-2.0.1.16) id 10769-29276431;
Sun, 24 Oct 2004 13:46:59 +0900
Received: from [192.168.0.105] (comp.morashita.com [192.168.0.105])
by michi.morashita.com (Postfix) with SMTP id 1218B11BCEC
for ; Sun, 24 Oct 2004 13:46:59 +0900 (JST)
Date: Sun, 24 Oct 2004 13:46:59 +0900
From: =?ISO-2022-JP?B?GyRCOS1MbkY7QTEbKEI=?=
To: hoge@hogehoge.net
Subject: virus
Message-Id: <20041024134611.A24C.UNKO@morashita.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=”ISO-2022-JP”
Content-Transfer-Encoding: 7bit
X-Mailer: Becky! ver. 2.11.02 [ja]
X-AntiVirus: checked by AntiVir MailGate (version: 2.0.1.16; AVE: 6.28.0.7; VDF: 6.28.0.34; hos
t: michi.morashita.com)
X-Amavis-Alert: INFECTED, message contains virus: Eicar-Test-Signature

このような感じ。

◆ ウィルスメールが来たとき、root宛に来るメール
以下に例を2つ上げている。

A virus (Eicar-Test-Signature) was found.

Scanner detecting a virus: ClamAV-clamscan

The mail originated from:
According to the ‘Received:’ trace, the message originated at:
[192.168.0.105] (comp.morashita.com [192.168.0.105])

Notification to sender will not be mailed.

The message WAS NOT delivered to:
:
250 2.7.1 Ok, discarded, id=00526-05 – VIRUS: Eicar-Test-Signature

Virus scanner output:
p001: Eicar-Test-Signature FOUND

The message has been quarantined as:
/var/virusmails/virus-20041024-134707-00526-05

————————- BEGIN HEADERS —————————–
Return-Path:
Received: from michi.morashita.com (sub.morashita.com [222.xxx.xxx.180])
by hoge@hogehoge.net (Postfix) with ESMTP id ABC2EB2DD1
for ; Sun, 24 Oct 2004 13:47:01 +0900 (JST)
Received: from localhost (localhost [127.0.0.1])
by michi.morashita.com (Postfix) with ESMTP id 424F311BCEC
for hoge@hogehoge.net>; Sun, 24 Oct 2004 13:47:00 +0900 (JST)
Received: from michi.morashita.com (localhost [127.0.0.1])
by localhost (AvMailGate-2.0.1.16) id 10769-29276431;
Sun, 24 Oct 2004 13:46:59 +0900
Received: from [192.168.0.105] (comp.morashita.com [192.168.0.105])
by michi.morashita.com (Postfix) with SMTP id 1218B11BCEC
for ; Sun, 24 Oct 2004 13:46:59 +0900 (JST)
Date: Sun, 24 Oct 2004 13:46:59 +0900
From: =?ISO-2022-JP?B?GyRCOS1MbkY7QTEbKEI=?=
To: hoge@hogehoge.net
Subject: virus
Message-Id: <20041024134611.A24C.UNKO@morashita.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=”ISO-2022-JP”
Content-Transfer-Encoding: 7bit
X-Mailer: Becky! ver. 2.11.02 [ja]
X-AntiVirus: checked by AntiVir MailGate (version: 2.0.1.16; AVE: 6.28.0.7; VDF: 6.28.0.34; host: michi.morashita.com)
————————– END HEADERS ——————————

 

A virus was found: Worm.SomeFool.Q

A banned name was found:
P=p004,L=1,M=multipart/related | P=p003,L=1/2,M=audio/x-wav,T=exe,T=exe-ms,N=message.pif

Scanner detecting a virus: ClamAV-clamscan

The mail originated from:
According to the ‘Received:’ trace, the message originated at:
[220.109.30.239]
hogehoge.com (i220-109-30-239.s02.a025.ap.burabura.or.jp [220.109.30.239])

Notification to sender will not be mailed.

The message WAS NOT delivered to:
:
250 2.7.1 Ok, discarded, id=16120-01 – VIRUS: Worm.SomeFool.Q

Virus scanner output:
p002: OK
p003: Worm.SomeFool.Q FOUND

The message has been quarantined as:
virus-20041113-234305-16120-01

————————- BEGIN HEADERS —————————–
Return-Path:
Received: from hogehoge.com (i220-109-30-239.s02.a025.ap.burabura.or.jp [xxx.xxx.xxx.xxx])
by hoge.hogehoge.com (Postfix) with ESMTP id A005410F28C
for ; Sat, 13 Nov 2004 23:42:56 +0900 (JST)
From: akunin@oresama.net
To: chinko@hogehoge.com
Subject: Server Error (chinko@hogehoge.com)
Date: Sat, 13 Nov 2004 23:43:57 +0900
MIME-Version: 1.0
Content-Type: multipart/related;
type=”multipart/alternative”;
boundary=”—-=_NextPart_000_001B_01C0CA81.7B015D10″
X-Priority: 1
X-MSMail-Priority: High
Message-Id: <20041113144256.A005410F28C@hoge.hogehoge.com>
————————– END HEADERS ——————————

注 : /var/virusmails /var/amavis/tmp ディレクトリには、ウィルスだったメールが格納される。したがって、放って置くと肥大化するので気をつけること。たまに、消去を心がけると良いだろう。

13)amavisdが効いてるかどうか確認してみる。その2

 amavisが動いてるか確認する
hiro:/# telnet localhost 10024
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 [127.0.0.1] ESMTP amavisd-new service ready
quit
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
Connection closed by foreign host.

 ClamAVが10025でリダイレクトされてるか確認する
hiro:/# telnet localhost 10025
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 hiro.xxxxxxx.com ESMTP Postfix
quit
221 2.0.0 Bye
Connection closed by foreign host.

hiro:/# cd /tmp/

hiro:/tmp# mkdir download

hiro:/tmp# cd download/

 なんちゃってウィルスをダウンロードする

hiro:/tmp/download# wget http://www.eicar.org/download/eicar.com
--2010-04-07 16:48:33-- http://www.eicar.org/download/eicar.com
Resolving www.eicar.org... 188.40.238.250
Connecting to www.eicar.org|188.40.238.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 68 [application/x-msdos-program]
Saving to: `eicar.com'

100%[=====================================================>] 68 --.-K/s in 0s

2010-04-07 16:48:35 (935 KB/s) - `eicar.com' saved [68/68]

hiro:/tmp/download# wget http://www.eicar.org/download/eicar.com.txt
--2010-04-07 16:48:50-- http://www.eicar.org/download/eicar.com.txt
Resolving www.eicar.org... 188.40.238.250
Connecting to www.eicar.org|188.40.238.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 68 [text/plain]
Saving to: `eicar.com.txt'

100%[=====================================================>] 68 --.-K/s in 0s

2010-04-07 16:48:50 (1006 KB/s) - `eicar.com.txt' saved [68/68]

hiro:/tmp/download# wget http://www.eicar.org/download/eicar_com.zip
--2010-04-07 16:49:07-- http://www.eicar.org/download/eicar_com.zip
Resolving www.eicar.org... 188.40.238.250
Connecting to www.eicar.org|188.40.238.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 184 [application/zip]
Saving to: `eicar_com.zip'

100%[=====================================================>] 184 --.-K/s in 0s

2010-04-07 16:49:08 (2.54 MB/s) - `eicar_com.zip' saved [184/184]

hiro:/tmp/download# wget http://www.eicar.org/download/eicarcom2.zip
--2010-04-07 16:49:28-- http://www.eicar.org/download/eicarcom2.zip
Resolving www.eicar.org... 188.40.238.250
Connecting to www.eicar.org|188.40.238.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 308 [application/zip]
Saving to: `eicarcom2.zip'

100%[=====================================================>] 308 --.-K/s in 0s

2010-04-07 16:49:28 (4.08 MB/s) - `eicarcom2.zip' saved [308/308]

 ルート宛にウィルスを送信してみる
hiro:/tmp/download# sendmail -i root < eicar.com

hiro:/tmp/download# sendmail -i root < eicar.com.txt

hiro:/tmp/download# sendmail -i root < eicar_com.zip

hiro:/tmp/download# sendmail -i root < eicarcom2.zip

 ログを検索して、しっかりブロックしてるか確認する

hiro:/tmp/download# cat /var/log/mail.log | grep "Blocked INFECTED"

Apr 7 16:49:56 hiro amavis[10914]: (10914-17) Blocked INFECTED (Eicar-Test-Signature), <root@xxxxxxx.com> -> <root@xxxxxxx.com>, quarantine: virus-W9qWTwaxg9wf, Message-ID: <20100407074955.160BE1DA31A@hiro.xxxxxxx.com>, mail_id: W9qWTwaxg9wf, Hits: -, size: 349, 883 ms

Apr 7 16:50:28 hiro amavis[10875]: (10875-18) Blocked INFECTED (Eicar-Test-Signature), <root@xxxxxxx.com> -> <root@xxxxxxx.com>, quarantine: virus-OBerouyU8NNO, Message-ID: <20100407075028.19D401DA31B@hiro.xxxxxxx.com>, mail_id: OBerouyU8NNO, Hits: -, size: 349, 688 ms

Apr 7 16:50:44 hiro amavis[10914]: (10914-18) Blocked INFECTED (Eicar-Test-Signature), <root@xxxxxxx.com> -> <root@xxxxxxx.com>, quarantine: virus-L3wATo5H0xFk, Message-ID: <20100407075043.610701DA31A@hiro.xxxxxxx.com>, mail_id: L3wATo5H0xFk, Hits: -, size: 467, 789 ms

Apr 7 16:50:59 hiro amavis[10875]: (10875-19) Blocked INFECTED (Eicar-Test-Signature), <root@xxxxxxx.com> -> <root@xxxxxxx.com>, quarantine: virus-GJgL0Ekl0AnL, Message-ID: <20100407075058.C96901DA31A@hiro.xxxxxxx.com>, mail_id: GJgL0Ekl0AnL, Hits: -, size: 593, 858 ms

 Virusホルダーにウィルスメールが格納されてることを確認する
hiro:/tmp/download# ls -al /var/lib/amavis/virusmails/

total 32
drwxr-xr-x 2 amavis amavis 4096 Apr 7 16:50 .
drwxr-xr-x 5 amavis amavis 4096 Apr 5 13:44 ..
-rw-r—– 1 amavis amavis 1051 Apr 7 16:50 virus-GJgL0Ekl0AnL
-rw-r—– 1 amavis amavis 927 Apr 7 16:50 virus-L3wATo5H0xFk
-rw-r—– 1 amavis amavis 811 Apr 7 16:50 virus-OBerouyU8NNO
-rw-r—– 1 amavis amavis 811 Apr 7 16:49 virus-W9qWTwaxg9wf

14)exeファイルが添付できない!
ファイルの添付に関しては、デフォルトではセキュリティ的にも「exe」拡張子のバイナリファイルの添付を禁止している。さらに、exe拡張子ファイルを圧縮しても添付しても禁止となる。しかし、それが不便で使いにくい場合は、amavisd.confの @decodersセクションのzipとlhaをコメントして、amavisdをリスタートすれば、とりあえずexeをzipもしくはlhaのいずれかで圧縮して添付すれば送信できるようになる。

# vi /etc/amavisd.conf
省略
@decoders = (
['mail', \&do_mime_decode],
['asc', \&do_ascii],
['uue', \&do_ascii],
['hqx', \&do_ascii],
['ync', \&do_ascii],
['F', \&do_uncompress, ['unfreeze','freeze -d','melt','fcat'] ],
['Z', \&do_uncompress, ['uncompress','gzip -d','zcat'] ],
['gz', \&do_gunzip],
['gz', \&do_uncompress, 'gzip -d'],
['bz2', \&do_uncompress, 'bzip2 -d'],
['lzo', \&do_uncompress, 'lzop -d'],
['rpm', \&do_uncompress, ['rpm2cpio.pl','rpm2cpio'] ],
['cpio', \&do_pax_cpio, ['pax','gcpio','cpio'] ],
['tar', \&do_pax_cpio, ['pax','gcpio','cpio'] ],
['tar', \&do_tar],
['deb', \&do_ar, 'ar'],
# ['a', \&do_ar, 'ar'], # unpacking .a seems an overkill
# ['zip', \&do_unzip],
['rar', \&do_unrar, ['rar','unrar'] ],
['arj', \&do_unarj, ['arj','unarj'] ],
['arc', \&do_arc, ['nomarch','arc'] ],
['zoo', \&do_zoo, 'zoo'],
# ['lha', \&do_lha, 'lha'],
# ['doc', \&do_ole, 'ripole'],
['cab', \&do_cabextract, 'cabextract'],
['tnef', \&do_tnef_ext, 'tnef'],
['tnef', \&do_tnef],
['exe', \&do_executable, ['rar','unrar'], 'lha', ['arj','unarj'] ],
);
省略

3.番外:Debian GMU Linux Sarge&Etch&LennyでPostfix+Clamd+Amavis-newの場合は・・・・

1) バイナリモジュールのゲット

以下のようにapt-getでバイナリをダウンロードしてインスコする。

# apt-get update
# apt-get install clamav clamav-daemon libclamav-dev amavisd-new

2)configファイルを設置する
デフォルトでは、amavisd.confが存在しないのでサンプルファイルを使って編集する。以下参照。

# cd /usr/share/doc/amavisd-new/examples/

# gunzip amavisd.conf-sample.gz

# cp amavisd.conf-sample /etc/amavis/amavisd.conf

# vi /usr/sbin/amavisd-new
省略
sub read_config_file($$) {
my($config_file,$is_optional) = @_;

sub read_config_file($$) {
my($config_file,$is_optional) = ‘/etc/amavis/amavisd.conf‘;

amavisd.confの詳細設定は、前述の1項及び2項を参考にすること。ただし、注意することを3)で書く。

3)エラーが出まくる

# amavisd-new debug

上記のコマンドを実行させて、デバッグしたり、メールを送受信して/var/log/mail.logを見ながらデバッグしてると、エラーが出まくる。

■ エラーその1

ns:/var/lib/amavis# postfix start
postfix/postfix-script: warning: /var/spool/postfix/etc/services and /etc/services differ
postfix/postfix-script: starting the Postfix mail system

こやつの意味:
/etc/services ファイルがアップデートされて/var/spool/postfix/etc/servicesファイルと違うと怒られてる。

こやつの対策:
/etc/servicesファイルを/var/spool/postfix/etc/へコピーして上書きする。
# cp /etc/services /var/spool/postfix/etc/
# postfix reload

■ エラーその2

ERROR: Socket file /var/run/clamav/clamd.sock is in use by another process. Socket file removed.Pid file removed.

こやつの意味:
clamd.sockは、別のプロセスで使われています。

こやつの対策:
こんなエラーが有ったなら、/var/run/clamav/clamd.sock のユーザとグループがclamavになってるか確認すること。

■ ワーニングその1

ClamAV update process started at Sat Nov 12 14:47:12 2005
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.84 Recommended version: 0.87.1
DON’T PANIC! Read http://www.clamav.net/faq.html
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 4, recommended = 5
DON’T PANIC! Read http://www.clamav.net/faq.html
daily.cvd is up to date (version: 1169, sigs: 1616, f-level: 6, builder: ccordes)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 4, recommended = 6
DON’T PANIC! Read http://www.clamav.net/faq.html

こやつの意味と対策:
ワーニングが出てLocal version: 0.84 Recommended version: 0.87.1みたいなアップデートをしなさい警告が出る。これは、確かにバージョンが古いと言っているのだが、パターンファイルはアップデートされてるようだ。だから、俺はあまり気にしていない。以下を実行してみれば解る。
# ls -al /var/lib/clamav/
total 2688
drwxr-xr-x 2 clamav clamav 4096 Nov 12 11:22 .
drwxr-xr-x 21 root root 4096 Nov 12 13:35 ..
-rw-r–r– 1 clamav clamav 169270 Nov 12 10:09 daily.cvd
-rw-r–r– 1 clamav clamav 2560365 Nov 12 10:09 main.cvd

■ ワーニングその2

Nov 12 12:14:34 ns amavis[1926]: (01926-01) Clam Antivirus-clamd FAILED – unknown status: /var/lib/amavis/tmp/amavis-20051112T121434-01926/parts: Access denied. ERROR\n
Nov 12 12:14:34 ns amavis[1926]: (01926-01) WARN: all primary virus scanners failed, considering backups

こやつの意味:
これは、/var/lib/amavis/tmp/amavis-20051112T121434-01926/partsへclamavユーザがアクセス出来ないと言ってる。
このテンポラリ領域はclamdがウィルススキャニングする場所である。

こやつの対策:
clamavのソケットファイルのオーナーとグループがclamavになっているか確かめて、間違っていたらオーナとグループをclamavに変更する。それでもだめなら、amavisグループにclamavユーザを追加させ、念のためclamavグループにもamavisユーザを参加させ双方許可しあえるようにする。

# vi /etc/group
省略
clamav:x:107:amavis
amavis:x:108:clamav
省略

■ ワーニングその3

freshclam daemon 0.90.1 (OS: linux-gnu, ARCH: i386, CPU: i686)
ClamAV update process started at Tue Jul 31 08:35:36 2007
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
See the FAQ at http://www.clamav.net/support/faq for an explanation.
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.90.1 Recommended version: 0.91.1
DON’T PANIC! Read http://www.clamav.net/support/faq
Downloading main-44.cdiff [100%]
main.cvd updated (version: 44, sigs: 133163, f-level: 20, builder: sven)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 14, recommended = 20
DON’T PANIC! Read http://www.clamav.net/support/faq
ERROR: getfile: daily-3430.cdiff not found on remote server (IP: 61.205.61.201)
ERROR: getpatch: Can’t download daily-3430.cdiff from database.clamav.net
connect_error: getsockopt(SO_ERROR): fd=6 error=113: No route to host
Can’t connect to port 80 of host database.clamav.net (IP: 219.127.68.136)
Trying host database.clamav.net (61.205.61.201)…
nonblock_connect: connect(): fd=6 errno=103: Software caused connection abort
Can’t connect to port 80 of host database.clamav.net (IP: 61.205.61.201)
Trying host database.clamav.net (203.178.137.175)…
ERROR: getfile: daily-3430.cdiff not found on remote server (IP: 203.178.137.175)
ERROR: getpatch: Can’t download daily-3430.cdiff from database.clamav.net
ERROR: getfile: daily-3430.cdiff not found on remote server (IP: 219.117.246.122)
ERROR: getpatch: Can’t download daily-3430.cdiff from database.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.inc updated (version: 3822, sigs: 8498, f-level: 16, builder: ccordes)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 14, recommended = 16
DON’T PANIC! Read http://www.clamav.net/support/faq
Database updated (141661 signatures) from database.clamav.net (IP: 219.117.246.50)
————————————–

こやつの意味と対策:
ワーニングが出てWARNING: Local version: 0.90.1 Recommended version: 0.91.1みたいなアップデートをしなさい警告が出る。これは、確かにバージョンが古いと言っているのだが、パターンファイルはアップデートされてるようだ。だから、俺はあまり気にしていない。以下を実行してみれば解る。リコメンテーティッドバージョン0.91.1にバージョンアップしなさいと言っている。

そこで、バージョン0.91.1へアップしたら、起動時freshclam.logに以下のように正常なメッセージが出力された。

————————————–
freshclam daemon 0.91.1 (OS: linux-gnu, ARCH: i386, CPU: i686)
ClamAV update process started at Tue Jul 31 08:42:27 2007
SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES
See the FAQ at http://www.clamav.net/support/faq for an explanation.
main.inc is up to date (version: 44, sigs: 133163, f-level: 20, builder: sven)
daily.cvd is up to date (version: 3822, sigs: 8498, f-level: 16, builder: ccordes)
————————————–


4.番外:CentOS4.3でPostfix+Clamd+Amavis-newの場合は・・・・

■ いきなりエラーに悩む
clamavをソースで入れて、amavisd-newをソースで入れた。その後、動かしたが、いきなりエラーで悩む。

Jun 6 18:23:10 ns postfix/smtpd[28243]: connect from unknown[xxx.xxx.xxx.xxx]
Jun 6 18:23:13 ns postfix/smtpd[28243]: 4233C20140: client=unknown[xxx.xxx.xxx.xxx], sasl_method=CRAM-MD5, sasl_username=xxxxxx
Jun 6 18:23:13 ns postfix/cleanup[28246]: 4233C20140: message-id=<20060606182642.AE31.xxxxxx@microtechnology.jp>
Jun 6 18:23:13 ns postfix/qmgr[28177]: 4233C20140: from=<xxxxxx@xxxxxx.jp>, size=508, nrcpt=1 (queue active)
Jun 6 18:23:13 ns postfix/smtpd[28243]: disconnect from unknown[xxx.xxx.xxx.xxx]
Jun 6 18:23:13 ns amavis[28248]: (28202-01) run_command: child process [28248]: Can’t close main::stdin: Bad file descriptor at /usr/sbin/amavisd line 1589.\n
Jun 6 18:23:13 ns postfix/smtp[28247]: 4233C20140: to=<xxxxxx@xxxxxx.net>, relay=127.0.0.1[127.0.0.1], delay=3, status=deferred (host 127.0.0.1[127.0.0.1] said: 421 4.3.2 Service shutting down, closing channel (in reply to end of DATA command))
Jun 6 18:23:13 ns amavis[28202]: (28202-01) TROUBLE in check_mail: mime_decode-1 FAILED: parsing file(1) results – missing last 1 results at (eval 43) line 150.
Jun 6 18:23:13 ns amavis[28202]: (28202-01) TROUBLE in process_request: register_proc: BDB N db
_cursor: Locker does not exist, . at (eval 36) line 127.
Jun 6 18:23:13 ns amavis[28202]: (28202-01) Requesting process rundown after fatal error

あまり、情報が無く解決に困難を要した。libdb系のエラーのようにも思えるが・・・・・。まあ、考えて居てもしょうがないので、とりあえずCentOSのパッケージにamavisd-newが有るようなので、今回はyumを活用してamavisd-newを入れようと思った。

■ サードパーティのリポジトリを使う
yumでamavisd-newをインスコするには、サードパーティのリポジトリを使用しなければならない。したがって、yum関係で以下の作業を行う。

[root@ns /]# cd /etc/yum.repos.d
ファイル名は何でも良い。編集して以下青字部分を追加。
[root@ns yum.repos.d]# vi /etc/yum.repos.d/Third.repo
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1

GPGキーのインストール。RPM の署名を検証のためのキー設定。
[root@ns yum.repos.d]# rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt  ←実際は一行で一応、更新パッケージチェックしてみる。
[root@ns yum.repos.d]# yum check-update
あれば、パッケージ更新。
[root@ns yum.repos.d]# yum update

■ amavisd-newをインストールする
amavisd-newでは、関連モジュールを全て自動的に入れてくれるけど、perl-IO-Multiplexだけは、予め入れろと言われた。
[root@ns yum.repos.d]# yum install perl-IO-Multiplex
amavisd-newを入れる。
[root@ns yum.repos.d]# yum install amavisd-new

■ amavisd.confを編集する

[root@ns yum.repos.d]# vi /etc/amavisd.conf
省略
@bypass_spam_checks_maps = (1); # uncomment to DISABLE anti-spam code

$max_servers = 2; # number of pre-forked children (2..15 is common)
$daemon_user = “amavis”; # (no default; customary: vscan or amavis)
$daemon_group = “amavis”; # (no default; customary: vscan or amavis)

$mydomain = ‘xxxxxx.jp’; # a convenient default for other settings

$MYHOME = “/var/amavis”;
$TEMPBASE = “$MYHOME/tmp”; # working directory, needs to be created manually
$ENV{TMPDIR} = $TEMPBASE; # environment variable TMPDIR
$QUARANTINEDIR = “/var/virusmails”;

$db_home = “$MYHOME/db”;
$pid_file = “$MYHOME/amavisd.pid”;
$lock_file = “$MYHOME/amavisd.lock”;

@local_domains_maps = ( [“.$mydomain”] );

$log_level = 0; # verbosity 0..5
$log_recip_templ = undef; # disable by-recipient level-0 log entries
$DO_SYSLOG = 1; # log via syslogd (preferred)
$syslog_facility = ‘mail’; # Syslog facility as a string
# e.g.: mail, daemon, user, local0, … local7
$syslog_priority = ‘info’; # Syslog base (minimal) priority as a string,
# choose from: emerg, alert, crit, err, warning, notice, info, debug

$enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny)
$enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1

$inet_socket_port = 10024; # listen on this local TCP port(s) (see $protocol)
$unix_socketname = “$MYHOME/amavisd.sock”; # amavisd-release or amavis-milter

$interface_policy{‘SOCK’}=’AM.PDP-SOCK’; # only relevant with $unix_socketname
$policy_bank{‘AM.PDP-SOCK’} = { protocol=>’AM.PDP’ };

$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.31; # add ‘spam detected’ headers at that level
$sa_kill_level_deflt = 6.31; # triggers spam evasive actions
$sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent

$sa_mail_body_size_limit = 512*1024; # don’t waste time on SA if mail is larger
$sa_local_tests_only = 0; # only tests which do not require internet access?

$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
$mailfrom_to_quarantine = ”; # null return path; uses original sender if undef

@addr_extension_virus_maps = (‘virus’);
@addr_extension_spam_maps = (‘spam’);
@addr_extension_banned_maps = (‘banned’);
@addr_extension_bad_header_maps = (‘badh’);

$path = ‘/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin’;

$MAXLEVELS = 14;
$MAXFILES = 1500;
$MIN_EXPANSION_QUOTA = 100*1024; # bytes (default undef, not enforced)
$MAX_EXPANSION_QUOTA = 300*1024*1024; # bytes (default undef, not enforced)

$sa_spam_subject_tag = ‘***SPAM*** ‘;
$defang_virus = 1; # MIME-wrap passed infected mail
$defang_banned = 1; # MIME-wrap passed mail containing banned name

# OTHER MORE COMMON SETTINGS (defaults may suffice):

$myhostname = ‘ns.xxxxxx.jp’; # must be a fully-qualified domain name!   ←※

$notify_method = $forward_method;
$forward_method = ‘smtp:[127.0.0.1]:10025’; # set to undef with milter!
省略

ほとんど、2項の4)の説明と同じところを編集すれば良いのだが、一つだけ上記で※印の$myhostnameをちゃんとFQDNで設定しないとエラーが出るので注意。

■ ユーザの変更
userとgroupにバイナリパッケージはamavisが強制的に設定されてしまうので、以下を行う。
[root@ns yum.repos.d]# gpasswd -a amavis clamav
[root@ns yum.repos.d]# gpasswd -a clamav amavis

■ 動作確認と起動
デバッグモードで動かして動作確認。
[root@ns yum.repos.d]# amavisd debug
デバッグモードが、旨く動くようで有れば、
[root@ns yum.repos.d]# /etc/init.d/amavisd start


5.clamav-0.90.xへアップデートしたとき引っかかったこと

■ ライブラリのシンボルリンク

ソースをコンパイルしたあと、起動時にエラーが出るのでライブラリを以下のようにシンボルリンクしよう。
root@hiro:~# ln -s /usr/local/lib/libclamav.so.2 /usr/lib/

root@hiro:~# ln -s /usr/local/lib/libclamav.so.2.0.1 /usr/lib/

■ clamd.confの修正

以下のように、Remove stale socketの項目がコメントアウトされていたら、以下のようにコメントにしよう。コメントしてDisabledにしないとエラーが出るよ。
root@hiro:~# vi /usr/local/etc/clamd.conf
省略
# Remove stale socket after unclean shutdown.
# Default: disabled
#FixStaleSocket


6.clamd 0.94へアップデートしてclamdを起動すると、cannot open shared object fileエラーで起動しない

root@hiro:/usr/local/src/clamav-0.94# /usr/local/sbin/clamd
/usr/local/sbin/clamd: error while loading shared libraries: libclamav.so.5: cannot open shared object file: No such file or directory

まず、libclamav.so.5が無いといわれるので、以下の如くシンボルリンクを貼る。
root@hiro:/usr/local/src/clamav-0.94# ln -s /usr/local/lib/libclamav.so.5 /usr/lib/

root@hiro:/usr/local/src/clamav-0.94# /usr/local/sbin/clamd
/usr/local/sbin/clamd: error while loading shared libraries: libclamunrar_iface.so.5: cannot open shared object file: No such file or directory

libclamunrar_iface.so.5が無いといわれるので、以下の如くシンボルリンクを貼る。
root@hiro:/usr/local/src/clamav-0.94# ln -s /usr/local/lib/libclamunrar_iface.so.5 /usr/lib/

root@hiro:/usr/local/src/clamav-0.94# /usr/local/sbin/clamd
/usr/local/sbin/clamd: error while loading shared libraries: libclamunrar.so.5: cannot open shared object file: No such file or directory

libclamunrar.so.5が無いといわれるので、以下の如くシンボルリンクを貼る。
root@hiro:/usr/local/src/clamav-0.94# ln -s /usr/local/lib/libclamunrar.so.5 /usr/lib/

これで、無事起動。
root@hiro:/usr/local/src/clamav-0.94# /usr/local/sbin/clamd
root@hiro:/usr/local/src/clamav-0.94#


7.clamdデータベースフォーマットエラー

LibClamAV Error: Can’t load /var/lib/clamav/daily.cld: Malformed database ERROR: Malformed database
のようなエラーを吐いて、いつの間にかclamd-daemonが落ちる。
これは、clamdのバージョンアップによるウィルス定義ファイルのフォーマットの不整合によるエラーである。旧バージョン0.94と新バージョン0.96で発生した。この場合には、以下の対策を行う。

一旦、main.cldとdaliy.cldを削除して、freshclmをリスタートして改めて最新のウィルス定義ファイルをダウンロードする。
# rm /var/lib/clamav/main.cld
# rm /var/lib/clamav/daliy.cld

# /etc/init.d/clamav-freshclm restart

その後、clamd-daemonをスタートする。しかし、この対策は、その場しのぎの対策のようだ。再発した。そこで、sources.listに以下のリポジトリを追加してclamdのアップデートをお勧めする。

deb http://volatile.debian.org/debian-volatile lenny/volatile main

以上

コメント