All pastes #199473 Raw Edit

Mine

public text v1 · immutable
#199473 ·published 2006-10-12 15:05 UTC
rendered paste body
#! /bin/sh --posix
#
# dbmail init script for debian
# 
# written by Paul J Stevens, 2004-2006
# 
#
### BEGIN INIT INFO
# Provides:          dbmail
# Required-Start:    $syslog $network
# Required-Stop:     $syslog $network
# Should-Start:      $local_fs $remote_fs
# Should-Stop:       $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbmail services
# Description:       Run network services provided by dbmail such as
#                    imap-server, pop3-server, lmtp-server, timsieve-server
### END INIT INFO


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

IMAPD=/usr/sbin/dbmail-imapd
POP3D=/usr/sbin/dbmail-pop3d
LMTPD=/usr/sbin/dbmail-lmtpd
SIEVE=/usr/sbin/dbmail-timsieved

IMAPD_NAME=dbmail-imapd
POP3D_NAME=dbmail-pop3d
LMTPD_NAME=dbmail-lmtpd
SIEVE_NAME=dbmail-timsieved

NAME="dbmail"

PID_DIR="/var/run/$NAME/"

DESC="dbmail servers"

test -x $IMAPD || exit 0
test -x $POP3D || exit 0
test -x $LMTPD || exit 0

set -e

. /lib/lsb/init-functions

[ -e /etc/default/dbmail ] && . /etc/default/dbmail

ssl_wrapper() {
	# this needs more work. Use stunnel at your own risk,
	# or wait for native support for ssl in dbmail-2  :-(
	# note: stunnel4 in inetd mode will scale better.
	cd /etc/ssl/certs || return 0
	[ -e "$PEMFILE" ] || return 0
	[ -x /usr/sbin/stunnel ] || return 0
	# assuming stunnel runs on the same host as dbmail, even though
	# it aint necessarily so.
	STUNNLOPT="-D 7 -p $PEMFILE -S 0 -a /etc/ssl/certs -t 300 -s dbmail -g dbmail -P $PID_DIR"
	log_progress_msg "SSL wrapper"
	 
	case "$1" in 
		start)
		[ "$START_IMAPD" ] && \
			/usr/sbin/stunnel $STUNNLOPT -r localhost:imap -d imaps 
		[ "$START_POP3D" ] && \
			/usr/sbin/stunnel $STUNNLOPT -r localhost:pop3 -d pop3s
		;;
		
		stop)
		if [ "$START_IMAPD" ]; then
			pidfile="$PID_DIR/stunnel.localhost.imap.pid"
			if [ -f "$pidfile" ]; then
				kill `cat $pidfile` >/dev/null 2>&1 || true
			fi
		fi
		if [ "$START_POP3D" ]; then
			pidfile="$PID_DIR/stunnel.localhost.pop3.pid"
			if [ -f "$pidfile" ]; then
				kill `cat $pidfile` >/dev/null 2>&1 || true
			fi
		fi
		;;
	esac	
	return 0
}	

service_start() {
	eval '_daemon=$'$1
	eval '_name=$'$1'_NAME'
	[ -e $_daemon ] || return 0
	
	log_progress_msg "$_name"
	start-stop-daemon --start --exec $_daemon
	
	r=$?
	if [ $r -gt 0 ]; then
		log_failure_msg "failed"
		return $r
	fi
	
	return 0
	
}


service_stop() {
	eval '_daemon=$'$1
	eval '_name=$'$1'_NAME'
	
	log_progress_msg "$_name"
	start-stop-daemon --stop --retry 10 \
		--pidfile ${PID_DIR}/${_name}.pid >/dev/null 2>&1 || true

	pids=`pidof ${_name}`
	if [ -n  "$pids" ]; then
	echo "=[$pids]="
		log_failure_msg "failed"
		return 1
	fi
	
	return 0
	
}
	
service_reload() {
	eval '_daemon=$'$1
	eval '_name=$'$1'_NAME'
	
	log_progress_msg "$_name"
	start-stop-daemon --stop --signal HUP --quiet \
		--pidfile ${PID_DIR}/${_name}.pid --name ${_name}
	
	r=$?
	if [ $r -gt 0 ]; then
		log_failure_msg "failed"
		return $r
	fi
	
	return 0
	
}

case "$1" in
  start)
	log_daemon_msg "Starting $DESC"
	gr=0
	if [ "$START_IMAPD" ]; then service_start "IMAPD" || let gr=$gr+$?; fi
	if [ "$START_POP3D" ]; then service_start "POP3D" || let gr=$gr+$?; fi
	if [ "$START_LMTPD" ]; then service_start "LMTPD" || let gr=$gr+$?; fi
	if [ "$START_SIEVE" ]; then service_start "SIEVE" || let gr=$gr+$?; fi
	if [ "$START_SSL" ]; then ssl_wrapper start || let gr=$gr+$?; fi
 	log_end_msg $r
	;;
	
  stop)
	log_daemon_msg "Stopping $DESC"
	gr=0
	if [ "$START_SSL" ]; then ssl_wrapper stop || let gr=$gr+$?; fi
	if [ "$START_IMAPD" ]; then service_stop "IMAPD" || let gr=$gr+$?; fi
	if [ "$START_POP3D" ]; then service_stop "POP3D" || let gr=$gr+$?; fi
	if [ "$START_LMTPD" ]; then service_stop "LMTPD" || let gr=$gr+$?; fi
	if [ "$START_SIEVE" ]; then service_stop "SIEVE" || let gr=$gr+$?; fi
	log_end_msg $gr
	;;
	
  reload)
  	log_daemon_msg "Reloading $DESC"
	if [ "$START_IMAPD" ]; then service_reload "IMAPD" || let r=$r+$?; fi
	if [ "$START_POP3D" ]; then service_reload "POP3D" || let r=$r+$?; fi
	if [ "$START_LMTPD" ]; then service_reload "LMTPD" || let r=$r+$?; fi
	if [ "$START_SIEVE" ]; then service_reload "SIEVE" || let r=$r+$?; fi
	log_end_msg $r
	;;
	
  restart|force-reload)
	$0 stop || true
	$0 start
	;;
  *)
	N="$NAME"
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	exit 1
	;;
esac

exit 0