X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=exim.init;h=d684c122e2099b4e007f7d28992c395f2df95a9d;hb=dc8c9b1ef5a9795f6026ec789e9209f08e98979e;hp=4829920625575db89345ecab3b8009ef18adaae8;hpb=955376d5f696d0c34b36d6757a7527d5161c4ecc;p=packages%2Fexim.git diff --git a/exim.init b/exim.init old mode 100644 new mode 100755 index 4829920..d684c12 --- a/exim.init +++ b/exim.init @@ -7,7 +7,7 @@ # that moves mail from one machine to another. # processname: exim # config: /etc/exim.cf -# pidfile: /var/run/exim.pid +# pidfile: /var/spool/exim/exim-daemon.pid # Source function library. . /etc/rc.d/init.d/functions @@ -15,77 +15,143 @@ # Source networking configuration. . /etc/sysconfig/network +QUEUE=1h + +EXIM_CONFIG=/etc/mail/exim.conf + # Source exim configureation. if [ -f /etc/sysconfig/exim ]; then . /etc/sysconfig/exim -else - QUEUE=1h fi # Check that networking is up. if is_yes "${NETWORKING}"; then if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then - msg_network_down Exim + msg_network_down "Exim" exit 1 fi else exit 0 fi +checkconfig() { + local details=${1:-0} ret + + RETVAL=0 + if [ $details = 1 ]; then + for CONFIG in "$EXIM_CONFIG" $EXIM_EXTRA_CONFIGS; do + run_cmd "Checking exim configuration ($CONFIG)" exim -bV -C $CONFIG + ret=$? + if [ $ret != 0 ]; then + RETVAL=$ret + fi + done + else + for CONFIG in "$EXIM_CONFIG" $EXIM_EXTRA_CONFIGS; do + exim -bV -C "$CONFIG" > /dev/null 2>&1 + ret=$? + if [ $ret != 0 ]; then + show "Checking %s configuration (%s)" "exim" "$CONFIG"; fail + RETVAL=$ret + fi + done + if [ $RETVAL != 0 ]; then + nls 'Configuration test failed. See details with %s "checkconfig"' $0 + exit $RETVAL + fi + fi +} + +start() { + # Start daemons. + if [ -f /var/lock/subsys/exim ]; then + msg_already_running "Exim" + return + fi + + msg_starting "Exim" + daemon /usr/bin/exim \ + -oP /var/spool/exim/exim-daemon.pid \ + $( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \ + $( [ -n "$QUEUE" ] && echo -q$QUEUE ) \ + -C "$EXIM_CONFIG" + for CONFIG in $EXIM_EXTRA_CONFIGS; do + msg_starting "Exim ($CONFIG)" + daemon exim \ + $( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \ + $( [ -n "$QUEUE" ] && echo -q$QUEUE ) \ + -C $CONFIG + done + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/exim +} + +stop() { + # Stop daemons. + if [ ! -f /var/lock/subsys/exim ]; then + msg_not_running "Exim" + return + fi + + msg_stopping "Exim" + killproc --pidfile /var/spool/exim/exim-daemon.pid exim + rm -f /var/lock/subsys/exim /var/spool/exim/exim-daemon.pid >/dev/null 2>&1 +} + +condrestart() { + if [ ! -f /var/lock/subsys/exim ]; then + msg_not_running "Exim" + RETVAL=$1 + return + fi + + checkconfig + stop + start +} + +reload() { + if [ ! -f /var/lock/subsys/exim ]; then + msg_not_running "Exim" + RETVAL=7 + return + fi + + checkconfig + msg_reloading "Exim" + killproc exim -HUP + RETVAL=$? +} + RETVAL=0 # See how we were called. case "$1" in start) - # Start daemons. - if [ ! -f /var/lock/subsys/exim ]; then - msg_starting Exim - daemon exim \ - $( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \ - $( [ -n "$QUEUE" ] && echo -q$QUEUE ) - for CONFIG in $EXIM_EXTRA_CONFIGS; do - msg_starting "Exim ($CONFIG)" - daemon exim \ - $( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \ - $( [ -n "$QUEUE" ] && echo -q$QUEUE ) \ - -C $CONFIG - done - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/exim - else - msg_already_running Exim - fi + start ;; stop) - # Stop daemons. - if [ -f /var/lock/subsys/exim ]; then - msg_stopping Exim - killproc exim - rm -f /var/lock/subsys/exim >/dev/null 2>&1 - else - msg_not_running Exim - fi + stop ;; restart) - $0 stop - $0 start - exit $? + checkconfig + stop + start + ;; + try-restart) + condrestart 0 + ;; + reload|force-reload) + reload + ;; + checkconfig|configtest) + checkconfig 1 ;; status) status exim exit $? ;; - reload|force-reload) - if [ -f /var/lock/subsys/exim ]; then - msg_reloading Exim - killproc exim -HUP - RETVAL=$? - else - msg_not_running Exim >&2 - exit 7 - fi - ;; *) - msg_usage "$0 {start|stop|restart|reload|force-reload|status}" + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|configtest|status}" exit 3 esac