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 verschieben
mv -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 ""


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to