148 lines
3.6 KiB
Bash
Executable File
148 lines
3.6 KiB
Bash
Executable File
#! /bin/sh
|
|
#
|
|
# amavisd /etc/init.d/ initscript for amavisd-new
|
|
# $Id: amavisd-new.init 800 2006-01-31 00:07:45Z hmh $
|
|
#
|
|
# Copyright (c) 2003 by Brian May <bam@debian.org>
|
|
# and Henrique M. Holschuh <hmh@debian.org>
|
|
# Distributed under the GPL version 2
|
|
#
|
|
#
|
|
# How this thing works:
|
|
# ${START} must be only what is needed for start-stop-daemon, DO NOT
|
|
# ADD ANY PARAMETERS HERE! we might use it for --test, for example.
|
|
# ${STOP} works just like ${START}, --signal is used with it.
|
|
#
|
|
# ${PARAMS} are the parameters to give the daemon when really starting
|
|
# it.
|
|
### BEGIN INIT INFO
|
|
# Provides: amavisd-new
|
|
# Required-Start: $syslog $network $local_fs $remote_fs
|
|
# Required-Stop: $syslog $network $local_fs $remote_fs
|
|
# Should-Start:
|
|
# Should-Stop:
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: Starts amavisd-new mailfilter
|
|
# Description: Launches the amavisd-new mailfilter
|
|
### END INIT INFO
|
|
|
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
|
DAEMON=/usr/sbin/amavisd-new
|
|
DAEMON2=/usr/bin/perl
|
|
NAME=amavisd
|
|
DAEMONNAME=amavisd-new
|
|
DESC=amavisd
|
|
PIDFILE=/var/run/amavis/${NAME}.pid
|
|
|
|
. /lib/lsb/init-functions
|
|
|
|
test -f ${DAEMON} || exit 0
|
|
|
|
set -e
|
|
|
|
START="--start --quiet --pidfile $PIDFILE --startas ${DAEMON}"
|
|
STOP="--stop --quiet --pidfile $PIDFILE"
|
|
PARAMS=
|
|
|
|
check_noncompatible_upgrade() {
|
|
for i in /etc/amavisd.conf /etc/amavis/amavisd.conf ; do
|
|
if [ -e "${i}.disabled" ] ; then
|
|
echo "Found incompatible config file flag!" >&2
|
|
echo "Due to safety concerns, amavisd-new will not be started." >&2
|
|
echo "Refer to /usr/share/doc/amavisd-new/README.Debian for instructions." >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
createdir() {
|
|
# $1 = user
|
|
# $2 = group
|
|
# $3 = permissions (octal)
|
|
# $4 = path to directory
|
|
[ -d "$4" ] || mkdir -p "$4"
|
|
chown -c -h "$1:$2" "$4"
|
|
chmod -c "$3" "$4"
|
|
}
|
|
|
|
fixdirs() {
|
|
dir=$(dpkg-statoverride --list /var/run/amavis) || {
|
|
echo "You are missing a dpkg-statoverride on /var/run/amavis. Fix it, otherwise you risk silent breakage on upgrades." >&2
|
|
exit 1
|
|
}
|
|
[ -z "$dir" ] || createdir $dir
|
|
:
|
|
}
|
|
|
|
cleanup() {
|
|
[ -d /var/lib/amavis ] &&
|
|
find /var/lib/amavis -maxdepth 1 -name 'amavis-*' -type d \
|
|
-exec rm -rf "{}" \; >/dev/null 2>&1 || true
|
|
[ -d /var/lib/amavis/tmp ] &&
|
|
find /var/lib/amavis/tmp -maxdepth 1 -name 'amavis-*' -type d \
|
|
-exec rm -rf "{}" \; >/dev/null 2>&1 || true
|
|
:
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
echo -n "Starting $DESC: "
|
|
fixdirs
|
|
check_noncompatible_upgrade
|
|
export LC_ALL; LC_ALL=C
|
|
if start-stop-daemon ${START} -- ${PARAMS} start >/dev/null ; then
|
|
echo "amavisd-new."
|
|
else
|
|
if start-stop-daemon --test ${START} >/dev/null 2>&1; then
|
|
echo "(failed)."
|
|
exit 1
|
|
else
|
|
echo "(already running)."
|
|
exit 0
|
|
fi
|
|
fi
|
|
;;
|
|
stop)
|
|
echo -n "Stopping $DESC: "
|
|
if start-stop-daemon ${STOP} --retry 10 >/dev/null ; then
|
|
cleanup
|
|
echo "amavisd-new."
|
|
else
|
|
if start-stop-daemon --test ${START} >/dev/null 2>&1; then
|
|
echo "(not running)."
|
|
exit 0
|
|
else
|
|
echo "(failed)."
|
|
exit 1
|
|
fi
|
|
fi
|
|
;;
|
|
# reload)
|
|
# echo "Reloading $DESC configuration files."
|
|
# start-stop-daemon ${STOP} --signal 1
|
|
# ;;
|
|
restart|force-reload)
|
|
$0 stop
|
|
exec $0 start
|
|
;;
|
|
debug|debug-sa)
|
|
mode="$1"
|
|
echo "Trying to run amavisd-new in ${mode} mode..."
|
|
fixdirs
|
|
check_noncompatible_upgrade
|
|
exec ${DAEMON} ${PARAMS} "${mode}"
|
|
;;
|
|
status)
|
|
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
|
|
;;
|
|
*)
|
|
N=/etc/init.d/amavis
|
|
#echo "Usage: $N {start|stop|restart|reload|force-reload|debug}" >&2
|
|
echo "Usage: $N {start|stop|restart|force-reload|status|debug}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|