1#!/bin/sh 2# 3# Author: Simon Horman <horms@verge.net.au> 4# 5# 2011-05-25 updated with current /etc/init.d/skeleon by Steven Kurylo <steven.kurylo@aviawest.com> 6# 7### BEGIN INIT INFO 8# Provides: perdition 9# Required-Start: $remote_fs 10# Should-Start: $syslog $named 11# Required-Stop: $remote_fs 12# Should-Stop: $syslog $named 13# Default-Start: 2 3 4 5 14# Default-Stop: 0 1 6 15# Short-Description: POP, IMAP and managesieve proxy 16# Description: Starts perdition to allow proxied POP, IMAP and managesieve access 17### END INIT INFO 18 19PATH=/usr/sbin:/bin:/usr/bin:/sbin:/usr/sbin 20NAME=perdition 21DAEMON=/usr/local/sbin/perdition 22 23# Exit if the package is not installed 24[ -x "$DAEMON" ] || exit 0 25 26# Read configuration variable file if it is present 27[ -r /etc/default/$NAME ] && . /etc/default/$NAME 28 29# Load the VERBOSE setting and other rcS variables 30. /lib/init/vars.sh 31 32# Define LSB log_* functions. 33# Depend on lsb-base (>= 3.2-14) to ensure that this file is present 34# and status_of_proc is working. 35. /lib/lsb/init-functions 36 37# Please do not edit the values below. 38# Rather, please edit /etc/default/perdition 39RUN_PERDITION="${RUN_PERDITION:=no}" 40FLAGS="${FLAGS:=}" 41POP3="${POP3:=yes}" 42POP3_FLAGS="${POP3_FLAGS:=}" 43POP3S="${POP3S:=yes}" 44POP3S_FLAGS="${POP3S_FLAGS:=}" 45IMAP4="${IMAP4:=yes}" 46IMAP4_FLAGS="${IMAP4_FLAGS:=}" 47IMAP4S="${IMAP4S:=yes}" 48IMAP4S_FLAGS="${IMAP4S_FLAGS:=}" 49MANAGESIEVE="${MANAGESIEVE:=yes}" 50MANAGESIEVE_FLAGS="${MANAGESIEVE_FLAGS:=}" 51 52if [ "$RUN_PERDITION" != "yes" ]; then 53 exit 0 54fi 55 56do_start() 57{ 58 # Return 59 # 0 if daemon has been started 60 # 1 if daemon was already running 61 # 2 if daemon could not be started 62 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ 63 || return 1 64 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ 65 $DAEMON_ARGS \ 66 || return 2 67} 68 69do_stop() { 70 # Return 71 # 0 if daemon has been stopped 72 # 1 if daemon was already stopped 73 # 2 if daemon could not be stopped 74 # other if a failure occurred 75 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON 76 #RETVAL="$?" 77 #[ "$RETVAL" = 2 ] && return 2 78 #rm -f $PIDFILE 79 #return "$RETVAL" 80 return $? 81 82} 83 84do_reload() { 85 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --exec $DAEMON 86 return 0 87} 88 89case "$1" in 90 start) 91 if [ "$POP3" = "yes" ]; then 92 PIDFILE=/var/run/perdition.pop3/perdition.pop3.pid 93 DAEMON=/usr/local/sbin/perdition.pop3 94 DAEMON_ARGS="$FLAGS $POP3_FLAGS" 95 [ "$VERBOSE" != no ] && log_daemon_msg "Starting Perdition POP3 server" 96 do_start 97 case "$?" in 98 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 99 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 100 esac 101 fi 102 if [ "$POP3S" = "yes" ]; then 103 PIDFILE=/var/run/perdition.pop3s/perdition.pop3s.pid 104 DAEMON=/usr/local/sbin/perdition.pop3s 105 DAEMON_ARGS="$FLAGS $POP3S_FLAGS" 106 [ "$VERBOSE" != no ] && log_daemon_msg "Starting Perdition POP3S server" 107 do_start 108 case "$?" in 109 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 110 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 111 esac 112 fi 113 if [ "$IMAP4" = "yes" ]; then 114 PIDFILE=/var/run/perdition.imap4/perdition.imap4.pid 115 DAEMON=/usr/local/sbin/perdition.imap4 116 DAEMON_ARGS="$FLAGS $IMAP4_FLAGS" 117 [ "$VERBOSE" != no ] && log_daemon_msg "Starting Perdition IMAP4 server" 118 do_start 119 case "$?" in 120 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 121 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 122 esac 123 fi 124 if [ "$IMAP4S" = "yes" ]; then 125 PIDFILE=/var/run/perdition.imaps/perdition.imaps.pid 126 DAEMON=/usr/local/sbin/perdition.imaps 127 DAEMON_ARGS="$FLAGS $IMAP4S_FLAGS" 128 [ "$VERBOSE" != no ] && log_daemon_msg "Starting Perdition IMAP4S server" 129 do_start 130 case "$?" in 131 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 132 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 133 esac 134 fi 135 if [ "$MANAGESIEVE" = "yes" ]; then 136 PIDFILE=/var/run/perdition.managesieve/perdition.managesieve.pid 137 DAEMON=/usr/local/sbin/perdition.managesieve 138 DAEMON_ARGS="$FLAGS $MANAGESIEVE_FLAGS" 139 [ "$VERBOSE" != no ] && log_daemon_msg "Starting Perdition manage sieve server" 140 do_start 141 case "$?" in 142 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 143 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 144 esac 145 fi 146 ;; 147 stop) 148 if [ "$POP3" = "yes" ]; then 149 PIDFILE=/var/run/perdition.pop3/perdition.pop3.pid 150 DAEMON=/usr/local/sbin/perdition.pop3 151 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping Perdition POP3 server" 152 do_stop 153 case "$?" in 154 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 155 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 156 esac 157 fi 158 if [ "$POP3S" = "yes" ]; then 159 PIDFILE=/var/run/perdition.pop3s/perdition.pop3s.pid 160 DAEMON=/usr/local/sbin/perdition.pop3s 161 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping Perdition POP3S server" 162 do_stop 163 case "$?" in 164 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 165 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 166 esac 167 fi 168 if [ "$IMAP4" = "yes" ]; then 169 PIDFILE=/var/run/perdition.imap4/perdition.imap4.pid 170 DAEMON=/usr/local/sbin/perdition.imap4 171 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping Perdition IMAP4 server" 172 do_stop 173 case "$?" in 174 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 175 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 176 esac 177 fi 178 if [ "$IMAP4S" = "yes" ]; then 179 PIDFILE=/var/run/perdition.imaps/perdition.imaps.pid 180 DAEMON=/usr/local/sbin/perdition.imaps 181 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping Perdition IMAP4S server" 182 do_stop 183 case "$?" in 184 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 185 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 186 esac 187 fi 188 if [ "$MANAGESIEVE" = "yes" ]; then 189 PIDFILE=/var/run/perdition.managesieve/perdition.managesieve.pid 190 DAEMON=/usr/local/sbin/perdition.managesieve 191 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping Perdition manage sieve server" 192 do_stop 193 case "$?" in 194 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 195 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 196 esac 197 fi 198 ;; 199 restart) 200 $0 stop 201 $0 start 202 ;; 203 force-reload|reload) 204 if [ "$POP3" = "yes" ]; then 205 PIDFILE=/var/run/perdition.pop3/perdition.pop3.pid 206 DAEMON=/usr/local/sbin/perdition.pop3 207 [ "$VERBOSE" != no ] && log_daemon_msg "Reloading Perdition POP3 server" 208 do_reload 209 [ "$VERBOSE" != no ] && log_end_msg $? 210 fi 211 if [ "$POP3S" = "yes" ]; then 212 PIDFILE=/var/run/perdition.pop3s/perdition.pop3s.pid 213 DAEMON=/usr/local/sbin/perdition.pop3s 214 [ "$VERBOSE" != no ] && log_daemon_msg "Reloading Perdition POP3S server" 215 do_reload 216 [ "$VERBOSE" != no ] && log_end_msg $? 217 fi 218 if [ "$IMAP4" = "yes" ]; then 219 PIDFILE=/var/run/perdition.imap4/perdition.imap4.pid 220 DAEMON=/usr/local/sbin/perdition.imap4 221 [ "$VERBOSE" != no ] && log_daemon_msg "Reloading Perdition IMAP4 server" 222 do_reload 223 [ "$VERBOSE" != no ] && log_end_msg $? 224 fi 225 if [ "$IMAP4S" = "yes" ]; then 226 PIDFILE=/var/run/perdition.imaps/perdition.imaps.pid 227 DAEMON=/usr/local/sbin/perdition.imaps 228 [ "$VERBOSE" != no ] && log_daemon_msg "Reloading Perdition IMAP4S server" 229 do_reload 230 [ "$VERBOSE" != no ] && log_end_msg $? 231 fi 232 if [ "$MANAGESIEVE" = "yes" ]; then 233 PIDFILE=/var/run/perdition.managesieve/perdition.managesieve.pid 234 DAEMON=/usr/local/sbin/perdition.managesieve 235 [ "$VERBOSE" != no ] && log_daemon_msg "Reloading Perdition manage sieve server" 236 do_reload 237 [ "$VERBOSE" != no ] && log_end_msg $? 238 fi 239 ;; 240 *) 241 echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload}" 242 exit 1 243 ;; 244esac 245 246exit 0 247