Viene allegato un semplice script shell che filtra velocemente i messaggi di posta per un utente locale.
Non è ovviamente il metodo più adeguato per identificare dei virus su un messaggio di posta, ma è rapido ed efficace per spostare su una casella separata (variabile $JUNKFILE) tutta la posta con allegati con estensione: exe, com, bat, pif, dll, vbs, vba, scr che di fatto costituiscono la maggior parte dei virus più diffusi.
Per usarlo basta editare (o creare) il file .forward
dentro la propria home e scrivere qualcosa tipo:
"| /home/pizzi/bin/antivirus.sh"
(ovviamente usare il path e il nome dello script effettivo.
Modificare anche la variabile $UID adattandola al proprio username.
Lo script è stato realizzato in pochi minuti da Riccardo Pizzi (troppo pigro per postarlo personalmente su OpenSkills ;-) per gestire velocemente un carico inusuale di virus.
Ovviamente è fornito "AS IS" nessuno si prende alcuna responsabilità sul suo funzionamento.
#!/bin/sh
#
UID=pizzi
#
HOME=/home/$UID
SPOOLFILE=/var/spool/mail/$UID
JUNKFILE=$HOME/Mail/junked.mail
tmpf=/tmp/mfilter.$$
lockfile=/tmp/mfilter.lock
#
lower="abcdefghjkilmnopqrstuvwxyz"
upper="ABCDEFGHJKILMNOPQRSTUVWXYZ"
cat > $tmpf
junk=0
for attch in `head -200 $tmpf | grep "filename=" | tr -d "\"" | tr -s " " |
cut -d"=" -f2`
do
ext=`echo $attch | awk -F. '{ print $NF }' | tr $upper $lower`
case "$ext" in
exe) junk=1; break;;
com) junk=1; break;;
bat) junk=1; break;;
pif) junk=1; break;;
dll) junk=1; break;;
vbs) junk=1; break;;
vba) junk=1; break;;
scr) junk=1; break;;
*) junk=0;;
esac
done
######################### critical code ################
while true
do
if [ -f $lockfile ]
then
sleep 1
continue
fi
touch $lockfile
break
done
if [ $junk -eq 1 ]
then
cat $tmpf >> $JUNKFILE
else
cat $tmpf >> $SPOOLFILE
fi
rm $lockfile
######################### end critical code ################
rm -f $tmpf
exit 0