Amavisd-new/SpamAssassin(ver.3.3.1)への更新作業
May 27, 2010 – 3:30 pmメールサーバーのウィルス/スパム対策に使っているAmavisd-newとSpamAssassinをアップグレードした。今回の更新は、SpamAssassinのメジャーアップデート(ver.3.3.1)を反映させるためにおこなったものだ。この更新作業のなかで、今年初めから見られていた障害(正規のメールをスパムとして誤判定)の原因を明らかにすることができた。一連の作業をメモしておいた。
アップグレードのいきさつ: 今年の初めころから、我がメールサーバーにちょっとした「異変」が起きていた。明らかに正規のメールがスパムと判定される例が増えたのだ。このメールサーバーの主な使途が、毎日のlogwatch出力であったこともあり、なんら措置することなく半年近くも放置したままになっていた。
このまま、この「異変」を放置するのは良くないと、原因を調べてみると、この「異変」、SpamAssassinのバグによるものであった。発信日が2010年以降のメールに対し、スパム判定用のスコアを高く与えていた。それにより、今年はじめからスパム判定をされたメールが増えたことが理解される。SpamAssassinの『2010年問題』ともいったものだった。
このバグを回避するのに、対応するルールを無効にしてしまおうかとも考えたが、いろいろ調べているうちに、今年はじめに、新しいバージョンのSpamAssassin(ver. 3.3.0)がリリースされているのを知った。今回の更新、2年7ヶ月ぶりのメジャーアップデートで、スパム判定に用いるルールとSpamAssassin本体との分離が大きな変更点。
最新版のSpamAssassinから、スパム判定用のルールは、sa-updateというコマンドを用いれば、「自動的に」最新のルールが適用可能になるという。これを導入すれば、今回の「異変」にもきちんと対応することができるはずだ。
ということで、我がメールサーバーも、この最新版(vers.3.3.1)を導入することにし、これをインストールすることにした。
Amavisd-new/SpamAssassinのダウンロードとインストール: いつものyum updateで簡単にアップグレードできると考えていたが、結構、手の混んだ作業になってしまった。
当初、SpamAssassinのみをアップデートしたところ、このSpamAssasinをchild processとして呼ぶAmavis-newとのバージョン不適合と思われる問題が発生した。止むを得ず、まず、Amavis-newとSpamAssassinのふたつのツールをremoveし、改めてダウンロード・インストール作業を行った。
以前書いたAmavisd-newをインストールした際の記録(「ClamAv+Amavisd-newでメールサーバにウィルス対策」)を参考にこのふたつのパッケージのインストール作業を進めた。作業のポイントは、Amavisd-newをインストールすると、「自動的」に(Installed for Dependencyというかたちで)SpamAssassinも自動的にインストールされるということ、そしてAmavisd-newの設定ファイル(amavisd.conf)を慎重に行うことといったところだろう。
Amavisd-newをyum インストールした際のログを示す。
# yum install amavisd-new* Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: ftp.nara.wide.ad.jp * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp dag | 1.1 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package amavisd-new.i386 0:2.6.4-2.el5.rf set to be updated --> Processing Dependency: perl(Mail::SpamAssassin) for package: amavisd-new ---> Package amavisd-new-milter.i386 0:2.6.4-2.el5.rf set to be updated --> Running transaction check ---> Package spamassassin.i386 0:3.3.1-3.el5.rf set to be updated --> Finished Dependency Resolution Dependencies Resolved ===================================================================================== Package Arch Version Repository Size ===================================================================================== Installing: amavisd-new i386 2.6.4-2.el5.rf dag 851 k amavisd-new-milter i386 2.6.4-2.el5.rf dag 39 k Installing for dependencies: spamassassin i386 3.3.1-3.el5.rf dag 1.0 M Transaction Summary ===================================================================================== Install 3 Package(s) Upgrade 0 Package(s) Total download size: 1.9 M Is this ok [y/N]: y Downloading Packages: (1/3): amavisd-new-milter-2.6.4-2.el5.rf.i386.rpm | 39 kB 00:00 (2/3): amavisd-new-2.6.4 (38%) 83% [============- ] 0.0 B/s | 712 kB --:-- ETA (2/3): amavisd-new-2.6.4-2.el5.rf.i386.rpm | 851 kB 00:00 (3/3): spamassassin-3.3. (88%) 78% [===========- ] 0.0 B/s | 832 kB --:-- ETA (3/3): spamassassin-3.3.1-3.el5.rf.i386.rpm | 1.0 MB 00:00 ------------------------------------------------------------------------------------- Total 942 kB/s | 1.9 MB 00:02 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : spamassassin 1/3 Installing : amavisd-new 2/3 Installing : amavisd-new-milter 3/3 Installed: amavisd-new.i386 0:2.6.4-2.el5.rf amavisd-new-milter.i386 0:2.6.4-2.el5.rf Dependency Installed: spamassassin.i386 0:3.3.1-3.el5.rf Complete!
Amavisd-newの設定: /etc配下に置かれている設定ファイルamavisd.confを以下のように設定した:
<amavisd.conf 設定>
# $mydomain = 'example.com'; # a convenient default for other settings # (サーバーのdomain name) $mydomain = 'dns-name.tld'; # $myhostname = 'host.example.com'; # must be a fully-qualified domain name! # (サーバーのfully-qualifiedなdomain name) $myhostname = 'host_name.dns_name.tld'; #$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level # (spamテスト情報を全メールに示すため、以下に変更) $sa_tag_level_deflt = undef; $sa_tag2_level_deflt = 6.2; # add 'spam detected' headers at that level $sa_kill_level_deflt = 6.9; # triggers spam evasive actions (e.g. blocks mail) $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent $sa_crediblefrom_dsn_cutoff_level = 18; # likewise, but for a likely valid From # $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off $penpals_bonus_score = 8; # (no effect without a @storage_sql_dsn database) $penpals_threshold_high = $sa_kill_level_deflt; # don't waste time on hi spam $bounce_killer_score = 100; # spam score points to add for joe-jobbed bounces # (ウィルス判定,スパム判定したメールの処理法) # $final_virus_destiny = D_DISCARD; $final_virus_destiny = D_PASS; # $final_banned_destiny = D_BOUNCE; # $final_spam_destiny = D_BOUNCE; $final_spam_destiny = D_PASS; $final_bad_header_destiny = D_PASS; # $bad_header_quarantine_method = undef; # ### 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 ], # (以下の4行付加) ['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], qr/\bOK$/m, qr/\bFOUND$/m, qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
上記設定により、SpamAssassinによるスパム判定プロセスが全メールに対して付加される。また、判定用のスコアが6.2を超えたものをスパムとして判定する。
sa-updateを動作させないと・・?!: 上記したAmavis-newの設定作業を終了したところでamavisdのサービスを上げると、以前の版では、メールサーバーが正常に動作していた。ところが、今回の最新版では、不思議なことに、amavisdが立ち上がらない。miallog(/var/log/maillog)を調べてみると、次のようなログメッセージが出力されている:
amavis[3250]: Using primary internal av scanner code for ClamAV-clamscan amavis[3250]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan amavis[3250]: Creating db in /var/amavis/db/; BerkeleyDB 0.36, libdb 4.3 amavis[3250]: (!!)TROUBLE in pre_loop_hook: config: no rules were found! Do you need to run 'sa-update'? amavis[3250]: (!)_DIE: Suicide () TROUBLE in pre_loop_hook: config: no rules were found! Do you need to run 'sa-update'?
また単独でSpamAssasin(spamd)を上げようとすると、
#service spamassassin restart Stopping spamd: [失敗] Starting spamd: child process exited or timed out without signaling production of a PID file at /usr/bin/spamd line 2504
なるメッセージが現れる。
これらのログメッセージから、どうもスパム判定用のルールがパッケージをインストールしただけでは整えられていないことに問題があると考えた。
では、ということで、今回の版から導入された「ルール」更新用のコマンドsa-updateをまず実行し、その後、amavisdを上げることにした。
予想どおり、amavisdが正常にあがり、なんとかインストール作業を終えることができた。分かってしまえば、なんのことはない。てこずってしまった。
因みに、「ルール」用のデータベースは、私のシステム構成(CentOS) では、
/var/lib/spamassassin/3.003001/updates_spamassassin_org
のディレクトリに置かれている。
以上のアップグレード作業の後、テストメールによる動作確認を行い、想定どおりの結果を得ることができた。ただ、今後、ルールの更新頻度、その適用などについて検討する必要があるものとおもう。
関連ポスト:
- 関連するPostはありません