You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by Tim Litwiller <ti...@litwiller.net> on 2005/05/27 23:58:10 UTC

sa-learn from imap

I needed to get this working this week and found the RemoteImapFolder 
wiki page. I decided to use that method
here are the steps I did to make this work for me. I use qmail instead 
of cyrus so needed to change the redelivery method also.  I don't have a 
username on the wiki and thought I see if anyone here had any 
improvements before I add it to the wiki.

Create a .fetchmailrc file in the users home that the cron script will 
run from or maybe in /etc
---
poll mail.domain.com
     user 'user1' there with password 'password' is user1 here
     user 'user2' there with password 'password' is user2 here
---

Replace the mail server name on the first line and the 2 usernames and 
the password on each of the users lines, Duplicate for each user you 
want to learn from. What this does is make the script below not stop and 
ask for a password when it is run.

It is run like this
./learnfromexchange user FOLDERNAME mail.bccks.com (spam|ham|forget)

For the server I run we use sitewide bayes - so I talked to 4 of the 
users and got permission to learn from their spam and a non-personal 
good email folder that they will drag email to.

Then I run the script from cron
02 4 * * * root /root/learnfromexchange user1 SPAM mail.domain.com spam
12 4 * * * root /root/learnfromexchange user1 CLEAN mail.domain.com ham
22 4 * * * root /root/learnfromexchange user2 SPAM mail.domain.com spam
32 4 * * * root /root/learnfromexchange user2 CLEAN mail.domain.com ham


So here is the script it has check for the correct ammount or arguments 
- but not yet for valid values on the arguments - since I only needed to 
run it from cron

#/bin/bash
ARGS=4         # Script requires 4 arguments.
E_BADARGS=65  # Exit value if incorrect number of args passed.

test $# -ne $ARGS \
  && echo "---------------------------------------------------------" \
  && echo "Usage: `basename $0` username emailfolder type" \
  && echo "Like: learnfromexchange.sh jim SPAM mail.domain.com spam" \
  && echo "---------------------------------------------------------" \
  && exit $E_BADARGS

username=$1
spamfolder=$2
imapserver=$3
foldertype=$4
/usr/bin/fetchmail -a -k -s -n -u $username -p IMAP \
  --folder $spamfolder -m 'bash -c "/usr/bin/tee \
  >(/usr/bin/sa-learn --spam --single 
/dev/null)|/usr/bin/spamc|/usr/bin/rsmtp"'\
  $imapserver