archivesmtp: http://www.dancingfortune.com/projects/archivesmtp/download.php compiled and installed as explained on that page but when I try to get the script to start at boot-up I get these errors: Code: h1870666:~# [B]insserv archivesmtp[/B] insserv: warning: script 'K02jailkit' missing LSB tags and overrides insserv: warning: script 'archivesmtp' missing LSB tags and overrides insserv: warning: script 'jailkit' missing LSB tags and overrides [B]insserv: There is a loop between service munin-node and archivesmtp if stopped insserv: loop involving service archivesmtp at depth 2 insserv: loop involving service munin-node at depth 1 insserv: Stopping archivesmtp depends on munin-node and therefore on system facility `$all' which can not be true! insserv: exiting now without changing boot order! [/B]h1870666:~# any ideas how to fix this?
Sure I can do. Here is the munin rc script, quite long and the original that comes with the Debian munin version...: Code: #! /bin/bash ### BEGIN INIT INFO # Provides: munin-node # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $all # Should-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop Munin-Node # Description: Start/stop Munin-Node ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/munin-node PIDFILE=/var/run/munin/munin-node.pid CONFFILE=/etc/munin/munin-node.conf # log_daemon_msg() and log_progress_msg() isn't present in present in Sarge. # Below is a copy of them from lsb-base 3.0-5, for the convenience of back- # porters. If the installed version of lsb-base provides these functions, # they will be used instead. log_daemon_msg () { if [ -z "$1" ]; then return 1 fi if [ -z "$2" ]; then echo -n "$1:" return fi echo -n "$1: $2" } log_progress_msg () { if [ -z "$1" ]; then return 1 fi echo -n " $@" } . /lib/lsb/init-functions [ -r /etc/default/munin-node ] && . /etc/default/munin-node if [ ! -x $DAEMON ]; then log_failure_msg "Munin-Node appears to be uninstalled." exit 5 elif [ ! -e $CONFFILE ]; then log_failure_msg "Munin-Node appears to be unconfigured." exit 6 fi # Figure out if the pid file is in a non-standard location while read line; do line=${line%%\#*} # get rid of comments set -f line=$(echo $line) # get rid of extraneous blanks set +f if [ "$line" != "${line#pid_file }" ]; then PIDFILE=${line#pid_file } fi done < $CONFFILE verify_superuser() { action=$1 [ $EUID -eq 0 ] && return log_failure_msg "Superuser privileges required for the" \ "\"$action\" action." exit 4 } start() { log_daemon_msg "Starting Munin-Node" mkdir -p /var/run/munin chown munin:root /var/run/munin chmod 0755 /var/run/munin if pidofproc -p $PIDFILE $DAEMON >/dev/null; then log_progress_msg "started beforehand" log_end_msg 0 exit 0 fi start_daemon -p $PIDFILE $DAEMON $DAEMON_ARGS ret=$? # start_daemon() isn't thorough enough, ensure the daemon has been # started manually attempts=0 until pidofproc -p $PIDFILE $DAEMON >/dev/null; do attempts=$(( $attempts + 1 )) sleep 0.05 [ $attempts -lt 20 ] && continue log_end_msg 1 return 1 done [ $ret -eq 0 ] && log_progress_msg "done" log_end_msg $ret return $ret } stop() { log_daemon_msg "Stopping Munin-Node" # killproc() doesn't try hard enough if the pid file is missing, # so create it is gone and the daemon is still running if [ ! -r $PIDFILE ]; then pid=$(pidofproc -p $PIDFILE $DAEMON) if [ -z "$pid" ]; then log_progress_msg "stopped beforehand" log_end_msg 0 return 0 fi echo $pid 2>/dev/null > $PIDFILE if [ $? -ne 0 ]; then log_end_msg 1 return 1 fi fi killproc -p $PIDFILE /usr/bin/munin-node ret=$? # killproc() isn't thorough enough, ensure the daemon has been # stopped manually attempts=0 until ! pidofproc -p $PIDFILE $DAEMON >/dev/null; do attempts=$(( $attempts + 1 )) sleep 0.05 [ $attempts -lt 20 ] && continue log_end_msg 1 return 1 done [ $ret -eq 0 ] && log_progress_msg "done" log_end_msg $ret return $ret } if [ "$#" -ne 1 ]; then log_failure_msg "Usage: /etc/init.d/munin-node" \ "{start|stop|restart|force-reload|try-restart}" exit 2 fi case "$1" in start) verify_superuser $1 start exit $? ;; stop) verify_superuser $1 stop exit $? ;; restart|force-reload) verify_superuser $1 stop || exit $? start exit $? ;; try-restart) verify_superuser $1 pidofproc -p $PIDFILE $DAEMON >/dev/null if [ $? -eq 0 ]; then stop || exit $? start exit $? fi log_success_msg "Munin-Node was stopped beforehand and thus not" \ "restarted." exit 0 ;; reload) log_failure_msg "The \"reload\" action is not implemented." exit 3 ;; status) pid=$(pidofproc -p $PIDFILE $DAEMON) ret=$? pid=${pid% } # pidofproc() supplies a trailing space, strip it if [ $ret -eq 0 ]; then log_success_msg "Munin-Node is running (PID: $pid)" exit 0 # the LSB specifies that I in this case (daemon dead + pid file exists) # should return 1, however lsb-base returned 2 in this case up to and # including version 3.1-10 (cf. #381684). Since that bug is present # in Sarge, Ubuntu Dapper, and (at the time of writing) Ubuntu Etch, # and taking into account that later versions of pidofproc() do not # under any circumstance return 2, I'll keep understanding invalid # return code for the time being, even though the LSB specifies it is # to be used for the situation where the "program is dead and /var/lock # lock file exists". elif [ $ret -eq 1 ] || [ $ret -eq 2 ]; then log_failure_msg "Munin-Node is dead, although $PIDFILE exists." exit 1 elif [ $ret -eq 3 ]; then log_warning_msg "Munin-Node is not running." exit 3 fi log_warning_msg "Munin-Node status unknown." exit 4 ;; *) log_failure_msg "Usage: /etc/init.d/munin-node" \ "{start|stop|restart|force-reload|try-restart}" exit 2 ;; esac log_failure_msg "Unexpected failure, please file a bug." exit 1 Here is the original archivesmtp rc script: Code: #!/bin/sh # # Start up RC script for archivesmtp milter # # Please set these values to match your installation ARCHIVESMTP="/usr/local/sbin/archivesmtp" CONFIG_FILE="/usr/local/etc/archivesmtp.conf" PID_FILE="/var/run/archivesmtp/run.pid" SOCKET="unix:/var/run/archivesmtp/mta.sock" CHUSER="nobody" FLAGS="" case "$1" in start) echo -n "Starting ArchiveSMTP" $ARCHIVESMTP $FLAGS -p $SOCKET -f $CONFIG_FILE -u $CHUSER -r $PID_FILE & echo ;; stop) echo -n "Stopping ArchiveSMTP" kill `cat $PID_FILE` echo ;; *) echo "Usage: $0 {start|stop}" ;; esac exit Here is an alternative archivesmtp rc script I got from tis author but it seems not to be Debian compatible either, at least not entirely: Code: #!/bin/bash # # Start up RC script for archivesmtp milter # # chkconfig: - 77 23 # description: archivesmtp is a daemon which hooks into sendmail \ # and copies email messages in to a mailbox. # processname: archivesmtp # pidfile: /var/run/archivesmtp/run.pid # config: /etc/archivesmtp.conf . /etc/rc.d/init.d/functions RETVAL=0 ARCHIVESMTP="/usr/sbin/archivesmtp" CONFIG_FILE="/etc/archivesmtp.conf" PID_FILE="/var/run/archivesmtp/run.pid" SOCKET="unix:/var/run/archivesmtp/archivesmtp.sock" CHUSER="archivesmtp" FLAGS="-b -a" start() { echo -n $"Starting ArchiveSMTP: " daemon --check archivesmtp $ARCHIVESMTP $FLAGS -p $SOCKET -f $CONFIG_FILE -u $CHUSER -r $PID_FILE RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/archivesmtp return $RETVAL } stop() { echo -n $"Shutting down ArchiveSMTP: " killproc archivesmtp RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/archivesmtp return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start RETVAL=$? ;; condrestart) if [ -f /var/lock/subsys/archivesmtp ]; then stop start RETVAL=$? fi ;; status) status archivesmtp RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL Don't worry about the PATHs inside the scripts, I had adapted them but it was easier to post the original scripts here...
I suggest you try something like Code: ### BEGIN INIT INFO # Provides: archivesmtp # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $all # Should-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop archivesmtp # Description: Start/stop archivesmtp ### END INIT INFO in the original archivesmtp init script.