■環境:clamav+postfix+amavis+spamassassin
squeezeのclamavとpostfix連携(amavis)
http://d.hatena.ne.jp/labunix/20120430
spamassassinでヘッダ情報に「X-Spam」を追加する
http://d.hatena.ne.jp/labunix/20120501
■以下のようなエラーが出る。
May 11 22:27:10 squeeze amavis[12075]: (12075-13) (!)run_av (ClamAV-clamd) FAILED - unexpected ,
output="/var/lib/amavis/tmp/amavis-20120509T062532-12075/parts: lstat() failed: Permission denied. ERROR\n"
■clamavはamavisのグループに所属している。
$ id clamav
uid=111(clamav) gid=116(clamav) 所属グループ=116(clamav),127(amavis)
■パーミッションは以下の通り
$ su root -c 'ls -l /var/lib/amavis/tmp/*'
合計 8
-rw-r----- 1 amavis amavis 345 2012-05-11 23:02 email.txt
drwxr-x--- 2 amavis amavis 4096 2012-05-11 23:02 parts
■当然だが、rootユーザでclamac-daemonを実行すると、このエラーは出ない。
$ grep User /etc/clamav/clamd.conf
User root
$ sudo /etc/init.d/clamav-daemon restart
■rootグループに所属させればエラーは出ない。
$ sudo adduser clamav root
$ id clamav
uid=111(clamav) gid=116(clamav) 所属グループ=116(clamav),0(root),127(amavis)
$ sudo /etc/init.d/clamav-daemon restart
$ sudo /etc/init.d/clamav-freshclam restart
$ sudo /etc/init.d/amavis restart
$ sudo /etc/init.d/spamassassin restart
Restarting SpamAssassin Mail Filter Daemon:
spamd.
$ sudo sa-update -D 2>&1 | tee -a sa-update.log && echo "ok"
...
5月 11 23:42:15.093 [5363] dbg: diag: updates complete, exiting with code 0
ok
■rootグループを止めて、daemonグループに追加。
これでもエラーは出ない。initスクリプトの名前も「clamav-daemon」なので、
これで様子見。
$ sudo deluser clamav root
ユーザ 'clamav' をグループ 'root' から削除しています...
完了。
$ id daemon
uid=1(daemon) gid=1(daemon) 所属グループ=1(daemon)
$ sudo adduser clamav daemon
ユーザ 'clamav' をグループ 'daemon' に追加しています...
ユーザ clamav をグループ daemon に追加
完了。
■もう少し、テストメールで確認。
以下のようにヘッダも正常。
X-Virus-Scanned: Debian amavisd-new at squeeze.example.jp
Received: from squeeze.example.jp ([127.0.0.1])
by localhost (squeeze.example.jp [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id Pwq6RZ1F0LKW for <labunix@squeeze.example.jp>;
Fri, 11 May 2012 23:37:30 +0900 (JST)
Received: by squeeze.example.jp (Postfix, from userid 1000)
id 3588EF6828; Fri, 11 May 2012 23:37:30 +0900 (JST)
■clamavよりも上であれば、daemonよりも権限をもう少し下げてもよいかも知れない。
$ grep "postfix\|amavis\|clamav" /etc/group
daemon:x:1:clamav
clamav:x:116:
postfix:x:125:
amavis:x:127:clamav