Portál AbcLinuxu, 19. listopadu 2025 14:12
#!/bin/sh
#----------------------------------------
# FUNCTIONS
#----------------------------------------
function mylog()
{
MYLOG_CURRENT=`date "+%Y-%m-%d %H:%M:%S"`
echo "$MYLOG_ID $MYLOG_CURRENT $1" >> $MYLOG
}
#----------------------------------------
# PREPARE DIRECTORIES AND VARIABLES
#----------------------------------------
MYLOG=/var/log/bogofilter.log
MYDIR=/data/scripts/bogowrap
MBXS_SPAM=$MYDIR/mbxs_spam
MBXS_NOSPAM=$MYDIR/mbxs_nospam
export PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin"
export WORDLIST_DIR=$MYDIR/wordlists
case "$1" in
"-l")
#--------------------------------------------
# LEARNING
#--------------------------------------------
mkdir $WORDLIST_DIR 2> /dev/null
mkdir $WORDLIST_DIR.tmp 2> /dev/null
rm -f $WORDLIST_DIR.tmp/*.db 2> /dev/null
[ "$2" = "-e" ] || cp -f $WORDLIST_DIR/* $WORDLIST_DIR.tmp/ 2> /dev/null
mylog "Bogofilter learning started (prepare)."
SPAM_COUNT=`find $MBXS_SPAM -follow | grep -c ""`
mylog "Bogofilter learning of $SPAM_COUNT spam messages started."
find $MBXS_SPAM -follow | egrep "\.$" | nice -n 10 awk '{system("cat \""$1"\" | \
bogofilter -s -d "ENVIRON["WORDLIST_DIR"]".tmp")}'
mylog "Bogofilter learning of $SPAM_COUNT nospam messages started."
[ $? -eq 0 ] && find $MBXS_NOSPAM -follow -printf "%TY%Tm%Td %p\n" | egrep "\.$" | sort | \
tail -$SPAM_COUNT | nice -n 10 awk '{system("cat \""$2"\" | \
bogofilter -n -d "ENVIRON["WORDLIST_DIR"]".tmp")}'
if [ $? -eq 0 ]
then
rm -f $WORDLIST_DIR/goodlist.db 2> /dev/null
bogoutil -d $WORDLIST_DIR.tmp/goodlist.db | bogoutil -l $WORDLIST_DIR/goodlist.db
rm -f $WORDLIST_DIR/spamlist.db 2> /dev/null
bogoutil -d $WORDLIST_DIR.tmp/spamlist.db | bogoutil -l $WORDLIST_DIR/spamlist.db
fi
mylog "Bogofilter learning finished."
exit $?
;;
"-a")
#--------------------------------------------
# ANALYZING
#--------------------------------------------
SPAM=No
MYFILE=$MYDIR`tempfile`
mkdir $SPAM_TREZOR 2> /dev/null
cp "$2" "$MYFILE"
bogofilter -I "$MYFILE" -O "$2" -p -d $WORDLIST_DIR
[ $? -eq 0 ] && SPAM=Yes
mylog "Bogofilter analysis of $2 done (X-Bogosity: $SPAM)."
rm -f "$MYFILE"
;;
*)
echo "Syntax : bogowrap [-l [-e]|-a ]"
echo "Options : -l ... learn"
echo " -a ... analyze message "
echo " -e ... learn and emty wordlists, used with -l"
exit 0
;;
esac
A idea na zaver. Proc vyse uvedeny princip pouzivat pouze na spam? Proc jej nevyuzit i pro bezne zatridovani zprav metodou 'by example'?
(Firebird 0.6)
Pouzivam jej priblizne pul roku a za tu doby jsem nemel jediny "dobry" mail spatne zarazeny do spamu a tak asi 1 spam za 14 dni klasifikovany jako "dobry". Slusna uspesnost ne? Zvlast kdyz me v dobry den prijde i 30 spamu...
maps_rbl_domains = relays.ordb.org, bl.spamcop.net, dnsbl.njabl.orgna inych mailserveroch tiez jednoducho nastavitelne. bye
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.