#!/bin/sh PATH="/bin:/usr/bin:/sbin:/usr/sbin" UNPK=/usr/bin/uudeview HEAD=/usr/bin/mimeheaders SCAN=/usr/share/vscanx/vscanx VERS=`$SCAN --version | grep "Virus data file"` MAIL="virus@kdev.it" SEND=/usr/sbin/sendmail BASE=/var/spool/avirus DIR=$BASE/$$.attachments MSG=$BASE/$$.message LOG=$BASE/$$.log SED=`echo $BASE/$$. | sed 's/\//\\\\\//g'` trap "rm -rf $MSG $LOG.pkg $LOG.scn $LOG.rcp $DIR" 0 1 2 3 15 FROM="$1" shift RCPT="$@" if [ -z "$RCPT" ] ; then echo "Filtering for unknown recipient" exit 69 fi _virus () { echo "From: \"Antivirus Agent\" <$MAIL>" echo "To: $FROM $RCPT" echo "Cc: \"Antivirus Agent\" <$MAIL>" echo "Subject: Antivirus action notification" echo "X-Antivirus-Data: $VERS" echo "" echo "CONTROLLO ANTIVIRUS di KDEV (Kanta Development)." echo "Attenzione, un messaggio a voi destinato o da voi inviato e' risultato positivo " echo "al controllo antivirus del nostro mail server. Il messaggio contenente " echo "il virus E' STATO BLOCCATO. Contattate il MITTENTE indicato qui sotto." echo "" echo "This is the antivirus agent for KDEV (Kanta Development)." echo "We are sorry, but apparently a message was positively recognized" echo "as containing a virus and therefore has been deleted from the" echo "transmit queue. Please contact the E-Mail sender reported below!" echo "The antivirus scanner reported:" echo "" echo "MITTENTE - MESSAGE FROM:" echo "> $FROM" echo "" echo "DESTINATARIO - MESSAGE RECIPIENT(s):" for NAME in $RCPT ; do echo "> $NAME" ; done echo "" echo "" echo "" echo "" echo "Antivirus log:" echo "> $VERS" cat $LOG.scn | sed 's/^/> /g' | sed "s/$SED//g" echo "> Error condition $1" echo "" echo "Message headers:" cat $MSG | $HEAD "> " echo "" echo "Unpacking log:" cat $LOG.pkg | grep -v "^$" | sed 's/^/> /g' | sed "s/$SED//g" echo "." } _warning() { echo "attenzione" } _spam () { echo "From: \"Anti-Spam Agent\" <$MAIL>" echo "To: $FROM" echo "Subject: Antispam action notification" echo "" echo "CONTROLLO ANTISPAM performed by KDEV" echo "Attenzione, un messaggio da voi inviato e' risultato positivo " echo "al controllo antispam del nostro mail server. Il messaggio ritenuto UCE Spam " echo "E' STATO BLOCCATO." echo "" echo "MITTENTE - MESSAGE FROM:" echo "> $FROM" echo "" echo "" echo "DESTINATARIO - MESSAGE RECIPIENT(s):" echo "> $RCPT" echo "." } cd $BASE || { echo "Cannot enter filtering area" ; exit 75 ; } mkdir $DIR || { echo "Cannot allocate filtering space" ; exit 75 ; } cat > $MSG || { echo "Cannot store message for filtering" ; exit 75 ; } #Antispam engine watch for user preferences ORI=$LOG.rcp FUO=`echo $RCPT > $ORI 2>&1` # cross your fingers USERNAME=`awk -F @ '{print $1}' $ORI` FLD="/users/$USERNAME/.spamprefs" if [ -f $FLD ] ; then echo "" else FLD="/private/etc/mail/spamassassin/local.cf" fi # filter with spamassassin SPAMASS=`/usr/bin/spamassassin --prefs-file=$FLD < $MSG > $LOG.spm 2>&1` STOP=`grep "X-Spam-Flag: YES" $LOG.spm` if [ -z "$STOP" ] ; then echo no spam else _spam | $SEND -f "" $FROM exit 0 fi $UNPK -i -a +o -q -t -d -p $DIR $MSG > $LOG.pkg 2>&1 RET="$?" if test "$RET" -ne "0"; then echo "Unable to unpack message for virus scanning. (RET $RET)" #exit 75; #_warning $? | $SEND -f "" $FROM $MAIL fi $SCAN --macro-heuristics --recursive $MSG $DIR > $LOG.scn 2>&1 \ || { _virus $? | $SEND -f "" $FROM $RCPT $MAIL ; exit 0 ; } # Send message... { echo "X-Antivirus-Data: $VERS" ; cat $MSG ; } | $SEND -f $FROM $RCPT exit 0