Les services sous la responsabilité des daemontools sont assez gluants. La commande générique "svc" permet de les maîtriser.
Voici un script qui permet, en utilisant les diverses possibilités de "svc", de démarrer, d'arrêter, de redémarrer, de mettre en pause etc. les services pop3 et pop3-ssl supervisés par les daemontools. Il suffit de modifier les variables SVC et SVCSSL pour l'adapter aux services imap.
# description: the courier-pop3 or courier-imap server # with daemon tools PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin export PATH SVC_DIR='/service' SVC='courier-pop3' SVCSSL='courier-pop3-ssl' case "$1" in start) echo "Starting ${SVC}" if svok ${SVC_DIR}/${SVC}; then svc -u ${SVC_DIR}/${SVC} else echo ${SVC} service not running fi echo "Starting ${SVCSSL}" if svok ${SVC_DIR}/${SVCSSL}; then svc -u ${SVC_DIR}/${SVCSSL} else echo ${SVCSSL} service not running fi if [ -d /var/lock/subsys ]; then touch /var/lock/subsys/vpopmail fi ;; stop) echo "Stopping ${SVC}..." svc -d ${SVC_DIR}/${SVC} echo "Stopping ${SVCSSL}..." svc -d ${SVC_DIR}/${SVCSSL} if [ -f /var/lock/subsys/vpopmail ]; then rm /var/lock/subsys/vpopmail fi ;; stat) svstat ${SVC_DIR}/${SVC} svstat ${SVC_DIR}/${SVC}/log svstat ${SVC_DIR}/${SVCSSL} svstat ${SVC_DIR}/${SVCSSL}/log ;; pause) echo "Pausing ${SVC}" svc -p ${SVC_DIR}/${SVC} echo "Pausing ${SVCSSL}" svc -p ${SVC_DIR}/${SVCSSL} ;; reload) echo "Reloading ${SVC}" svc -h ${SVC_DIR}/${SVC} echo "Reloading ${SVCSSL}" svc -h ${SVC_DIR}/${SVCSSL} ;; cont) echo "Continuing ${SVC}" svc -c ${SVC_DIR}/${SVC} echo "Continuing ${SVCSSL}" svc -c ${SVC_DIR}/${SVCSSL} ;; restart) echo "Restarting ${SVC} ${SVCSSL} :" echo "* Stopping ${SVC}." svc -d ${SVC_DIR}/${SVC} echo "* Stopping ${SVCSSL}:" svc -d ${SVC_DIR}/${SVCSSL} echo "* Starting ${SVC}." svc -u ${SVC_DIR}/${SVC} echo "* Starting ${SVCSSL}." svc -u ${SVC_DIR}/${SVCSSL} ;; help) cat <<HELP stop -- stops ${SVC} ${SVCSSL}(connections refused) start -- starts ${SVC} ${SVCSSL} (connection accepted) pause -- temporarily stops ${SVC} ${SVCSSL} cont -- continues paused ${SVC} ${SVCSSL} stat -- displays status of ${SVC} ${SVCSSL} restart -- stops and restarts ${SVC} ${SVCSSL} reload -- reload configuration of ${SVC} ${SVCSSL} HELP ;; *) echo "Usage: $0 {start|stop|reload|restart|stat|pause|cont|help}" exit 1 ;; esac exit 0
Jms propose un script perl : mtrack, qui permet de rendre la sortie de qmail-send plus lisible en groupant, message par message, la suite des actions.
Ce script, qui est plutôt un filtre, peut par exemple s'utiliser comme ceci :
cat /service/qmail-send/log/main/current | mtrack | tai64nlocal
Pour fixer les idées sur l'utilité de ce filtre, voici un exemple le log non filtré :
cat /service/qmail-send/log/main/current | tai64nlocal
2007-04-23 17:53:31.528957500 new msg 12585409 2007-04-23 17:53:31.528964500 info msg 12585409: bytes 824 from <postmaster@maison.mrs> qp 2277 uid 1002 2007-04-23 17:53:31.528969500 starting delivery 2: msg 12585409 to local maison.mrs-prof@maison.mrs 2007-04-23 17:53:31.528972500 status: local 1/10 remote 0/20 2007-04-23 17:53:31.539061500 delivery 2: success: did_0+0+1/ 2007-04-23 17:53:31.539069500 status: local 0/10 remote 0/20 2007-04-23 17:53:31.539072500 end msg 12585409 2007-04-23 17:55:15.339476500 new msg 12585409 2007-04-23 17:55:15.339483500 info msg 12585409: bytes 936 from <prof@maison.mrs> qp 2285 uid 1002 2007-04-23 17:55:15.339487500 starting delivery 3: msg 12585409 to local maison.mrs-postmaster@maison.mrs 2007-04-23 17:55:15.339491500 status: local 1/10 remote 0/20 2007-04-23 17:55:15.339494500 delivery 3: success: did_0+0+1/ 2007-04-23 17:55:15.339496500 status: local 0/10 remote 0/20 2007-04-23 17:55:15.339499500 end msg 12585409 2007-04-23 19:45:51.047440500 alert: oh no! lost spawn connection! dying... 2007-04-23 19:45:51.047446500 alert: oh no! lost spawn connection! dying... 2007-04-24 09:39:26.501605500 status: local 0/10 remote 0/20 2007-04-24 10:37:53.571989500 new msg 12585409 2007-04-24 10:37:53.571997500 info msg 12585409: bytes 930 from <prof@maison.mrs> qp 2267 uid 1002 2007-04-24 10:37:53.572001500 starting delivery 1: msg 12585409 to local maison.mrs-postmaster@maison.mrs 2007-04-24 10:37:53.572005500 status: local 1/10 remote 0/20 2007-04-24 10:37:53.654748500 delivery 1: success: did_0+0+1/ 2007-04-24 10:37:53.654756500 status: local 0/10 remote 0/20 2007-04-24 10:37:53.654759500 end msg 12585409 2007-04-24 12:13:16.959042500 status: local 0/10 remote 0/20
Puis filtré :
cat /service/qmail-send/log/main/current | mtrack | tai64nlocal
2007-04-23 17:53:31.528957500 new msg 12585409 2007-04-23 17:53:31.528964500 info msg 12585409: bytes 824 from <postmaster@maison.mrs> qp 2277 uid 1002 2007-04-23 17:53:31.528969500 starting delivery 2: msg 12585409 to local maison.mrs-prof@maison.mrs 2007-04-23 17:53:31.539061500 delivery 2: success: did_0+0+1/ 2007-04-23 17:53:31.539072500 end msg 12585409 2007-04-23 17:55:15.339476500 new msg 12585409 2007-04-23 17:55:15.339483500 info msg 12585409: bytes 936 from <prof@maison.mrs> qp 2285 uid 1002 2007-04-23 17:55:15.339487500 starting delivery 3: msg 12585409 to local maison.mrs-postmaster@maison.mrs 2007-04-23 17:55:15.339494500 delivery 3: success: did_0+0+1/ 2007-04-23 17:55:15.339499500 end msg 12585409 2007-04-24 10:37:53.571989500 new msg 12585409 2007-04-24 10:37:53.571997500 info msg 12585409: bytes 930 from <prof@maison.mrs> qp 2267 uid 1002 2007-04-24 10:37:53.572001500 starting delivery 1: msg 12585409 to local maison.mrs-postmaster@maison.mrs 2007-04-24 10:37:53.654748500 delivery 1: success: did_0+0+1/ 2007-04-24 10:37:53.654759500 end msg 12585409
Jms propose bien d'autres scripts. Je vous laisse fouiller.