#!/bin/sh # # amavisd-milter /etc/init.d/ initscript for amavisd-milter # Derived from /etc/init.d/amavisd-new-milter by # Brian May and # Henrique M. Holschuh # Ideas from /etc/init.d/rsyslog by Michael Biebl # # and /etc/init.d/ssh # Copyright (c) 2009 by Harald Jenny # # Distributed under the GPL version 2 # ### BEGIN INIT INFO # Provides: amavisd-milter # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starts the amavisd-milter daemon # Description: milter daemon for sendmail/postfix and amavisd-new ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/amavisd-milter NAME=amavisd-milter DESC="amavisd-milter Daemon" OPTIONS="" # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r "/etc/default/$NAME" ] && . "/etc/default/$NAME" [ -n "$SYSTEMUSER" ] || SYSTEMUSER=amavis if [ -z "$PIDFILE" ]; then PIDFILE="/var/run/amavis/$NAME.pid" else OPTIONS="$OPTIONS -p $PIDFILE" fi PIDDIR="$(dirname "$PIDFILE")" if [ ! -e "$PIDDIR" ]; then mkdir "$PIDDIR" chown "$SYSTEMUSER":"$(id "$SYSTEMUSER" -g -n)" "$PIDDIR" fi if [ -z "$MILTERSOCKET" ]; then MILTERSOCKETTYPE=pipe else OPTIONS="$OPTIONS -s $MILTERSOCKET" if [ "$(echo $MILTERSOCKET | grep ^inet)" ]; then MILTERSOCKETTYPE=tcp else MILTERSOCKETTYPE=pipe MILTERDIR="$(dirname "$MILTERSOCKET")" if [ ! -e "$MILTERDIR" ]; then mkdir "$MILTERDIR" chown "$SYSTEMUSER" "$MILTERDIR" fi fi fi [ -z "$AMAVISSOCKET" ] || OPTIONS="$OPTIONS -S $AMAVISSOCKET" [ -z "$WORKINGDIR" ] || OPTIONS="$OPTIONS -w $WORKINGDIR" [ -z "$EXTRAPARAMS" ] || OPTIONS="$OPTIONS $EXTRAPARAMS" START="--start --quiet --chuid $SYSTEMUSER --pidfile $PIDFILE --startas $DAEMON --name $NAME -- $OPTIONS" STOP="--stop --quiet --retry 10 --pidfile $PIDFILE --startas $DAEMON --name $NAME" # Define LSB functions. . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting $DESC:" "$NAME" start-stop-daemon $START case "$?" in 0) if [ "$MILTERSOCKETTYPE" = "pipe" ]; then # Wait for up to 5 seconds for unix socket to be created for i in 1 2 3 4 5; do if [ -S "$MILTERSOCKET" ]; then break fi sleep 1 done # Set ownership and permissions on unix socket as appropriate if [ -S "$MILTERSOCKET" ]; then if [ "$MILTERSOCKETOWNER" ]; then chown "$MILTERSOCKETOWNER" "$MILTERSOCKET" fi if [ "$MILTERSOCKETMODE" ]; then chmod "$MILTERSOCKETMODE" "$MILTERSOCKET" fi else log_warning_msg "timed out waiting for pipe to be created" fi fi log_end_msg 0 ;; 1) log_progress_msg "already started" log_end_msg 0 ;; *) log_end_msg $? ;; esac ;; stop) log_daemon_msg "Stopping $DESC:" "$NAME" start-stop-daemon $STOP case "$?" in 0) log_end_msg 0 ;; 1) log_progress_msg "already stopped" log_end_msg 0 ;; *) log_end_msg $? ;; esac ;; restart|force-reload) $0 stop $0 start ;; status) status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? ;; *) log_failure_msg "Usage: $0 {start|stop|restart|force-reload|status}" exit 1 ;; esac exit 0