aboutsummaryrefslogtreecommitdiff
path: root/src/postgrey/postgrey.rc
diff options
context:
space:
mode:
Diffstat (limited to 'src/postgrey/postgrey.rc')
-rwxr-xr-xsrc/postgrey/postgrey.rc74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/postgrey/postgrey.rc b/src/postgrey/postgrey.rc
new file mode 100755
index 0000000..dc25887
--- /dev/null
+++ b/src/postgrey/postgrey.rc
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+# source application-specific settings
+POSTGREY_CONF=/etc/conf.d/postgrey
+[ -f $POSTGREY_CONF ] && . $POSTGREY_CONF
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+GROUP="postgrey"
+USER="postgrey"
+DAEMON_NAME="postgrey"
+POSTGREY_BIN="/usr/sbin/postgrey"
+PIDFILE=/var/run/postgrey/postgrey.pid
+
+mkdir -p /var/run/postgrey
+chown $USER:$GROUP /var/run/postgrey
+
+PID=`cat $PIDFILE 2>/dev/null`
+[ -d /proc/$PID ] || PID=""
+
+checkconfig() {
+ if [ -z $POSTGREY_ADDR ]; then
+ echo "You need to set POSTGREY_ADDR instead of POSTGREY_TYPE parameter bundle"
+ return 1
+ fi
+}
+
+start() {
+ stat_busy "Starting Postgrey"
+ checkconfig || { stat_fail; return 1; }
+
+ [ -z "$PID" ] && $POSTGREY_BIN --daemonize $POSTGREY_ADDR \
+ --group=$GROUP --user=$USER $POSTGREY_OPTS --pidfile=$PIDFILE \
+ --greylist-text="$POSTGREY_TEXT" > /dev/null
+
+ if [ $? -gt 0 ]
+ then
+ stat_fail
+ else
+ add_daemon postgrey
+ stat_done
+ fi
+}
+
+stop() {
+ stat_busy "Stopping Postgrey"
+ [ ! -z "$PID" ] && kill -9 $PID &> /dev/null
+ if [ $? -gt 0 ]
+ then
+ stat_fail
+ else
+ rm_daemon postgrey
+ rm -f $PIDFILE
+ stat_done
+ fi
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ # calling 'stop' and 'start' without the $0 fails...
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+ esac
+exit 0