#!/bin/sh
#
-# postfix This shell script takes care of starting and stopping
-# postfix.
+# postfix This shell script takes care of starting and stopping
+# postfix.
#
-# chkconfig: 2345 80 30
-# description: Postfix is a Mail Transport Agent, which is the program
-# that moves mail from one machine to another.
+# chkconfig: 345 80 20
+#
+# description: Postfix is a Mail Transport Agent, which is the program \
+# that moves mail from one machine to another.
+
-# Source function library.
+# Source function library
. /etc/rc.d/init.d/functions
-# Source networking configuration.
+# Get network config
. /etc/sysconfig/network
+# Get service config
+[ -f /etc/sysconfig/postfix ] && . /etc/sysconfig/postfix
+
# Check that networking is up.
-[ "${NETWORKING}" = "no" ] && exit 0
+networking_check() {
+ if is_yes "${NETWORKING}"; then
+ if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+ msg_network_down "Postfix"
+ exit 1
+ fi
+ else
+ exit 0
+ fi
+}
+
+start() {
+ local msg
+
+ if [ ! -f /var/lock/subsys/postfix ]; then
+ msg_starting "Postfix"
+ busy
+ msg=$(nice -n ${SERVICE_RUN_NICE_LEVEL:-${DEFAULT_SERVICE_RUN_NICE_LEVEL:-0}} /usr/sbin/postfix start 2>&1)
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ ok
+ touch /var/lock/subsys/postfix
+ else
+ fail
+ echo >&2 "$msg"
+ fi
+ else
+ msg_already_running "Postfix"
+ fi
+}
-[ -f /usr/sbin/postfix ] || exit 0
+stop() {
+ local msg
+ if [ -f /var/lock/subsys/postfix ]; then
+ msg_stopping "Postfix"
+ busy
+ msg=$(/usr/sbin/postfix stop 2>&1)
+ if [ $? -eq 0 ]; then
+ ok
+ else
+ fail
+ echo >&2 "$msg"
+ fi
+ rm -f /var/lock/subsys/postfix
+ else
+ msg_not_running "Postfix"
+ fi
+}
+
+reload() {
+ local msg
+ if [ -f /var/lock/subsys/postfix ]; then
+ msg_reloading "Postfix"
+ busy
+ msg=$(/usr/sbin/postfix reload 2>&1)
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ ok
+ else
+ fail
+ echo >&2 "$msg"
+ RETVAL=7
+ fi
+ else
+ msg_not_running "Postfix"
+ RETVAL=7
+ fi
+}
+RETVAL=0
# See how we were called.
case "$1" in
start)
- # Start daemons.
- show "Starting postfix: "
- busy
- newaliases
- $0 rebuilddb
- if /usr/sbin/postfix start 2>/dev/null; then
- deltext; ok
- else
- deltext;fail
- fi
- touch /var/lock/subsys/postfix
+ networking_check
+ start
;;
stop)
- # Stop daemons.
- show "Shutting down postfix: "
- busy
- if /usr/sbin/postfix stop 2>/dev/null; then
- deltext; ok
- else
- deltext; fail
- fi
- rm -f /var/lock/subsys/postfix
+ stop
;;
restart)
- $0 stop
- $0 start
+ networking_check
+ stop
+ start
;;
- reload)
- /usr/sbin/postfix reload
- ;;
- status)
- status postfix
+ reload|force-reload)
+ networking_check
+ reload
;;
rebuilddb)
- for I in access canonical relocated transport virtual
- do
- if [ -f /etc/mail/$I ] ; then
- /usr/sbin/postmap hash:/etc/mail/$I < /etc/mail/$I
- fi
+ standard_db="access canonical relocated transport virtual"
+ extra_db=$(ls -1 /etc/mail/*.db 2> /dev/null | egrep -v '/(access|canonical|relocated|transport|virtual|aliases)\.db$')
+
+ echo -n "Rebuilding databases: "
+ for base in $standard_db $extra_db; do
+ db=$(basename "$base" .db)
+
+ if [ -f /etc/mail/$db ]; then
+ echo -n "$db "
+ /usr/sbin/postmap hash:/etc/mail/$db < /etc/mail/$db
+ fi
done
- ;;
+ echo "...DONE"
+
+ echo -n "Rebuilding aliases database"
+ /usr/bin/newaliases
+ echo "...DONE"
+ ;;
+ status)
+ status master
+ exit $?
+ ;;
*)
- echo "Usage: $0 {start|stop|restart|reload|status}"
- exit 1
+ msg_usage "$0 {start|stop|restart|reload|force-reload|rebuilddb|status}"
+ exit 3
esac
-exit 0
+exit $RETVAL