ich steh mal wieder voll auf dem schlauch. ich habe das init-skript /etc/init.d/sendmail angepasst um ebenfalls milter-regex zu starten/stoppen. das mit dem starten funktioniert auch auch ohne probleme. aber beim stoppen wird nur der sendmail gestoppt und dann hoert das skript einfach ohne fehlermeldung auf. ich habe ein paar echo mit eingebaut um zu sehen wie weit das skript beim stoppen laeuft. ich bekomme nur 'affe 1' zu sehen.
#!/sbin/sh
# This Part is for Sendmail itself
ERRMSG1='WARNING: /var/mail is NFS-mounted without setting actimeo=0,'
ERRMSG2='this can cause mailbox locking and access problems.'
SERVER_PID_FILE="/var/run/sendmail.pid"
CLIENT_PID_FILE="/var/spool/clientmqueue/sm-client.pid"
DEFAULT_FILE="/etc/default/sendmail"
ALIASES_FILE="/etc/mail/aliases"
# This Part is for Milter
configfile="/etc/mail/milter-regex.conf"
basedir="/var/milter-regex"
pidfile="$basedir/milter-regex.pid"
socket="local:/var/milter/milter-regex.socket"
socketf="/var/milter/milter-regex.socket"
user="root"
check_queue_interval_syntax()
{
default="15m"
if [ $# -lt 1 ]; then
answer=$default
return
fi
if echo $1 | egrep '^([0-9]*[1-9][0-9]*[smhdw])+$' >/dev/null 2>&1; then
answer=$1
else
answer=$default
fi
}
case "$1" in
'restart')
[ -f $SERVER_PID_FILE ] && kill -1 `head -1 $SERVER_PID_FILE`
[ -f $CLIENT_PID_FILE ] && kill -1 `head -1 $CLIENT_PID_FILE`
;;
'start')
/usr/bin/logger -p mail.info Running the init-script for Sendmail
if [ -f /usr/local/bin/milter-regex -a -f $configfile ]; then
if [ -f $socketf ]; then
rm -r $socketf
fi
/usr/bin/logger -p mail.info Starting Milter-Regex
/usr/local/bin/milter-regex -u $user -c $configfile -p $socket
fi
if [ -f /usr/lib/sendmail -a -f /etc/mail/sendmail.cf ]; then
if [ ! -d /var/spool/mqueue ]; then
/usr/bin/mkdir -m 0750 /var/spool/mqueue
/usr/bin/chown root:bin /var/spool/mqueue
fi
if [ ! -f $ALIASES_FILE.db ] && [ ! -f $ALIASES_FILE.dir ] \
&& [ ! -f $ALIASES_FILE.pag ]; then
/usr/sbin/newaliases
fi
MODE="-bd -X /var/syslog/maildump"
[ -f $DEFAULT_FILE ] && . $DEFAULT_FILE
#
# * MODE should be "-bd" or null (MODE= or MODE="") or
# left alone. Anything else and you're on your own.
# * QUEUEOPTION should be "p" or null (as above).
# * [CLIENT]QUEUEINTERVAL should be set to some legal value;
# sanity checks are done below.
# * [CLIENT]OPTIONS are catch-alls; set with care.
#
if [ -n "$QUEUEOPTION" -a "$QUEUEOPTION" != "p" ]; then
QUEUEOPTION=""
fi
if [ -z "$QUEUEOPTION" -o -n "$QUEUEINTERVAL" ]; then
check_queue_interval_syntax $QUEUEINTERVAL
QUEUEINTERVAL=$answer
fi
check_queue_interval_syntax $CLIENTQUEUEINTERVAL
CLIENTQUEUEINTERVAL=$answer
/usr/lib/sendmail $MODE -q$QUEUEOPTION$QUEUEINTERVAL $OPTIONS &
/usr/lib/sendmail -Ac -q$CLIENTQUEUEINTERVAL $CLIENTOPTIONS &
#
# ETRN_HOSTS should be of the form
# "s1:c1.1,c1.2 s2:c2.1 s3:c3.1,c3.2,c3.3"
# i.e., white-space separated groups of server:client where
# client can be one or more comma-separated names; N.B. that
# the :client part is optional; see etrn(1M) for details.
# server is the name of the server to prod; a mail queue run
# is requested for each client name. This is comparable to
# running "/usr/lib/sendmail -qRclient" on the host server.
#
# See RFC 1985 for more information.
#
for i in $ETRN_HOSTS; do
SERVER=`echo $i | /usr/bin/sed -e 's/:.*$//'`
CLIENTS=`echo $i | /usr/bin/sed -n -e 's/,/ /g' \
-e '/:/s/^.*://p'`
/usr/sbin/etrn $SERVER $CLIENTS >/dev/null 2>&1 &
done
fi
if /usr/bin/nawk 'BEGIN{s = 1}
$2 == "/var/mail" && $3 == "nfs" && $4 !~ /actimeo=0/ &&
$4 !~ /noac/{s = 0} END{exit s}' /etc/mnttab; then
/usr/bin/logger -p mail.crit "$ERRMSG1"
/usr/bin/logger -p mail.crit "$ERRMSG2"
fi
;;
'stop')
[ -f $SERVER_PID_FILE ] && kill `head -1 $SERVER_PID_FILE`
if [ -f $CLIENT_PID_FILE ]; then
kill `head -1 $CLIENT_PID_FILE`
rm -f $CLIENT_PID_FILE
fi
/usr/bin/logger -p mail.info Stopping Sendmail
echo affe 1
/usr/bin/pkill -x -u 0 sendmail
echo affe 2
/usr/bin/logger -p mail.info Stopping Milter-Regex
echo affe 3
/usr/bin/pkill -x -u 0 milter-regex
echo affe 4
rm -r $socketf
;;
*)
echo "Fucking Usage is: $0 { start | stop | restart }"
exit 1
;;
esac
exit 0
nicht mein eigentliches problem aber vielleicht weiss ja einer von euch weiter. wie kann ich testen ob eine socket-datei existent ist? ein '[ -f socketdatei ]' funktioniert scheinbar nicht. folgendes zeigt keine wirkung.
socketf="/var/milter/milter-regex.socket"
if [ -f $socketf ]; then
rm -r $socketf
fi
ct,