Ich habe mal einen Trainer für Spamassassin gebastelt. Er sucht in allen Postfächern nach Ordnern, die mit "Junk" oder "Spam" beginnen und behandelt den Inhalt als Spam-Mails. Wobei nur der Spamassassin-Teil des Postfachs trainiert wird.
Ebenso trainiert er den Spamassassin, dass alle Mails im Posteingang "Ham" sind. Das Aufräumen ist auch inkludiert.
Würde ich per Cron oder cron.daily einbinden.
Feedback und Verbesserungen sind jederzeit willkommen. Ich bin mir sicher, dass das Skript auch kürzer zu programmieren ist.
Bash
#!/bin/bash
#JUNK_FOLDERS=$(find /var/mail -type d -name '.Junk*')
#SPAM_FOLDERS=$(find /var/mail -type d -name '.Spam*')
# Find all folders beginning with "Junk" and treat contents as Spam --> train spamassassin
find /var/mail -type d -name '.Junk*' -print0 | while read -d '' -r JUNK;
do
echo "$JUNK"
_CONTRACT=$(echo $JUNK | awk -F/ '{ print $4 }')
_USER=$(echo $JUNK | awk -F/ '{ print $5 }')
if [ -d '/var/lib/spamassassin/${_CONTRACT}_${_USER}/' ]; then
echo $(sa-learn --progress --spam --dbpath /var/lib/spamassassin/${_CONTRACT}_${_USER}/ "$JUNK")
fi
done
# Find all folders beginning with "Spam" and treat contents as Spam --> train spamassassin
find /var/mail -type d -name '.Junk*' -print0 | while read -d '' -r SPAM;
do
echo "$SPAM"
_CONTRACT=$(echo $SPAM | awk -F/ '{ print $4 }')
_USER=$(echo $SPAM | awk -F/ '{ print $5 }')
if [ -d '/var/lib/spamassassin/${_CONTRACT}_${_USER}/' ]; then
echo $(sa-learn --progress --spam --dbpath /var/lib/spamassassin/${_CONTRACT}_${_USER}/ "$SPAM")
fi
done
# Treat all mails in the Inbox as Ham and train spamassassin
find /var/mail -mindepth 2 -maxdepth 2 -type d -print0 | while read -d '' -r HAM;
do
echo "${HAM}/"
_CONTRACT=$(echo $HAM | awk -F/ '{ print $4 }')
_USER=$(echo $HAM | awk -F/ '{ print $5 }')
if [ -d '/var/lib/spamassassin/${_CONTRACT}_${_USER}/' ] && [ -d '${HAM}/cur/' ]; then
echo "${HAM}/cur/"
echo $(sa-learn --progress --ham --dbpath /var/lib/spamassassin/${_CONTRACT}_${_USER}/ "${HAM}/cur/")
echo $(sa-learn --sync --dbpath /var/lib/spamassassin/${_CONTRACT}_${_USER}/)
fi
done
/usr/bin/sa-learn --sync
echo "Finished daily auto-learning of SpamAssassin."
Alles anzeigen