#!/bin/sh # # chkconfig: - 65 35 # description: The Cyrus IMAPD master serves as a master process for the Cyrus \ # IMAP and POP servers. # config: /etc/cyrus.conf # config: /etc/imapd.conf # pidfile: /var/run/cyrus-master.pid # author: Simon Matter, Invoca Systems # version: 2005111100 # changed: add quickstart/stop option to init script to bypass db import/export . /etc/init.d/functions config=/etc/imapd.conf config2=/etc/cyrus.conf exec=/usr/lib/cyrus-imapd/cyrus-master lockfile=/var/lock/subsys/cyrus-imapd pidfile=/var/run/cyrus-master.pid prog="cyrus-imapd" if [ -f /etc/sysconfig/$prog ]; then . /etc/sysconfig/$prog fi # check if the config files are present configok=true [ -f $config -a $config2 ] || configok=false # get_config [config default] # extracts config option from config file get_config() { if conf=$(grep "^$1" /etc/imapd.conf); then echo $conf | cut -d: -f2 else echo $2 fi } # where to find files and directories CONFIGDIRECTORY=$(get_config configdirectory /var/lib/imap) CYRUSMASTER=/usr/lib/cyrus-imapd/cyrus-master CYRUS_PROC_NAME=$(basename $CYRUSMASTER) ALWAYS_CONVERT=1 RETVAL=0 RETVAL2=1 QUICK=0 start() { [ $UID -eq 0 ] || exit 4 [ -x $exec ] || exit 5 $configok || exit 6 if [ $(/sbin/pidof -s $CYRUSMASTER) ]; then echo -n $"$prog already running." true echo else if [ $QUICK -eq 0 ]; then echo -n $"Importing $prog databases: " cd $CONFIGDIRECTORY runuser - cyrus -s /bin/sh -c "umask 166 ; /usr/lib/cyrus-imapd/cvt_cyrusdb_all > ${CONFIGDIRECTORY}/rpm/db_import.log 2>&1" < /dev/null RETVAL=$? if [ $RETVAL -eq 0 ]; then success $"$prog importing databases" else failure $"$prog error importing databases, check ${CONFIGDIRECTORY}/rpm/db_import.log" fi echo fi if [ $RETVAL -eq 0 ]; then echo -n $"Starting $prog: " daemon $CYRUSMASTER -d $CYRUSOPTIONS RETVAL2=$? echo fi fi [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch $lockfile return $RETVAL } stop() { [ $UID -eq 0 ] || exit 4 [ -x $exec ] || exit 5 echo -n $"Shutting down $prog: " killproc $CYRUSMASTER RETVAL=$? if [ $QUICK -eq 0 ]; then if [ ! $(/sbin/pidof -s $CYRUSMASTER) ]; then echo echo -n $"Exporting $prog databases: " cd $CONFIGDIRECTORY runuser - cyrus -s /bin/sh -c "umask 166 ; /usr/lib/cyrus-imapd/cvt_cyrusdb_all export > ${CONFIGDIRECTORY}/rpm/db_export.log 2>&1" < /dev/null RETVAL2=$? if [ $RETVAL2 -eq 0 ]; then success $"$prog exporting databases" else failure $"$prog error exporting databases, check ${CONFIGDIRECTORY}/rpm/db_export.log" fi fi fi echo [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f $lockfile return $RETVAL } restart() { stop start } reload() { echo -n $"Reloading cyrus.conf file: " killproc $CYRUSMASTER -HUP RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; force-reload|restart) restart ;; reload) reload ;; condrestart|try-restart) if [ -f $lockfile ]; then stop start fi ;; status) status -p $pidfile $prog RETVAL=$? ;; quickstart) QUICK=1 start ;; quickstop) QUICK=1 stop ;; *) echo $"Usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status|quickstart|quickstop}" RETVAL=2 [ "$1" = "usage" ] && RETVAL=0 esac exit $RETVAL