#!/bin/sh
#***** Initialize Variables *****
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/$USER/bin
# Passing a 1 deletes the messages in teach-isspam and teach-isnotspam after teaching completes
DELETE_TEACH_DATA="$1"
# Set home path
DA_HOME=/home/${USER}
# Set working directory
cd $DA_HOME/.spamassassin
# Send output to log file
exec > sa-learn.log
exec 2>&1
#***** Main *****
learn_Maildir()
{
FILESPAM=${1}/.INBOX.teach-isspam
FILEHAM=${1}/.INBOX.teach-isnotspam
if [ -e ${FILESPAM}/new ] || [ -e ${FILESPAM}/cur ]; then
echo "learning spam via ${FILESPAM}...";
sa-learn --no-sync --spam ${FILESPAM}/{cur,new}
fi
if [ -e ${FILEHAM}/new ] || [ -e ${FILEHAM}/cur ]; then
echo "";
echo "learning ham via $FILEHAM...";
sa-learn --no-sync --ham ${FILEHAM}/{cur,new}
fi
# Delete teach messages if requested
if [ "$DELETE_TEACH_DATA" -eq 1 ]; then
rm -f ${FILESPAM}/new/* ${FILESPAM}/cur/*
rm -f ${FILEHAM}/new/* ${FILEHAM}/cur/*
fi
}
# Learn from user mailbox
if [ -e $DA_HOME/Maildir ]; then
learn_Maildir $DA_HOME/Maildir
fi
# Learn from virtual user mailboxes
for d in `ls $DA_HOME/imap`; do
{
DOMAIN_DIR=${DA_HOME}/imap/${d}
if [ -h $DOMAIN_DIR ]; then
continue;
fi
for maildir in `ls -d ${DOMAIN_DIR}/*/Maildir 2>/dev/null`; do
{
learn_Maildir ${maildir}
};
done;
};
done;
# Commit learning to database
echo "";
echo "syncing...";
sa-learn --sync
# Show stats after commit
echo "";
echo "current status:"
sa-learn --dump magic
echo "Generated $(date)"
#***** End Script *****