メールのトラブルもあり、久々にmail.logをゆっくり眺めていると少しエラーが出ていることに気がついた。
Mar 29 12:16:24 amavis[1069]: (01069-10) (!!) ask_av (ClamAV-clamd) FAILED - unexpected result: /var/amavis/tmp/amavis-20080329T115521-01069/parts: lstat() failed. ERRORn
Mar 29 12:16:24 amavis[1069]: (01069-10) (!!) WARN: all primary virus scanners failed, considering backups

どうも、amavisd がvscanで、clamdがclamav のユーザーで動いているのが悪いらしい。ということで、試しに /etc/group に

clamav:*:106:vscan
vscan:*:110:clamav

としてみました。
それでも治らないので clamd と amavisd のユーザーとグループを統一してみることにしました。
ちなみに、clamd.conf とamavisd.conf にはユーザーの設定があるのでれを修正すると治るお思いますが、各ディレクトリの関係もあるので、再インストールすることとしました。
まず、ports/clamav/Makefile を以下のように修正します。

CLAMAVUSER?= vscan
CLAMAVGROUP?= vscan

make deinstall
make clean
make reinstall

で完了です。
それでも、freshclamは clamavで動いているようなので、よくfreshclam.confを見てみると、DatabaseOwner vscan と直したら vscan ユーザーで動いてくれました。
ついでに、以下を追加です。

AllowSupplementaryGroups yes
LogVerbose yes
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose yes
LogSyslog yes

これでログが取れるようになりました。
プロセスユーザーを見ると

#ps axj | grep ~
vscan 45209 1 45209 45209 0 Is 0:06.43 /usr/local/sbin/clamd
vscan 24451 1 24451 24451 0 Ss 0:00.18 amavisd (master) (per
vscan 25862 24451 24451 24451 0 I 0:01.43 amavisd (ch16-avail)
vscan 51863 1 51863 51863 0 Is 0:00.00 /usr/local/bin/freshc

でユーザーがそろいました。各ディレクトリのユーザーとグループがvscanになっているか確認しましょう。特に、pid ファイルは忘れがちです。

[svr-mack]::ll /var/run/clamav
total 4
srwxrwxrwx 1 vscan vscan 0 Mar 29 19:40 clamd
-rw-rw---- 1 vscan vscan 5 Mar 29 19:40 clamd.pid
-rw-rw---- 1 vscan vscan 5 Mar 29 20:00 freshclam.pid