wiki:LinuxDebianClamAVTooOld

ClamAVが止まってしまう

Debianはもうダメだな。

現象

先週辺りから急に、メールサーバがSMTPを受け付けなくなる病気が頻発。「432 Mail filters temporarily unavailable.」だって。 調べると、メールサーバのcourierのメールフィルタ機能がエラーで動いていない。 うちは、送受信するメールに対して ClamAVによるウィルスチェックを実施しています。 ClamAVがおかしいらしい。

調査

おや?「clamd」が止まってるじゃん。

% sudo /etc/init.d/clamav-daemon start

ところが、しばらくするとやっぱりclamdがいなくなります(5~30分くらい)。 エラーで自ら停止してるみたい。 「/var/log/clamav/clamav.log」を見ると、

ERROR: reload db failed: Unable to lock database directory

だって。 ロックファイル「/var/lib/clamav/.dbLock」がおかしくなってるのかな。 ロックファイルを削除してからやりなおしてみる。 やっぱり同じ。しばらくするといなくなる。

ロックファイルは、「freshclam」が作っている。 ログファイル「/var/log/clamav/freshclam.log」を見ると、こんなエラー。

Retrieving http://db.local.clamav.net/daily-6871.cdiff
Ignoring mirror 218.44.253.75 (too often connections with outdated version)
Ignoring mirror 219.106.242.51 (too often connections with outdated version)
Ignoring mirror 219.117.246.122 (too often connections with outdated version)
Ignoring mirror 61.206.123.121 (too often connections with outdated version)
Ignoring mirror 203.178.137.175 (too often connections with outdated version)
Ignoring mirror 203.212.42.128 (too often connections with outdated version)
Trying host db.local.clamav.net (211.10.155.48)...

これをずっと繰り返している。 どうやら、ロックファイルをロックしたままリトライを続けてしまうせいで、clamdがロックできるスキが無くなってしまったようです。 ロックしたままリトライする実装もひどいなと思う。

too often connections with outdated version」で検索してみる。  ああ、これね。

ClamAV 0.9xから、ClamAVエンジンのファンクションレベルとCVDファイルの要求するファンクションレベルが3以上違う場合、freshclamは一日6回以上の更新チェックを拒絶するようになりました。

そういうことね。やれやれ。 Debianの、バージョンアップへの追従が遅いのが原因。  Debianパッケージは、バージョン0.90.1だって。 ClamAV自体の現在のリリースは、0.93です。

対処

ウィルス定義データの更新を、1日24回だったのを5回に減らします。 本質的には解決ではないですが、とりあえず機能してくれるように成ります。

/etc/clamav/freshclam.conf」のうち、1行だけ変更。

変更前
Checks 24
変更後
Checks 5

あとは、「/var/lib/clamav」の中身を消してから、freshclamclamdを再起動する。 消してからじゃないと、うまくいかなかったです。

# rm -rf /var/lib/clamav/*
# /etc/init.d/clamav-freshclam restart
# /etc/init.d/clamav-daemon restart

考察

こういう問題が起きてるし、 Debianにバグ報告されているにもかかわらず、もう1ヶ月近くも放置されてるのは、ちょっとね。 困りました。 Debianの運営は、もう、ちょっとまずいところまで行ってしまってるのかもしれません。 まあ、Debianをタダで使わせてもらってるばかりのユーザとしては、文句言うのも失礼かとは思います。ごめんなさい。

その後

よくよく調べると、Debianパッケージの最新版「0.90.1dfsg-3etch11」では、上記の対処と同じく「Checks 5」に成っていますね。 僕のマシンにも同じ最新版が入っていたのですが、どういうわけか設定ファイルは古いままになっていました。 これが問題の元凶のようです。「.dpkg-new」も見あたらないし。

(2008/4/22 - sgk)