The Perfect SpamSnake - Ubuntu Jeos 12.04 LTS Precise Pangolin

Discussion in 'HOWTO-Related Questions' started by rjhigham, Feb 27, 2013.

  1. Rocky

    Rocky Member

    This is what the perms look like on my setup:

    drwxr-xr-x 5 postfix celeryd 4096 Dec 5 2012 MailScanner

    drwxr-xr-x 294 postfix celeryd 12288 Jul 2 20:07 incoming
    drwxr-xr-x 19 postfix celeryd 4096 Jul 2 06:25 quarantine
    drwxr-xr-x 2 postfix celeryd 4096 Dec 5 2012 spamassassin
     
  2. Chluz

    Chluz New Member

    Hi, thanks for your reply.

    i checked and file /usr/lib/python2.7/dist-packages/setuptools.egg-info exists but is empty.

    The script you uploaded doesn't seem to work, but this one does (I basically did exactly what you said to do in your tutorial, but change the PIDFILE path)


    Code:
    #! /bin/sh
       ### BEGIN INIT INFO
       # Provides:          MailScanner daemon
       # Required-Start:    $local_fs $remote_fs
       # Required-Stop:     $local_fs $remote_fs
       # Default-Start:     2 3 4 5
       # Default-Stop:      0 1 6
       # Short-Description: Controls mailscanner instances
       # Description:       MailScanner is a queue-based spam/virus filter
       ### END INIT INFO
       # Author: Simon Walter <[email protected]>
       # PATH should only include /usr/* if it runs after the mountnfs.sh script
       PATH=/usr/sbin:/usr/bin:/bin:/sbin:/opt/MailScanner/bin
       DESC="mail spam/virus scanner"
       NAME=MailScanner
       PNAME=mailscanner
       DAEMON=/opt/MailScanner/bin/$NAME
       STARTAS=MailScanner
       SCRIPTNAME=/etc/init.d/$PNAME
       #CONFFILE=/opt/MailScanner/etc/MailScanner.conf
       CONFFILE=/etc/MailScanner/MailScanner.conf
       PIDFILE=/opt/MailScanner/var/MailScanner.pid
       # Exit if the package is not installed
       [ -x "$DAEMON" ] || exit 0
       run_nice=0
       stopped_lockfile=/var/lock/subsys/MailScanner.off
       # Read configuration variable file if it is present
       [ -r /etc/default/$PNAME ] && . /etc/default/$PNAME
       # Load the VERBOSE setting and other rcS variables
       . /lib/init/vars.sh
       # Define LSB log_* functions.
       # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
       . /lib/lsb/init-functions
       # sanity check for permissions
       fail()
       {
       echo >&2 "$0: $1"
       exit 1
       }
       check_dir()
       {
       if [ ! -d $1 ]; then
       mkdir -p "$1" || \
       fail "directory $1: does not exist and cannot be created"
       fi
       actual="$(stat -c %U $1)"
       if [ "$actual" != "$2" ]; then
       chown -R "$2" "$1" || \
       fail "directory $1: wrong owner (expected $2 but is $actual)"
       fi
       actual="$(stat -c %G $1)"
       if [ "$actual" != "$3" ]; then
       chgrp -R "$3" "$1" || \
       fail "directory $1: wrong group (expected $3 but is $actual)"
       fi
       }
       user=$(echo $(awk -F= '/^Run As User/ {print $2; exit}' $CONFFILE))
       group=$(echo $(awk -F= '/^Run As Group/ {print $2; exit}' $CONFFILE))
       #check_dir /var/spool/MailScanner       ${user:-postfix} ${group:-www-data}
       #check_dir /var/lib/MailScanner         ${user:-postfix} ${group:-www-data}
       #check_dir /var/run/MailScanner         ${user:-postfix} ${group:-www-data}
       check_dir /var/spool/MailScanner ${user:-postfix} ${group:-celeryd}
       check_dir /var/lib/MailScanner ${user:-postfix} ${group:-celeryd}
       check_dir /var/run/MailScanner ${user:-postfix} ${group:-celeryd}
       check_dir /var/lock/subsys	${user:-root}	${group:-root} #Required to Create Folder
       #check_dir /var/lock/subsys/MailScanner ${user:-postfix} ${group:-www-data}
       check_dir /var/lock/subsys/MailScanner ${user:-postfix} ${group:-celeryd}
       #
       # Function that starts the daemon/service
       #
       do_start()
       {
       # Return
       #   0 if daemon has been started
       #   1 if daemon was already running
       #   2 if daemon could not be started
       #start-stop-daemon --start --quiet --startas $STARTAS --name $NAME --test > /dev/null \
       start-stop-daemon --start --quiet --startas $STARTAS  --pidfile "$PIDFILE" --test > /dev/null \
       || return 1
       #start-stop-daemon --start --quiet --nicelevel $run_nice --chuid postfix:www-data --exec $DAEMON --name $NAME -- $DAEMON_ARGS \
       start-stop-daemon --start --quiet --nicelevel $run_nice --chuid postfix:celeryd --exec $DAEMON  --pidfile "$PIDFILE" -- $DAEMON_ARGS \
       || return 2
       # Add code here, if necessary, that waits for the process to be ready
       # to handle requests from services started subsequently which depend
       # on this one.  As a last resort, sleep for some time.
       # Set lockfile to inform cronjobs about the running daemon
       RETVAL="$?"
       if [ $RETVAL -eq 0 ]; then
       touch /var/lock/subsys/mailscanner
       rm -f $stopped_lockfile
       fi
       if [ $RETVAL -eq 0 ]; then
       echo "MailScanner Started"
       fi
       }
       #
       # Function that stops the daemon/service
       #
       do_stop()
       {
       # Return
       #   0 if daemon has been stopped
       #   1 if daemon was already stopped
       #   2 if daemon could not be stopped
       #   other if a failure occurred
       #start-stop-daemon --stop --retry=TERM/30 --name $NAME
       start-stop-daemon --stop --retry=TERM/30 --pidfile "$PIDFILE"
       RETVAL="$?"
       [ "$RETVAL" = 2 ] && return 2
       # Remove lockfile for cronjobs
       if [ $RETVAL -eq 0 ]; then
       rm -f /var/lock/subsys/mailscanner
       touch $stopped_lockfile
       fi
       if [ $RETVAL -eq 0 ]; then
       echo "MailScanner Stopped"
       fi
       }
       #
       # Function that sends a SIGHUP to the daemon/service
       #
       do_reload() {
       #start-stop-daemon --stop --signal 1 --quiet --name $NAME
       start-stop-daemon --stop --signal 1 --quiet --pidfile "$PIDFILE"
       return 0
       }
       case "$1" in
       start)
       [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
       do_start
       case "$?" in
       0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
       2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
       esac
       ;;
       stop)
       [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
       do_stop
       case "$?" in
       0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
       2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
       esac
       ;;
       restart|force-reload)
       #
       # If the "reload" option is implemented then remove the
       # 'force-reload' alias
       #
       log_daemon_msg "Restarting $DESC" "$NAME"
       do_stop
       case "$?" in
       0|1)
       do_start
       case "$?" in
       0) log_end_msg 0 ;;
       1) log_end_msg 1 ;; # Old process is still running
       *) log_end_msg 1 ;; # Failed to start
       esac
       ;;
       *)
       # Failed to stop
       log_end_msg 1
       ;;
       esac
       ;;
       *)
       echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
       exit 3
       ;;
       esac
     exit 0
    For the permission, do you think my permissions are insecure ? they seem to work fine but I was unsure
     
    Last edited: Jul 4, 2013
  3. Chluz

    Chluz New Member

    Hi again,

    I want to thank you again for all your help (I feel I don't say it enough :) )

    In any case, I must have done something odd, as when I set the same perms as you all my messages cannot be processed by mailscanner. If I set the write permission for the group on folder /var/spool/MailScanner/quarantine in addition to what you showed, everything works
     
  4. Chluz

    Chluz New Member

  5. anandx

    anandx Member

  6. Chluz

    Chluz New Member

    I managed to fix the problem with setuptools.egg-info by just remloving the file and reinstalling setup tools :

    sudo rm /usr/lib/python2.6/dist-packages/setuptools.egg-info
    sudo apt-get install --reinstall python-setuptools
     

Share This Page