#!/bin/sh ROOT_MAILDIR=/var/vmail/localhost/admin/ QUARANTINE_DIR=${ROOT_MAILDIR}.spam.resend/cur/ SA_LEARN_DIR=${ROOT_MAILDIR}.spam.sa-learn-ham/new/ EXIM=/usr/local/sbin/exim [ ! -x ${EXIM} ] && EXIM=/usr/sbin/exim [ ! -x ${EXIM} ] && (echo "exim binary file not found" ; exit) FORMAIL=/usr/local/bin/formail [ ! -x ${FORMAIL} ] && FORMAIL=/usr/bin/formail [ ! -x ${FORMAIL} ] && (echo "formail binary file not found" ; echo "please install procmail" ; exit) if [ ! -z "`ls -1 ${QUARANTINE_DIR}* 2>/dev/null`" ] ; then for msg in ${QUARANTINE_DIR}* ; do MAIL_FROM=`/usr/bin/perl -n -e 'if (/^Return-path: <(.+)>$/i) { print($1); exit(0);}' < $msg` if [ ! -z "${MAIL_FROM}" ] ; then RCPT_TO=`/usr/bin/perl -n -e 'if (/^X-Spam-Original-Recipients: (.+)$/i) { $rcpts = $1; s/\s//g; print($rcpts); exit(0);}' < $msg` [ -z "${RCPT_TO}" ] && RCPT_TO=`/usr/bin/perl -n -e 'if (/^X-Original-Recipients: (.+)$/i) { $rcpts = $1; s/\s//g; print($rcpts); exit(0);}' < $msg` if [ ! -z "${RCPT_TO}" ] ; then /bin/cat $msg \ | ${FORMAIL} -R X-Spam-Action X-Spam-Action-Old \ | ${FORMAIL} -R X-Spam-Flag X-Spam-Flag-Old \ | ${FORMAIL} -R X-Spam-Report X-Spam-Report-Old \ | ${FORMAIL} -R X-Spam-Status X-Spam-Status-Old \ | ${FORMAIL} -R X-Quarantined X-Quarantined-Old \ | ${FORMAIL} -R X-Quarantine-Sender-Verify X-Quarantine-Sender-Verify-Old \ | ${FORMAIL} -R X-SpamTest-Envelope-From X-SpamTest-Envelope-From-Old \ | ${FORMAIL} -R X-SpamTest-Group-ID X-SpamTest-Group-ID-Old \ | ${FORMAIL} -R X-SpamTest-Info X-SpamTest-Info-Old \ | ${FORMAIL} -R X-SpamTest-Method X-SpamTest-Method-Old \ | ${FORMAIL} -R X-SpamTest-Rate X-SpamTest-Rate-Old \ | ${FORMAIL} -R X-SpamTest-Status X-SpamTest-Status-Old \ | ${FORMAIL} -R X-SpamTest-Status-Extended X-SpamTest-Status-Extended-Old \ | ${FORMAIL} -R X-SpamTest-Version X-SpamTest-Version-Old \ | ${EXIM} -v -f ${MAIL_FROM} ${RCPT_TO} RETVAL=$? [ $RETVAL -eq 0 ] && /bin/mv $msg ${SA_LEARN_DIR} fi fi done fi