Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □Postfix + amavisd-new でウィルススキャン【2012年VineLinux版】

□Postfix + amavisd-new でウィルススキャン【2012年VineLinux版】

 

参考URL:
http://www.ijs.si/software/amavisd/
http://kajuhome.com/clam_antivirus.shtml#n07-03

ウィルススキャンサーバーが古くなってきたので、そろそろ新しいのを、
と思ってサーバーをポチッて「いざ構築!」とかやり始めたら、amavisを
はじめとしてだいぶ様子が変わっていたので改めてメモを作りました。

mkdir /usr/src/package
cd /usr/src/package
wget http://www.ijs.si/software/amavisd/amavisd-new-2.8.0.tar.gz
cd /usr/src/
tar xvzf package/amavisd-new-2.8.0.tar.gz
cd amavisd-new-2.8.0/

として、INSTALL を見てみると、まず Perl モジュールとして下記のもの
がいるとのこと。CPAN 使ってしこしこインストールしましょう。

まずはCPANを最新に。

perl -MCPAN -e shell

o conf prerequisites_policy follow
o conf commit

install YAML CPAN
reload cpan

続いて必要なモジュールのインストール。

Archive::Zip   (Archive-Zip-x.xx) (1.14 or later, currently 1.23)
Compress::Zlib (Compress-Zlib-x.xx) (1.35 or later, currently 2.008)
Compress::Raw::Zlib (Compress-Raw-Zlib) (2.017 or later)
Convert::TNEF  (Convert-TNEF-x.xx)
Convert::UUlib (Convert-UUlib-x.xxx) (1.08 or later, stick to new versions!)
MIME::Base64   (MIME-Base64-x.xx)
MIME::Parser   (MIME-Tools-x.xxxx) (latest version from CPAN – currently 5.425)
Mail::Internet (MailTools-1.58 or later have workarounds for Perl 5.8.0 bugs)
Net::Server    (Net-Server-x.xx) (version 0.88 finally does setuid right)
Digest::MD5    (Digest-MD5-x.xx) (2.22 or later)
IO::Stringy    (IO-stringy-x.xxx)
Time::HiRes    (Time-HiRes-x.xx) (use 1.49 or later, older can cause problems)
Unix::Syslog   (Unix-Syslog-x.xxx)
BerkeleyDB     with bdb library (preferably 4.4.20 or later)
Mail::DKIM     (Mail-DKIM-0.31 or later)

install Archive::Zip Compress::Zlib Compress::Raw::Zlib Convert::TNEF Convert::UUlib
install MIME::Base64 MIME::Parser Mail::Internet
install Net::Server Digest::MD5 IO::Stringy Time::HiRes Unix::Syslog Mail::DKIM
install BerkeleyDB

OpenSSLとかBerkeleyDB辺りでエラーが出る場合には、それらの開発用
パッケージ(何とか-devel)もインストールしておくこと。

apt-get -y install openssl-devel db4 db4-devel db4-utils

他にも

> optional Perl modules:
>   Mail::SpamAssassin          for doing spam scanning (latest version)
>   DBI with appropriate DBD::* if using SQL lookups or SQL logging/quarantining
>   Net::LDAP                   if using LDAP lookups
>   Authen::SASL          authenticating on mail forwarding and on submitting DSN
>   Mail::ClamAV          Perl module interface to ClamAV library
>   SAVI                  Perl module interface to Sophos library (0.30 or later)

install Mail::SPF NetAddr::IP Digest::SHA1 IP::Country Net::Ident IO::Socket::INET6 IO::Socket::SSL Encode::Detect Mail::ClamAV
install TODDR/Razor2-Client-Agent-2.83.tar.gz
install Mail::ClamAV Mail::SpamAssassin

これらを入れておくと(っていうか、spamスキャナは必須か)幸せになるらしい
です。…だけど、今回はとりあえず入れません。(^^;

Mail::SpamAssassinとかNet::SSLeayとかClamAV辺りでエラーが出る場合は、
それらのパッケージ(何とか-devel)もインストールしておくこと。

apt-get -y install perl-Net_SSLeay clamav clamav-devel clamav-milter
apt-get -y install spamassassin spamassassin-tools perl-Mail-SpamAssassin

他に圧縮展開に必要なツールとして

>   compress, gzip, bzip2, nomarch (or arc), lha, arj (or unarj), rar (or unrar),
>   unzoo (or zoo), pax, cpio, lzop, freeze (or unfreeze or melt), ripole,
>   tnef, cabextract.

が必要ということで、出来るだけ入れておく。

apt-get -y install ncompress gzip bzip2 lha unarj unrar pax cpio lzop cabextract

パッケージがないのは

http://rpmfind.net/linux/RPM/index.html

あたりで探すと便利。まぁFedoraCoreのrpm入れていますけど、動けばOK。

cd /usr/src/package/

wget ftp://fr2.rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/n/nomarch-1.4-8.fc17.i686.rpm
rpm -Uvh nomarch-1.4-8.fc17.i686.rpm

wget ftp://fr2.rpmfind.net/linux/rpmfusion/nonfree/fedora/releases/17/Everything/i386/os/lha-1.14i-24.fc17.i686.rpm
rpm -Uvh lha-1.14i-24.fc17.i686.rpm

wget ftp://fr2.rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/a/arj-3.10.22-14.fc17.i686.rpm
rpm -Uvh arj-3.10.22-14.fc17.i686.rpm

wget ftp://fr2.rpmfind.net/linux/atrpms/f17-x86_64/atrpms/stable/rar-3.9.3-4.fc17.i686.rpm
rpm -Uvh rar-3.9.3-4.fc17.i686.rpm

wget ftp://fr2.rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/u/unzoo-4.4-7.fc17.i686.rpm
rpm -Uvh unzoo-4.4-7.fc17.i686.rpm

wget ftp://fr2.rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/f/freeze-2.5.0-13.fc17.i686.rpm
rpm -Uvh freeze-2.5.0-13.fc17.i686.rpm

wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/ripole-0.2.0-1.2.el5.rf.i386.rpm
rpm -Uvh ripole-0.2.0-1.2.el5.rf.i386.rpm

wget ftp://fr2.rpmfind.net/linux/fedora/linux/updates/17/i386/tnef-1.4.9-1.fc17.i686.rpm
rpm -Uvh tnef-1.4.9-1.fc17.i686.rpm

wget ftp://fr2.rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/l/libmspack-0.3-0.2.alpha.fc17.i686.rpm
wget ftp://fr2.rpmfind.net/linux/fedora/linux/releases/17/Everything/i386/os/Packages/c/cabextract-1.4-2.fc17.i686.rpm
rpm -Uvh libmspack-0.3-0.2.alpha.fc17.i686.rpm
rpm -Uvh cabextract-1.4-2.fc17.i686.rpm
一通りモジュールを入れたら amavisd-new 用のアカウントを用意します。
今までのウィルスチェックを試していたならば vscan というアカウント
があるでしょうが、せっかちでいきなりここに来た人は作ってください。

とりあえず amavisd:amavisd というアカウントを作っておきます。
ホームディレクトリは /var/amavis/ にしておきます。

groupadd amavisd
/usr/sbin/useradd -d ‘/var/amavis’ -g amavisd -s ‘/bin/bash’ -c ‘Amavis’ -m amavisd

mkdir /var/amavis
mkdir /var/amavis/tmp
mkdir /var/amavis/db
chown -R amavisd:amavisd /var/amavis
chmod 750 /var/amavis

そしたら展開した中から出てきた amavisd 他をコピーします。

cp amavisd /usr/local/sbin/
chown root /usr/local/sbin/amavisd
chmod 755 /usr/local/sbin/amavisd

cp amavisd.conf /etc/
chown root /etc/amavisd.conf
chmod 644 /etc/amavisd.conf

mkdir /var/virusmails
chown amavisd:amavisd /var/virusmails
chmod 750 /var/virusmails

mkdir /var/run/amavisd/
chown amavisd:amavisd /var/run/amavisd/
chmod 700 /var/virusmails

で、あとは /etc/amavisd.conf をいじります。

以下のパラメーターを書き直します。

emacs /etc/amavisd.conf

> #$max_servers = 2;            # num of pre-forked children (2..30 is common), -m
> $max_servers = 100;            # num of pre-forked children (2..30 is common), -m

> #$daemon_user  = ‘vscan’;     # (no default;  customary: vscan or amavis), -u
> #$daemon_group = ‘vscan’;     # (no default;  customary: vscan or amavis), -g
> $daemon_user  = ‘amavisd’;     # (no default;  customary: vscan or amavis), -u
> $daemon_group = ‘amavisd’;     # (no default;  customary: vscan or amavis), -g
>
> #$mydomain = ‘example.com’;   # a convenient default for other settings
> $mydomain = ‘example.jp’;   # a convenient default for other settings

> # $pid_file  = “$MYHOME/var/amavisd.pid”;   # -P
> $pid_file  = “/var/run/amavisd/amavisd.pid”;   # -P

また、Postfix を使用しているので以下のコメントアウトをはずします。

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

こうすると、amavisd-new に振られてウィルス(等)のチェックが完了した
メールを10025番ポートを通じてローカルマシンの Postfix に返す、という
意味です。通知も同じように、ということですね。

ちなみに

> $inet_socket_port = 10024; # accept SMTP on this local TCP port

amavisd-new 自体は10024番ポートで待ちますが、これが嫌なら他に替えること。

それと、

> @local_domains_acl

このパラメーターにドメインを追記していくとローカル配信ということなのかな?

また、管理者への通知は

> $virus_admin = “virusalert\@$mydomain”;

これが宛先になるので、このままでよければこのままで、違うところに
送りたい場合にはコメントアウトして

> #$virus_admin               = “virusalert\@$mydomain”;  # notifications recip.
> $virus_admin               = “virusalert\@fwnet.jp”;  # notifications recip.

のようにすればよい。

そんなんで、/etc/amavisd.conf は一通り目を通すようにしてください。

で、つづいて postfix の設定です。

AMaViS の時には

—> Postfix —(10025)—> AMaViS —(10026)—> Postfix —>

という流れでしたが、amavisd-new の場合には

—> Postfix —(10024)—> amavisd-new —(10025)—> Postfix —>

という流れみたいですね。

では早速動かしてみましょう。え?ウィルスチェック用ソフトが無い?
大丈夫、とりあえず試すことはできます。

まずウィルスチェックも何もしないなら /etc/amavisd.conf の

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

上記の2つのパラメーターを両方ともコメントアウトをやめて

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

というようにしてください。

さらにウィルススキャンソフトとしてclamavをインストールする。

このときの注意として、amavisdからウィルススキャンソフトにアクセスが
出来ること。かつ、amavisdが展開したファイルに対してアクセスができる
ようにすること。

参考:http://clamav-jp.sourceforge.jp/jdoc/clamav.html

groupadd clamav
/usr/sbin/useradd -d ‘/var/clamav’ -g clamav -s ‘/dev/null’ -c ‘Clam Antivirus’ -m clamav

cd /usr/src/package/
wget http://downloads.sourceforge.net/clamav/clamav-0.97.6.tar.gz
cd /usr/src/
tar xvzf package/clamav-0.97.6.tar.gz
cd clamav-0.97.6/
./configure –prefix=/usr –sysconfdir=/etc
make
make check
make install
mkdir /usr/share/clamav/
chown clamav.clamav /usr/share/clamav/

emacs /etc/freshclam.conf

----------
#Example
----------

emacs /etc/clamd.conf

----------
#Example

#LocalSocket /tmp/clamd.socket
LocalSocket /var/run/clamav/clamd.sock

#LocalSocketGroup virusgroup
LocalSocketGroup amavisd

----------

と修正して、

freshclam

で、パターンファイルの更新をしてからデーモンを動かす。

chkconfig –level 345 clamd on
/etc/init.d/clamd start

chkconfig –level 345 freshclam on
/etc/init.d/freshclam start

で、amavisd を起動してみると…

su – amavisd
/usr/local/sbin/amavisd debug &

> fetch_modules: error loading optional module MIME/Decoder/BinHex.pm:
>   Can’t locate Convert/BinHex.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/local/share/perl5/MIME/Decoder/BinHex.pm line 45.
>   BEGIN failed–compilation aborted at /usr/local/share/perl5/MIME/Decoder/BinHex.pm line 45.
>   Compilation failed in require at /usr/local/sbin/amavisd line 205.

ありゃ、怒られてしまいました。

どうもPerlのBinHexモジュールがないみたいですね。
通知メッセージ自体がオプションなので必要なモジュールとしては書かれて
いないんでしょうね。

というわけでインストール。

apt-get -y install perl-Convert-BinHex

でも、CPANで

perl -MCPAN -e shell

install Convert::BinHex

でも…あれ?CPANだとエラーになったのでapt-getにしときます。
後のテスト方法は詳しくは ./README_FILES/README.postfix に書いてある
ので、これをよくみてみましょう。デバッグの方法から書いてあります。

簡単にいうと、/etc/postfix/main.cf の最後にでも

> # For amavisd-new : Virus Scan …
> content_filter = smtp:[127.0.0.1]:10024
> default_process_limit = 500

として、/etc/postfix/master.cf の最後に

> 127.0.0.1:10025   inet  n       –       n       –       100     smtpd
>     -o content_filter=-o myhostname=dummy.domain.name

とでも追加すればOK。ちなみに

> 127.0.0.1:10025   inet  n       –       n       –       100     smtpd
>     -o content_filter=

とすると、ウィルスチェック専用サーバーとしてさらに他のサーバーに
リレーできるようになります。

リレーの設定は Postfix 次第なのですが、ポイントは /etc/postfix/main.cf の

> #relay_domains = $mydestination

です。ここを

> #relay_domains = $mydestination
> relay_domains = /etc/postfix/relay_domains

さらに

> # TRANSPORT MAP
> #
> # See the discussion in the ADDRESS_REWRITING_README document.
> transport_maps = hash:/etc/postfix/transport

ように転送先マップの設定を追加。

そしたらリレードメインとして、/etc/postfix/relay_domains に

emacs /etc/postfix/relay_domains

> #
> # relay_domains
> #
> fwnet.jp
> fwnet.or.jp

のようにすると、リレーするドメインが決まります。

あとは /etc/postfix/transport に転送先サーバー名とか書いて

emacs /etc/postfix/transport

> #
> # TEST DOMAIN
> #
> fwnet.jp        :[mail.fwnet.jp]

この転送を有効にしたらいい

/usr/sbin/postmap hash:/etc/postfix/transport < /etc/postfix/transport
/usr/sbin/postfix reload

cat > ./maketransport.sh

----------
#!/bin/sh
/usr/sbin/postmap hash:/etc/postfix/transport < /etc/postfix/transport
ls -al /etc/postfix/transport*
/usr/sbin/postfix reload
----------

chmod 755 ./maketransport.sh

ほかに、Postfixにはいろいろなパラメータがあるので設定を怠らないこと。
★ポイント… 通知メッセージの日本語化

通知メッセージを日本語で送る場合には、色々といじらないといけません。

最近のAmavisのバージョン(今回は2.8.0)では、特に通知メッセージについて
設定するパラメーターがそもそもデフォルトで入っていません。

古いバージョンの設定ファイルにはあるのですが、新しいのからは削除され
ています。

ただし、/usr/local/sbin/amavisd そのものには通知メッセージ処理はある
ので、設定を /etc/amavisd.confにしていけば動きます。

日本語で通知するにはエンコーディングしないといけませんが、そのための
処理もきちんと用意されています。

/etc/amavisd.confの最後にでも

> read_l10n_templates(‘/etc/amavis/’);

というパラメーターを置いて、日本語化した通知メッセージを()内のディレ
クトリにおいて、「charset」と言うファイルで文字コードを指定してあげ
ないといけません。

注意しなければいけない点として、charset は通知用ファイルの文字コード
を書くのであって、通知するメールそのもののエンコードは amavisd.conf
に別途その設定を書かないといけません。

> $hdr_encoding = ‘iso-2022-jp’;
> $bdy_encoding = ‘iso-2022-jp’;

なので、/etc/amavisd.confの最後の1;の手前に以下を追加します。

emacs /etc/amavisd.conf

----------
#
# Notification Parameter
#
read_l10n_templates(‘/etc/amavis/’);
$hdr_encoding = ‘iso-2022-jp’;
$bdy_encoding = ‘iso-2022-jp’;
----------

さらに

mkdir /etc/amavis

としてディレクトリを作って、charset に文字コードを書いておきます。

cat > /etc/amavis/charset

----------
iso-2022-jp
----------

ちなみにメールを送信するかしないかは

> # Notify virus sender?
> #$warnvirussender = 1; # (defaults to false (undef))
>
> # Notify spam sender?
> #$warnspamsender = 1; # (defaults to false (undef))
>
> # Notify sender of banned files?
> #$warnbannedsender = 1; # (defaults to false (undef))
>
> # Notify sender of syntactically invalid header containing non-ASCII characters?
> #$warnbadhsender = 1; # (defaults to false (undef))
>
> # Notify virus (or banned files) RECIPIENT?
> # (not very useful, but some policies demand it)
> #$warnvirusrecip = 1; # (defaults to false (undef))
> #$warnbannedrecip = 1; # (defaults to false (undef))
>
> # Notify also non-local virus/banned recipients if $warn*recip is true?
> # (including those not matching local_domains*)
> #$warn_offsite = 1; # (defaults to false (undef), i.e. only notify locals)

これらのパラメータで決まります。

最近は送信元の詐称は当たり前なので sender に通知しても意味が無いと
思われます。なので、RECIPIENT (送信先)に通知をすれば十分でしょう。
ただ、いっぱいウィルスメールが来ると、今度は「検知しました」メール
がspamメールになるので、それはそれで注意しましょう。

まぁ管理者宛にのみ送るようにすればいいんじゃないかと思います。

複数のドメインをチェックする場合には、Postfix でもリレー設定をして
いるはずなので、/etc/amavisd.conf の設定を下記のようにして通知可能
な送信先ドメインを設定しておかないと、管理者にしか通知が来ません。

> read_hash(\%local_domains, ‘/etc/postfix/relay_domains’);

逆を言うと、ここに書かないと送信元に通知ができないけど、世の中全部
のドメインを書くわけにも行かないので、通知先のドメイン名は限定しま
しょう、ってことですね。
あとは以下の方法で日本語通知メッセージを設置します。

まぁとりあえず touch しておけばいいでしょう。(通知しないしね)

touch /etc/amavis/template-dsn.txt
touch /etc/amavis/template-virus-sender.txt
touch /etc/amavis/template-virus-admin.txt
touch /etc/amavis/template-virus-recipient.txt
touch /etc/amavis/template-spam-sender.txt
touch /etc/amavis/template-spam-admin.txt

で、管理者向けの「見つけたぞ」メールの内容を作りましょう。

/usr/local/sbin/amavisd を見てみると、最後の方に通常時のメッセージ
が「# This is a template for… 」という書き出しでかいてあるので、
ここからそれぞれのファイルへコピペして日本語化するといいでしょう。

前のバージョンと一部変数が変わっているので注意すること。(%oが%lとか)

> # =============================================================================
> # This is a template for non-spam (e.g. VIRUS,…) ADMINISTRATOR NOTIFICATIONS.
> # For syntax and customization instructions see README.customize.
> # Long header fields will be automatically wrapped by the program.
> #
> From: %f
> Date: %d
> Subject: [? [:ccat|major] |Clean mail|Clean mail|MTA-blocked mail|\
> OVERSIZED mail|INVALID HEADER in mail|Spammy|Spam|UNCHECKED contents in mail|\
> BANNED contents (%F) in mail|VIRUS (%V) in mail]\
>  FROM [?%l||LOCAL ][?%a||[:client_addr_port] ]%s
> To: [? %#T |undisclosed-recipients:;|[%T|, ]]
> [? %#C |#|Cc: [%C|, ]]
> Message-ID: <VA%i@%h>
>
> [? %#V |No viruses were found.
> |A virus was found: %V
> |Two viruses were found:\n  %V
> |%#V viruses were found:\n  %V
> ]
> [? %#F |#|[:wrap|78||  |Banned [?%#F|names|name|names]: %F]]
> [? %#X |#|Bad header:[\n[:wrap|78|  |  |%X]]]
> [? %#W |#\
> |Scanner detecting a virus: %W
> |Scanners detecting a virus: %W
> ]
> Content type: [:ccat|name|main]#
> [? [:ccat|is_blocked_by_nonmain] ||, blocked for [:ccat|name]]
> Internal reference code for the message is %n/%i
>
> [? %a |#|[:wrap|78||  |First upstream SMTP client IP address: \[%a\] %g]]
> [? %e |#|[:wrap|78||  |According to a ‘Received:’ trace,\
>  the message apparently originated at: \[%e\], %t]]
>
> [:wrap|78||  |Return-Path: %s[?[:dkim|envsender]|| (OK)]]
> [:wrap|78||  |From: [:header_field|From][?[:dkim|author]|| (dkim:AUTHOR)]]
> [? [:header_field|Sender]|#|\
> [:wrap|78||  |Sender: [:header_field|Sender]\
> [?[:dkim|sender]|| (dkim:SENDER)]]]
> [? %m |#|[:wrap|78||  |Message-ID: %m]]
> [? %r |#|[:wrap|78||  |Resent-Message-ID: %r]]
> [? %j |#|[:wrap|78||  |Subject: %j]]
> [? %q |Not quarantined.|The message has been quarantined as: %q]
>
> [? %#S |Notification to sender will not be mailed.
>
> ]#
> [? %#D |#|The message WILL BE relayed to:[\n%D]
> ]
> [? %#N |#|The message WAS NOT relayed to:[\n%N]
> ]
> [? %#V |#|[? %#v |#|Virus scanner output:[\n  %v]
> ]]
> __DATA__

実際にカスタマイズするには、./README_FILES/README.customize に各変数
の意味が書いてあるので、それを見てください。

で、改めてAmavisを起動して

/usr/local/sbin/amavisd &

以下のように /var/log/maillog に出力されれば起動OK。

> Nov 28 12:16:26 mx03 amavis[1770]: starting. /usr/local/sbin/amavisd at example.jp amavisd-new-2.8.0 (20120630), Unicode aware, LANG=”ja_JP.UTF-8″
> Nov 28 12:16:26 mx03 amavis[1771]: Net::Server: Group Not Defined.  Defaulting to EGID ‘500 500’
> Nov 28 12:16:26 mx03 amavis[1771]: Net::Server: User Not Defined.  Defaulting to EUID ‘500’
> Nov 28 12:16:26 mx03 amavis[1771]: Module Amavis::Conf        2.316
> Nov 28 12:16:26 mx03 amavis[1771]: Module Archive::Zip        1.30
> Nov 28 12:16:26 mx03 amavis[1771]: Module BerkeleyDB          0.51
> Nov 28 12:16:26 mx03 amavis[1771]: Module Compress::Zlib      2.058
> Nov 28 12:16:26 mx03 amavis[1771]: Module Convert::TNEF       0.18
> Nov 28 12:16:26 mx03 amavis[1771]: Module Convert::UUlib      1.4
> Nov 28 12:16:26 mx03 amavis[1771]: Module Crypt::OpenSSL::RSA 0.28
> Nov 28 12:16:26 mx03 amavis[1771]: Module DB_File             1.82
> Nov 28 12:16:26 mx03 amavis[1771]: Module Digest::MD5         2.52
> Nov 28 12:16:26 mx03 amavis[1771]: Module Digest::SHA         5.47
> Nov 28 12:16:26 mx03 amavis[1771]: Module Digest::SHA1        2.13
> Nov 28 12:16:26 mx03 amavis[1771]: Module Encode              2.35
> Nov 28 12:16:26 mx03 amavis[1771]: Module File::Temp          0.22
> Nov 28 12:16:26 mx03 amavis[1771]: Module IO::Socket::INET6   2.69
> Nov 28 12:16:26 mx03 amavis[1771]: Module MIME::Entity        5.503
> Nov 28 12:16:26 mx03 amavis[1771]: Module MIME::Parser        5.503
> Nov 28 12:16:26 mx03 amavis[1771]: Module MIME::Tools         5.503
> Nov 28 12:16:26 mx03 amavis[1771]: Module Mail::DKIM::Signer  0.39
> Nov 28 12:16:26 mx03 amavis[1771]: Module Mail::DKIM::Verifier 0.39
> Nov 28 12:16:26 mx03 amavis[1771]: Module Mail::Header        2.11
> Nov 28 12:16:26 mx03 amavis[1771]: Module Mail::Internet      2.11
> Nov 28 12:16:26 mx03 amavis[1771]: Module Mail::SPF           v2.008
> Nov 28 12:16:26 mx03 amavis[1771]: Module Mail::SpamAssassin  3.003002
> Nov 28 12:16:26 mx03 amavis[1771]: Module Net::DNS            0.68
> Nov 28 12:16:26 mx03 amavis[1771]: Module Net::Server         2.006
> Nov 28 12:16:26 mx03 amavis[1771]: Module NetAddr::IP         4.066
> Nov 28 12:16:26 mx03 amavis[1771]: Module Razor2::Client::Version 2.83
> Nov 28 12:16:26 mx03 amavis[1771]: Module Scalar::Util        1.21
> Nov 28 12:16:26 mx03 amavis[1771]: Module Socket              1.82
> Nov 28 12:16:26 mx03 amavis[1771]: Module Socket6             0.23
> Nov 28 12:16:26 mx03 amavis[1771]: Module Time::HiRes         1.9725
> Nov 28 12:16:26 mx03 amavis[1771]: Module URI                 1.40
> Nov 28 12:16:26 mx03 amavis[1771]: Module Unix::Syslog        1.1
> Nov 28 12:16:26 mx03 amavis[1771]: Amavis::ZMQ code     NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Amavis::DB code      loaded
> Nov 28 12:16:26 mx03 amavis[1771]: SQL base code        NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: SQL::Log code        NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: SQL::Quarantine      NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Lookup::SQL code     NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Lookup::LDAP code    NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: AM.PDP-in proto code loaded
> Nov 28 12:16:26 mx03 amavis[1771]: SMTP-in proto code   loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Courier proto code   NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: SMTP-out proto code  loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Pipe-out proto code  NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: BSMTP-out proto code NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Local-out proto code loaded
> Nov 28 12:16:26 mx03 amavis[1771]: OS_Fingerprint code  NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: ANTI-VIRUS code      loaded
> Nov 28 12:16:26 mx03 amavis[1771]: ANTI-SPAM code       loaded
> Nov 28 12:16:26 mx03 amavis[1771]: ANTI-SPAM-EXT code   NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: ANTI-SPAM-C code     NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: ANTI-SPAM-SA code    loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Unpackers code       loaded
> Nov 28 12:16:26 mx03 amavis[1771]: DKIM code            loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Tools code           NOT loaded
> Nov 28 12:16:26 mx03 amavis[1771]: Found $file            at /usr/bin/file
> Nov 28 12:16:26 mx03 amavis[1771]: No $altermime,         not using it
> Nov 28 12:16:26 mx03 amavis[1771]: Internal decoder for .mail
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .F    at /usr/bin/unfreeze
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .Z    at /usr/bin/uncompress
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .gz   at /usr/bin/gzip -d
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .bz2  at /usr/bin/bzip2 -d
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .xz   at /usr/bin/xzdec
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .lzma at /usr/bin/lzmadec
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .lrz, tried: lrzip -q -k -d -o -, lrzcat -q -k
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .lzo  at /usr/bin/lzop -d
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .rpm  at /usr/bin/rpm2cpio
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .cpio at /usr/bin/pax
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .tar  at /usr/bin/pax
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .deb  at /usr/bin/ar
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .rar  at /usr/bin/rar
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .arj  at /usr/bin/unarj
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .arc  at /usr/bin/nomarch
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .zoo  at /usr/bin/unzoo
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .doc, tried: ripole
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .cab  at /usr/bin/cabextract
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .tnef at /usr/bin/tnef
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .zip, tried: 7za, 7z
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .kmz, tried: 7za, 7z
> Nov 28 12:16:26 mx03 amavis[1771]: Internal decoder for .zip
> Nov 28 12:16:26 mx03 amavis[1771]: Internal decoder for .kmz
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .7z, tried: 7zr, 7za, 7z
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .7z, tried: 7za, 7z
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .jar, tried: 7z
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .swf, tried: 7z
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .lha, tried: 7z
> Nov 28 12:16:26 mx03 amavis[1771]: No ext program for   .iso, tried: 7z
> Nov 28 12:16:26 mx03 amavis[1771]: Found decoder for    .exe  at /usr/bin/rar; /usr/bin/lha; /usr/bin/unarj
> Nov 28 12:16:26 mx03 amavis[1771]: No decoder for       .7z
> Nov 28 12:16:26 mx03 amavis[1771]: No decoder for       .doc
> Nov 28 12:16:26 mx03 amavis[1771]: No decoder for       .iso
> Nov 28 12:16:26 mx03 amavis[1771]: No decoder for       .jar
> Nov 28 12:16:26 mx03 amavis[1771]: No decoder for       .lha
> Nov 28 12:16:26 mx03 amavis[1771]: No decoder for       .lrz
> Nov 28 12:16:26 mx03 amavis[1771]: No decoder for       .swf
> Nov 28 12:16:26 mx03 amavis[1771]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan
> Nov 28 12:16:26 mx03 amavis[1771]: Deleting db files __db.004,__db.001,snmp.db,__db.003,nanny.db,__db.002 in /var/amavis/db
> Nov 28 12:16:26 mx03 amavis[1771]: Creating db in /var/amavis/db/; BerkeleyDB 0.51, libdb 4.7

もし

> Nov 28 12:16:26 mx03 amavis[1771]: (!!)TROUBLE in pre_loop_hook: config: no rules were found!  Do you need to run ‘sa-update’?
> Nov 28 12:16:26 mx03 amavis[1771]: (!)_DIE: Suicide () TROUBLE in pre_loop_hook: config: no rules were found!  Do you need to run ‘sa-update’?

というのも続けて出ていたら、SpamAssassinをインストールしたのに更新
をしていないからとなりますので、sa-update を実行して更新すること。

★ポイント… mail.hogehoge.com にもMXを適用する場合

> mail IN A 210.197.75.225
> IN MX 10 relay.hogehoge.com.

DNS情報に上記のように、mail の下にもMXレコードを書かないといけないです。

★ポイント… ウィルスチェック用ソフトについて

で、肝心のウィルスチェック用ソフトについてですが、amavisd-new は
色々と対応していますが、まぁLinux用というと料金が高いです。

そんな中で、とりあえずWindows版の無料で有名なAVGを入れてみます。

> http://www.grisoft.com/

cd /usr/src/package
wget http://download.avg.com/filedir/inst/avg2012lms-r1795-a5274.i386.rpm
rpm -Uvh avg2012lms-r1795-a5274.i386.rpm

…あああ、x86_64だと動きません。トホホ。

32bit環境だと

> Installing ‘avgd’ service initscripts…
> Automatic installation of initscripts for your platform/distro is not supported.
> Please, in directory according to your plartform/distribution
> create symbolic link ‘avgd’ to initscript for AVG daemon
> /opt/avg/av/etc/init.d//avgd.all.
> Registering ‘avgd’ service to runlevels…
> Automatic registration of initscripts for your platform/distro is not supported.
> Please, register the ‘avgd’ service initscript for startup and runlevels.
> Registering with license: LASAG-JU292-22FON-AYPLS-YEYRJ-ZXTRE
> AVG command line controller
> Copyright (c) 2012 AVG Technologies CZ
>
> License was successfully changed.
> Operation successful.
> Please do configuration with /opt/avg/av/bin/avgsetup
> Generating unique user id
> Processing command line …
> Cfg file not specified using /opt/avg/av/cfg/diagcfg.xml.
> New installation ID succesffully generated.
> Starting AVG AV
> /var/tmp/rpm-tmp.lZPkUW: 行 71: /etc/init.d/avgd: そのようなファイルやディレクトリはありません
> 警告: %post(avg2012lms-r1795-a5274.i386) scriptlet failed, exit status 127

となるが、問題なく動く。

avgd
avgcfgctl
avgctl
avgdiag
avgdump
avgevtlog
avgscan
avgsetup
avgspmctl
avgupdate
avgvvctl

などを/opt/以下にインストールするが、シンボリックリンクの張り方を要確認。

cd /usr/src/
mkdir avg
avg/
rpm2cpio /usr/src/package/avg2012lms-r1795-a5274.i386.rpm | cpio -id

でみてみると、./opt/ 以外は全部シンボリックリンク。

etc/avg.conf -> /opt/avg/av/etc/avg.conf

usr/bin/avgcfgctl -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgctl -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgdiag -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgdump -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgevtlog -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgscan -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgsetup -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgspmctl -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgupdate -> /opt/avg/av/bin/avgwrapper.sh*
usr/bin/avgvvctl -> /opt/avg/av/bin/avgwrapper.sh*

usr/share/man/man1/avgavid.1.gz -> /opt/avg/av/man/man1/avgavid.1.gz
usr/share/man/man1/avgcfgctl.1.gz -> /opt/avg/av/man/man1/avgcfgctl.1.gz
usr/share/man/man1/avgctl.1.gz -> /opt/avg/av/man/man1/avgctl.1.gz
usr/share/man/man1/avgd.1.gz -> /opt/avg/av/man/man1/avgd.1.gz
usr/share/man/man1/avgdump.1.gz -> /opt/avg/av/man/man1/avgdump.1.gz
usr/share/man/man1/avgevtlog.1.gz -> /opt/avg/av/man/man1/avgevtlog.1.gz
usr/share/man/man1/avgoad.1.gz -> /opt/avg/av/man/man1/avgoad.1.gz
usr/share/man/man1/avgscan.1.gz -> /opt/avg/av/man/man1/avgscan.1.gz
usr/share/man/man1/avgscand.1.gz -> /opt/avg/av/man/man1/avgscand.1.gz
usr/share/man/man1/avgsched.1.gz -> /opt/avg/av/man/man1/avgsched.1.gz
usr/share/man/man1/avgspamd.1.gz -> /opt/avg/av/man/man1/avgspamd.1.gz
usr/share/man/man1/avgspmctl.1.gz -> /opt/avg/av/man/man1/avgspmctl.1.gz
usr/share/man/man1/avgtcpd.1.gz -> /opt/avg/av/man/man1/avgtcpd.1.gz
usr/share/man/man1/avgupd.1.gz -> /opt/avg/av/man/man1/avgupd.1.gz
usr/share/man/man1/avgupdate.1.gz -> /opt/avg/av/man/man1/avgupdate.1.gz
usr/share/man/man1/avgvvctl.1.gz -> /opt/avg/av/man/man1/avgvvctl.1.gz

これらはrpmのインストールで問題ないので、あとはメッセージにでてた

/opt/avg/av/etc/init.d/avgd.all

に /etc/init.d/avgd からシンボリックリンクを張って、

ln -s /opt/avg/av/etc/init.d/avgd.all /etc/init.d/avgd

ランレベルをきちんと設定すればOK

chkconfig –level 345 avgd on

ちなみにavgsetupでamavis向けを含めた各種設定が出来る。

avgsetup起動後、E-Mail→Amavisdの設定に行くと、

> Please enter the number of the port for AVG Server configuration (to use the default value 54322, press ‘Enter’):
> Do you want to enable AVG certification in e-mail body? (y/N):
> Do you want to enable AVG certification in e-mail headers: scan? (Y/n):
> Do you want to enable AVG certification in e-mail headers: spam? (Y/n):
>
> Please select a configuration mode:
>
> A) Auto – try to set up the system automatically.
> M) Manual – enter the path to a configuration file manually.
> B) Go to back
> E) Exit
> Please type [A|M|B|E]:

として、Aを選択するとamavisd.confに以下のように書いてくれる。

> # AVG AV settings
> [‘AVG Anti-Virus’,
> \&ask_daemon, [“SCAN {}\n”, ‘127.0.0.1:54322’],
> qr/^200 [oO][kK]/m, qr/^403/m, qr/^403 .*?: ([^\r\n]+)/m ],

すごいね!!

次にカスペルスキーを入れてみます。

> http://www.kaspersky.com/

rpm -Uvh kav4fs-8.0.2-160.i386.rpm

…ううう、これもx86_64だと動きません。トホホ。

32bit環境だと

> Starting kav4fs-supervisor [  OK  ]
> Kaspersky Anti-Virus for Linux File Server has been installed successfully,
> but it must be properly configured before using.
> Please run /opt/kaspersky/kav4fs/bin/kav4fs-setup.pl script manually to
> configure it.

として、インストールが完了するので、とりあえず指示通りに

/opt/kaspersky/kav4fs/bin/kav4fs-setup.pl

してみる。

すると、使用条件を読まされて承諾するかどうか聞かれるので

> Do you accept EULA? (yes/no)

yesとするとファイル名での使用言語が聞かれるので「ja_JP.utf8」とする。

> You need to specify a locale the Anti-Virus Service will use when applying
> the protection settings.
> It is very important to specify the locale you are using when working with
> the file system names (in most cases this should be the system default
ja_JP.utf8

続いてライセンスキーを書いたファイルの場所を聞かれるので、設定する。
ちなみにトライアルキーは「Trial Download link from Kaspersky Lab」と
いうタイトルのメールに添付されていた。

> The key file (a file with the .key extension) contains information about
> your license. You need to install it to use the application.
> To install it now, enter the path to your key file (or enter an empty
> string to continue without installing the key file):
/opt/kaspersky/kes4lwks/hogehoge.key

あとはPROXYサーバー経由か?とか、最新ファイルを落とすか?とか聞かれる
のでそれなりに答えればOK。ちなみにスケジュールUpdateするでYと答えると
30分ごとに確認しに行くらしい。カーネルモジュールはPATHに注意すること。

と、こんな感じですが、amavisd.confに宣言されているプログラムがないので
実際にどう使うかは不明。

もうひとつ、Avira(HBEDV)を入れてみます。

> http://www.avira.com/

tar xvzf ./package/antivir-server-prof.tar.gz
cd ./antivir-server-prof-3.1.3.5-2
(ライセンスキーファイルをコピー)
./install

とすると、インストールが始まります。

使用条件を読まされて承諾するかどうか聞かれるので

> Do you agree to the license terms? [n]

y、とするとインストールされます。

あとは適当にハイハイと答えていきますが、こちらは自動更新が毎日か二時間
ごとにするか聞かれるので好きな方を答えます。(デフォルトでは2時間ごと)
さらに一週間ごとにソフトそのもののUpdateを確認するようにします。
DazukoFSはいらないです。

他にもいけそうなのがありますが、皆さんはどれにします?

 

Name of author

Name: admin

One Reply to “□Postfix + amavisd-new でウィルススキャン【2012年VineLinux版】”

  • ちなみにCentOS版もありますので、お仕事のご依頼(?!)はお気軽に。笑

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA