mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

AMaViS - エラー(on Debian 8 Jessie)!

[ サーバ構築 ] [ Debian, Linux, Mail, Postfix, ウイルス対策 ]

こんばんは。

Debian GNU/Linux 8 Jessie で Postfix と AMaViS を連携してメールのウイルスチェックを行うようにしているのですが、メールログにエラーメッセージが出力されていたので、調査して対策を施しました。

0. 前提条件

1. 現象

メールログに以下のようなエラーメッセージが出力される。

/var/log/mail.log
1
2
3
4
5
6
Jun  1 10:57:36 noah amavis[28256]: (28256-04-7) (!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20150601T105343-28256-JUnFx0XC/parts: lstat() failed: Permission denied. ERROR\n"
Jun  1 10:57:36 noah amavis[28256]: (28256-04-7) (!)ClamAV-clamd av-scanner FAILED: CODE(0x29c09b0) unexpected , output="/var/lib/amavis/tmp/amavis-20150601T105343-28256-JUnFx0XC/parts: lstat() failed: Permission denied. ERROR\n" at (eval 96) line 905.
Jun  1 10:57:36 noah amavis[28256]: (28256-04-7) (!)WARN: all primary virus scanners failed, considering backups
Jun  1 10:57:36 noah amavis[28256]: (28256-04-7) (!)run_av (ClamAV-clamscan) FAILED - unexpected exit 2, output="WARNING: Ignoring unsupported option --recursive (-r)\nWARNING: Ignoring unsupported option --tempdir\n/var/lib/amavis/tmp/amavis-20150601T105343-28256-JUnFx0XC/parts: lstat() failed: Permission denied. ERROR"
Jun  1 10:57:36 noah amavis[28256]: (28256-04-7) (!)ClamAV-clamscan av-scanner FAILED: /usr/bin/clamdscan unexpected exit 2, output="WARNING: Ignoring unsupported option --recursive (-r)\nWARNING: Ignoring unsupported option --tempdir\n/var/lib/amavis/tmp/amavis-20150601T105343-28256-JUnFx0XC/parts: lstat() failed: Permission denied. ERROR" at (eval 96) line 905.
Jun  1 10:57:36 noah amavis[28256]: (28256-04-7) (!!)AV: ALL VIRUS SCANNERS FAILED

2. 原因

エラーメッセージに出ているとおり、権限がおかしい。

3. 対策

3-1 の方法はよくある方法だが、今回注目したかったのは 3-2 の方法。

3-1. ユーザ ID, グループ ID の確認

id コマンドで clamav, amavis のユーザ ID, グループ ID を確認する。

1
2
3
4
5
# id clamav
uid=108(clamav) gid=113(clamav) groups=113(clamav),123(amavis)

# id amavis
uid=115(amavis) gid=123(amavis) groups=123(amavis)

clamav ユーザが amavis グループに属していれば、それでよい。

clamav ユーザが amavis グループに属していなければ、以下のようにして amavis グループに追加する。(-a オプションは重要。このオプションを付け忘れると clamav ユーザが既に属していたグループから外れてしまう)

1
# usermod -a -G amavis clamav

clamav ユーザを amavis グループに追加した場合は、 clamav-daemon, amavis, postfix を再起動する。

1
2
3
# systemctl restart clamav-daemon
# systemctl restart amavis
# systemctl restart postfix

3-2. clamd.conf の編集

前項 3-1 の方法でもエラーが解消しない場合は、 ClamAV Daemon 設定ファイル “clamd.conf” の AllowSupplementaryGroups を確認してみる。

false になっていた場合は true(グループ権限も移譲)に変更する。

/etc/clamav/clamd.conf
1
AllowSupplementaryGroups true  # <= false を true に変更

そして、 clamav-daemon, amavis, postfix を再起動する。(起動順に注意すべき旨を紹介しているサイトもあるが、起動順が影響しているか否かは当方未確認)

1
2
3
# systemctl restart clamav-daemon
# systemctl restart amavis
# systemctl restart postfix

以上。

Comments