ClamAVのインストールは次を参照。
ウイルス対策ClamAVをインストールする(milter対応)
ウイルス対策ClamAVをインストールする(milter対応)メールフィルタプラグインlibmilterをインストールするVERSION_SENDMAIL="8.14.5"yum -y install m4/sbin/iptables -I OUTPUT -d ftp.sendmail.org ...
clamdを設定と起動スクリプトを作成する。
cp -a /usr/local/clamav/etc/clamd.conf /usr/local/clamav/etc/clamd.conf.orig
sed -i \
-e '/^Example$/s/^/#/' \
-e 's/^#LogFile \/tmp\/clamd.log$/LogFile \/var\/log\/clamav\/clamd.log/' \
-e 's/^#LogFileMaxSize 2M/LogFileMaxSize 0/' \
-e 's/^#LogTime yes$/LogTime yes/' \
-e 's/^#PidFile \/var\/run\/clamd.pid$/PidFile \/var\/run\/clamav\/clamd.pid/' \
-e '/^#DatabaseDirectory \/var\/lib\/clamav$/s/^#//' \
-e 's/^#LocalSocket \/tmp\/clamd.socket/LocalSocket \/var\/run\/clamav\/clamd.socket/' \
-e 's/^#User clamav$/User clamav/' \
/usr/local/clamav/etc/clamd.conf
cat << 'EOF' > /etc/rc.d/init.d/clamd
#!/bin/bash
#
# chkconfig: 2345 61 39
# description: clamd an anti-virus daemon.
# processname: clamd
# config: /usr/local/clamav/etc/clamd.conf
# pidfile: /var/run/clamav/clamd.pid
# Source function library.
. /etc/rc.d/init.d/functions
[ -f /usr/local/clamav/etc/clamd.conf ] || exit 1
CLAMD=/usr/local/clamav/sbin/clamd
PROG=clamd
PIDFILE=/var/run/clamav/clamd.pid
LOCKFILE=/var/lock/subsys/clamd
RETVAL=0
start(){
echo -n $"Starting ${PROG}:"
daemon ${CLAMD}
RETVAL=${?}
echo
[ ${RETVAL} = 0 ] && touch ${LOCKFILE}
return ${RETVAL}
}
stop(){
echo -n "Shutting down ${PROG}:"
killproc -p ${PIDFILE} -d 10 ${CLAMD}
RETVAL=${?}
echo
[ ${RETVAL} = 0 ] && rm -f ${LOCKFILE}
return ${RETVAL}
}
case "${1}" in
start)
start
;;
stop)
stop
;;
status)
status -p ${PIDFILE} ${CLAMD}
RETVAL=${?}
;;
restart|reload)
stop
start
;;
condrestart)
if [ -f ${PIDFILE} ] ; then
stop
start
fi
;;
*)
echo $"Usage: ${PROG} {start|stop|restart|condrestart|reload|status}"
exit 1
esac
exit ${RETVAL}
EOF
chmod +x /etc/rc.d/init.d/clamd
/sbin/service clamd start
/sbin/chkconfig clamd on
clamav-milterを設定して起動スクリプトを作成する。
cp -a /usr/local/clamav/etc/clamav-milter.conf /usr/local/clamav/etc/clamav-milter.conf.orig
sed -i \
-e '/^Example$/s/^/#/' \
-e 's/^#MilterSocket \/tmp\/clamav-milter.socket$/MilterSocket \/var\/run\/clamav\/clamav-milter.socket/' \
-e '/^#User clamav$/s/^#//' \
-e 's/^#PidFile \/var\/run\/clamav-milter.pid$/PidFile \/var\/run\/clamav\/clamav-milter.pid/' \
-e 's/^#ClamdSocket tcp:scanner.mydomain:7357$/ClamdSocket unix:\/var\/run\/clamav\/clamd.socket/' \
-e 's/^#LogFile \/tmp\/clamav-milter.log$/LogFile \/var\/log\/clamav\/clamav-milter.log/' \
-e 's/^#LogFileMaxSize 2M$/LogFileMaxSize 0/' \
-e '/^#LogTime yes$/s/^#//' \
-e '/^#LogInfected Basic$/s/^#//' \
/usr/local/clamav/etc/clamav-milter.conf
cat << 'EOF' > /etc/rc.d/init.d/clamav-milter
#!/bin/sh
#
# clamav-milter This script starts and stops the clamav-milter daemon
#
# chkconfig: 2345 79 40
#
# description: clamav-milter is a daemon which hooks into sendmail and routes \
# email messages for virus scanning with ClamAV
# processname: clamav-milter
# pidfile: /var/lock/subsys/clamav-milter
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Local clamav-milter config
CLAMAV_FLAGS=
test -f /etc/sysconfig/clamav-milter && . /etc/sysconfig/clamav-milter
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/local/clamav/sbin/clamav-milter ] || exit 0
PATH=$PATH:/usr/bin:/usr/local/clamav/sbin:/usr/local/clamav/bin
RETVAL=0
# Clamav-milter must have write access to the pid file, /var/run is not suitable
default_pidfile=
[ -d /var/run/clamav-milter ] && default_pidfile=/var/run/clamav-milter/clamav-milter.pid
[ -d /var/clamav ] && default_pidfile=/var/clamav/clamav-milter.pid
pidfile=${PIDFILE:-$default_pidfile}
lockfile=/var/lock/subsys/clamav-milter
start() {
echo -n "Starting clamav-milter: "
# Don't allow files larger than 25M to be created, to limit DoS
# Needs to be large enough to extract the signature files
ulimit -f 25600
if [ ! -z $pidfile ]; then
CLAMAV_PID=--pidfile=${pidfile}
PID=`pidofproc -p ${pidfile} clamav-milter`
else
CLAMAV_PID=
PID=`pidofproc clamav-milter`
fi
[ -n "$PID" ] && echo " already running!" && return 1
LANG= daemon clamav-milter $CLAMAV_PID ${CLAMAV_FLAGS}
chgrp postfix /var/run/clamav/clamav-milter.socket
chmod g+w /var/run/clamav/clamav-milter.socket
RETVAL=$?
[ ! -z $pidfile -a -f $pidfile ] && sed -i -e 's/-//' $pidfile
echo
test $RETVAL -eq 0 && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n "Shutting down clamav-milter: "
if [ ! -z $pidfile ]; then
killproc -p ${pidfile} clamav-milter
else
killproc clamav-milter
fi
RETVAL=$?
echo
test $RETVAL -eq 0 && rm -f ${lockfile} ${pidfile}
}
restart() {
stop
start
}
# See how we were called.
case "$1" in
start)
# Start daemon.
start
;;
stop)
# Stop daemon.
stop
;;
restart|reload)
restart
;;
condrestart)
test -f ${lockfile} && $0 restart || :
;;
status)
if [ ! -z $pidfile ]; then
status -p ${pidfile} clamav-milter
else
status clamav-milter
fi
;;
*)
echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
exit 1
esac
exit $?
EOF
chmod +x /etc/rc.d/init.d/clamav-milter
/sbin/service clamav-milter start
/sbin/chkconfig clamav-milter on