#!/bin/bash # 2015-11-02 add -u to sa-learn; change delete to doveadm expunge # 2015-07-21 update executable paths and dbpath # vmail home is organized like: /home/vmail/domains/example.com/bob/Maildir MAILDIR=Maildir SPAMDIR="SystemFolders.Spam" HAMDIR="SystemFolders.Ham" VMAILHOME=/home/vmail VMAILUSER=vmail LS=/usr/bin/ls RM=/usr/bin/rm SU=/usr/bin/su FIND=/usr/bin/find DOVEADM=/usr/bin/doveadm SALEARN=/usr/bin/sa-learn for domain in `$LS "$VMAILHOME/domains"`; do for user in `$LS $VMAILHOME/domains/$domain`; do if [ "$user" = "public_html" ]; then continue; fi dbpath="$VMAILHOME/domains/$domain/$user/.spamassassin" [ ! -d "$dbpath" ] && continue prefs="$VMAILHOME/domains/$domain/$user/.spamassassin/user_prefs" [ ! -f "$prefs" ] && continue echo "$user@$domain" #echo "$user@$domain user_prefs=$prefs dbpath=$dbpath" spamdir="$VMAILHOME/domains/$domain/$user/$MAILDIR/.$SPAMDIR" hamdir="$VMAILHOME/domains/$domain/$user/$MAILDIR/.$HAMDIR" saparm='' if [ -d "$spamdir/new" ]; then saparm="$saparm --spam $spamdir/new " fi if [ -d "$spamdir/cur" ]; then saparm="$saparm --spam $spamdir/cur " fi if [ -d "$hamdir/new" ]; then saparm="$saparm --ham $hamdir/new " fi if [ -d "$hamdir/cur" ]; then saparm="$saparm --ham $hamdir/cur " fi #echo $saparm if [ x"$saparm" != x ]; then # $SU -c "$SALEARN --dbpath=$dbpath --prefspath=$prefs $saparm" $VMAILUSER # $SALEARN --dbpath=$dbpath --prefspath=$prefs $saparm $SALEARN -u "$VMAILUSER" --dbpath "$dbpath" -p "$prefs" $saparm fi # delete using find # [ -d "$spamdir/new" ] && $FIND "$spamdir/new" -type f -delete # [ -d "$spamdir/cur" ] && $FIND "$spamdir/cur" -type f -delete # [ -d "$hamdir/new" ] && $FIND "$hamdir/new" -type f -delete # [ -d "$hamdir/cur" ] && $FIND "$hamdir/cur" -type f -delete # next two lines are for testing: # $DOVEADM -f table fetch -u "$user@$domain" 'date.received' mailbox "$SPAMDIR" # $DOVEADM -f table fetch -u "$user@$domain" 'date.received' mailbox "$HAMDIR" # delete using dovecot $DOVEADM expunge -u "$user@$domain" all mailbox "$SPAMDIR" $DOVEADM expunge -u "$user@$domain" all mailbox "$HAMDIR" done done