#!/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 *****