#!/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
+# chkconfig: 345 80 20
#
-# description: Postfix is a Mail Transport Agent, which is the program
+# description: Postfix is a Mail Transport Agent, which is the program \
# that moves mail from one machine to another.
[ -f /etc/sysconfig/postfix ] && . /etc/sysconfig/postfix
# Check that networking is up.
-[ "${NETWORKING}" = "no" ] && echo "Error: Networking is down"; 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() {
+ if [ -f /var/lock/subsys/postfix ]; then
+ msg_already_running "Postfix"
+ return
+ fi
-# See how we were called.
-case "$1" in
- start)
- # Check if the service is already running?
+ local msg
+ msg_starting "Postfix"
+ busy
+ _daemon_set_ulimits
+ 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
+}
+
+stop() {
if [ ! -f /var/lock/subsys/postfix ]; then
- show Starting postfix
- busy
- newaliases
- $0 rebuilddb
- if /usr/sbin/postfix start 2>/dev/null; then
- deltext; ok
- else
- deltext;fail
- fi
+ msg_not_running "Postfix"
+ return
+ fi
+
+ local msg
+ msg_stopping "Postfix"
+ busy
+ msg=$(/usr/sbin/postfix stop 2>&1)
+ if [ $? -eq 0 ]; then
+ ok
else
- echo "postfix already is running"
+ fail
+ echo >&2 "$msg"
fi
- touch /var/lock/subsys/postfix
- ;;
- stop)
- # Stop daemons.
- show "Shutting down postfix: "
+ rm -f /var/lock/subsys/postfix >/dev/null 2>&1
+}
+
+reload() {
+ if [ ! -f /var/lock/subsys/postfix ]; then
+ msg_not_running "Postfix"
+ RETVAL=7
+ return
+ fi
+
+ local msg
+ msg_reloading "Postfix"
busy
- if /usr/sbin/postfix stop 2>/dev/null; then
- deltext; ok
+ msg=$(/usr/sbin/postfix reload 2>&1)
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ ok
else
- deltext; fail
+ fail
+ echo >&2 "$msg"
+ RETVAL=7
fi
- rm -f /var/lock/subsys/postfix
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+ start)
+ networking_check
+ start
;;
- restart)
- $0 stop
- $0 start
+ stop)
+ stop
;;
- reload)
- /usr/sbin/postfix reload
+ restart)
+ networking_check
+ stop
+ start
;;
- 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
+ standard_db="access canonical relocated transport virtual"
+ extra_db=$(ls -1 /etc/mail/*.db 2> /dev/null | grep -Ev '/(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|status|restart|reload|rebuilddb}"
- exit 1
+ msg_usage "$0 {start|stop|restart|reload|force-reload|rebuilddb|status}"
+ exit 3
esac
-exit 0
+exit $RETVAL