#!/bin/sh # # j-chkmail 2.2.1 # # chkconfig: 2345 80 30 # description: j-chkmail - Joe's j-chkmail # filtre de messagerie ### BEGIN INIT INFO # Provides: j-chkmail # Required-Start: $remote_fs # Required-Stop: # X-UnitedLinux-Should-Start: # X-UnitedLinux-Should-Stop: # Default-Start: 3 5 # Default-Stop: # Description: Start j-chmail (milter) ### END INIT INFO # # VARIABLES # JCHKMAIL_HOME=/usr/sbin JCHKMAIL_BIN=j-chkmail OPTIONS=" " WORKROOT=/var/lib/jchkmail STATEDIR=/var/run/jchkmail CONFDIR=/etc/mail/jchkmail # Get config. test -f /etc/sysconfig/jchkmail && . /etc/sysconfig/jchkmail test -f /etc/default/jchkmail && . /etc/default/jchkmail PIDFILE=$STATEDIR/j-chkmail.pid SOCKFILE=$STATEDIR/j-chkmail.sock CFFILE=$CONFDIR/j-chkmail.cf # # Get unix socket file from configuration file # TFILE=`grep "^SOCKET" $CFFILE | awk '{print $2}'` if [ -n "$TFILE" ]; then TFILE=`echo $TFILE | sed s/local://` TFILE=`echo $TFILE | sed s/unix://` fi if [ -n "$TFILE" ] ; then SOCKFILE=$TFILE fi # # Get PIDFILE file from configuration file # TFILE=`grep "^PID_FILE" $CFFILE | awk '{print $2}'` if [ -n "$TFILE" ] ; then PIDFILE=$TFILE fi # # # USR_ID=jchkmail GRP_ID=jchkmail # # Initializing process runtime state files # TPID=`grep "^PID_FILE" $CFFILE | awk '{print $2}'` if [ -n "$TPID" ] ; then # echo "Setting PIDFILE to $TPID" PIDFILE=$TPID fi TSOCK=`grep "^UNIX_SOCK" $CFFILE | awk '{print $2}'` if [ -n "$TSOCK" ] ; then # echo "Setting UNIX_SOCK to $TSOCK" SOCKFILE=$TSOCK fi # # MACROS # check_and_kill() { PID=`head -1 $1` kill -0 $PID > /dev/null 2>&1 [ $? -eq 0 ] && kill $PID } setupdirs () { if [ -n "$WORKROOT" -a ! -d $WORKROOT ] ; then mkdir -p $WORKROOT chmod 755 $WORKROOT if [ -n "$USR_ID" ] ; then chown $USR_ID $WORKROOT fi if [ -n "$GRP_ID" ] ; then chgrp $GRP_ID $WORKROOT fi fi if [ -n "$STATEDIR" -a ! -d $STATEDIR ] ; then mkdir -p $STATEDIR chmod 755 $STATEDIR if [ -n "$USR_ID" ] ; then chown $USR_ID $STATEDIR fi if [ -n "$GRP_ID" ] ; then chgrp $GRP_ID $STATEDIR fi fi } cleanpidfile () { run=`/usr/bin/ps -edf | grep $JCHKMAIL_BIN | grep -c -v grep` if [ "$run" = "0" ] ; then if [ -f $PIDFILE ] ; then echo "Removing old PID file..." rm -f $PIDFILE fi fi } cleansockfile () { run=`/usr/bin/ps -edf | grep $JCHKMAIL_BIN | grep -c -v grep` if [ "$run" = "0" ] ; then if [ -r $SOCKFILE ] ; then echo "Removing old SOCK file..." rm -f $SOCKFILE fi fi } removesockfile () { if [ -r $SOCKFILE ] ; then echo "Removing old SOCK file..." rm -f $SOCKFILE fi } start () { cleanpidfile cleansockfile if [ -f $JCHKMAIL_HOME/$JCHKMAIL_BIN ] ; then #echo "Starting $JCHKMAIL_BIN...." $JCHKMAIL_HOME/$JCHKMAIL_BIN $OPTIONS > /dev/null #echo ".... $JCHKMAIL_BIN started !" fi } stop () { echo "Stopping $JCHKMAIL_BIN...." i=10 while [ $i -gt 0 -a -f $PIDFILE ]; do kill `head -1 $PIDFILE` i=`expr $i - 1` sleep 1 done cleanpidfile cleansockfile } restart () { stop sleep 2 start } reload () { if [ -f "$PIDFILE" ]; then kill -HUP `head -1 $PIDFILE` fi removesockfile } dumpstats () { if [ -f "$PIDFILE" ]; then kill -USR1 `head -1 $PIDFILE` fi } clearstats () { if [ -f "$PIDFILE" ]; then kill -USR2 `head -1 $PIDFILE` fi } # # Real script begins here # setupdirs case "$1" in 'start') start ;; 'stop') stop ;; 'restart') restart ;; 'reload') reload ;; 'dumpstats') dumpstats ;; 'clearstats') clearstats ;; *) echo "Usage: $0 { start | stop | restart | reload | dumpstats | clearstats }" cat <<EOF start - start j-chkmail stop - stop j-chkmail restart - stop and start j-chkmail reload - reload j-chkmail configuration files (send SIGHUP to the daemon) dumpstats - dump internal counters (send SUGUSR1 to the daemon) clearstats - reset internal counters (send SIGUSR2 to the daemon) help - this screen EOF exit 1 ;; esac exit 0