Am 17.02.2015 um 16:13 schrieb LuKreme:
OK, so I have spamass-milter running, but I need to train it. What is the proper way to do this?
cat /var/lib/spamass-milter/training/learn.sh #!/usr/bin/bash # Home-Directory und Name des Milter-Users SA_MILTER_HOME="/var/lib/spamass-milter" SA_MILTER_USER="sa-milt" # Sicherstellen dass wir nicht als 'root' laufen if test `whoami` = "$SA_MILTER_USER" then /bin/echo "" > /dev/null else/bin/echo "Das Script 'learn.sh' muss als Benutzer '$SA_MILTER_USER' aufgerufen werden"
exit fi # Wechsel in Home-Directory damit sich 'find' nicht beschwert cd $SA_MILTER_HOME # Check ob erster Parameter leer 'rebuild' oder eine Zahl ist SHOW_HELP="0"if [ "$1" == "rebuild" ] || [ "$1" == "" ] || [ `echo $((($1*2)/2))` == "$1" ]; then
# Kompletter Rebuild angefordert (Temp-Folder und Move nach Abschluss) if [ "$1" == "rebuild" ]; then # Temp-Folder sicherstellen in dem wir die neue Datenbank aufbauen BAYES_TEMP="$SA_MILTER_HOME/training/.temp" mkdir "$BAYES_TEMP" 2> /dev/null > /dev/null # Bayes-Reset /usr/bin/sa-learn --dbpath "$BAYES_TEMP/bayes" --clear # SPAM-Training MY_TIME=$(/usr/bin/date "+%d-%m-%Y %H:%M:%S") echo "$MY_TIME: Verarbeite SPAM Samples"nice -n 19 /usr/bin/sa-learn --dbpath "$BAYES_TEMP/bayes" --max-size=0 --no-sync --progress --spam "$SA_MILTER_HOME/training/spam/"
MY_TIME=$(/usr/bin/date "+%d-%m-%Y %H:%M:%S") echo "$MY_TIME: Synchronisiere Journal" nice -n 19 /usr/bin/sa-learn --dbpath "$BAYES_TEMP/bayes" --sync echo "" # HAM-Training MY_TIME=$(/usr/bin/date "+%d-%m-%Y %H:%M:%S") echo "$MY_TIME: Verarbeite HAM Samples"nice -n 19 /usr/bin/sa-learn --dbpath "$BAYES_TEMP/bayes" --max-size=0 --no-sync --progress --ham "$SA_MILTER_HOME/training/ham/"
MY_TIME=$(/usr/bin/date "+%d-%m-%Y %H:%M:%S") echo "$MY_TIME: Synchronisiere Journal" nice -n 19 /usr/bin/sa-learn --dbpath "$BAYES_TEMP/bayes" --sync echo "" # Neu generierte Datenbank in den eigentlichen Folder verschiebenmv -f "$BAYES_TEMP/bayes_seen" "$BAYES_TEMP/bayes_toks" "$SA_MILTER_HOME/.spamassassin/"
sync # Nur neue Samples direkt in die Live-Datenbank verarbeiten else # Default auf aktuellen Tag oder Parameter if [ "$1" == "" ]; then TRAIN_DAYS="1" else TRAIN_DAYS="$1" fi # SPAM-Training MY_TIME=$(/usr/bin/date "+%d-%m-%Y %H:%M:%S") echo "$MY_TIME: Verarbeite SPAM Samples"nice -n 19 /usr/bin/find "$SA_MILTER_HOME/training/spam/" -type f -mtime -$TRAIN_DAYS | xargs -r /usr/bin/sa-learn --max-size=0 --no-sync --spam
nice -n 19 /usr/bin/sa-learn --sync echo "" # HAM-Training MY_TIME=$(/usr/bin/date "+%d-%m-%Y %H:%M:%S") echo "$MY_TIME: Verarbeite HAM Samples"nice -n 19 /usr/bin/find "$SA_MILTER_HOME/training/ham/" -type f -mtime -$TRAIN_DAYS | xargs -r /usr/bin/sa-learn --max-size=0 --no-sync --ham
nice -n 19 /usr/bin/sa-learn --sync echo "" fi else SHOW_HELP="1" fi # Hilfe ausgeben if [ "$1" == "--help" ] || [ "$1" == "-h" ] || [ "$SHOW_HELP" == "1" ]; then echo "Bayes-Maintaining-Skript" echo "Usage:"echo " rebuild: Bayes komplett zuruecksetzen und anhand der Samples neu aufbauen"
echo " <days>: Alter der zu trainierenden Samples in Tagen (Default: 1)" exit fi # Training abgeschlossen MY_TIME=$(/usr/bin/date "+%d-%m-%Y %H:%M:%S") echo "$MY_TIME: Done" echo "" # Bayes-Statistik ausgeben nice -n 19 /usr/bin/sa-learn --dump magic echo "" # Listing des Userhomes ausgeben (Size 'bayes_toks' interessant) /usr/bin/ls -l -h --time-style=long-is "$SA_MILTER_HOME/.spamassassin/" echo ""
signature.asc
Description: OpenPGP digital signature