inbox very large

Maria McKinley maria at shadlen.org
Thu Feb 25 03:27:56 EST 2010


Dan White wrote:
> On 20/02/10 16:53 -0800, Maria McKinley wrote:
>> I have a mailbox that I send spam to, and I have been meaning to set 
>> up some filters, so that after a certain period of time, they get 
>> deleted. However, I got distracted, and now the inbox is very large. I 
>> was wondering if anyone has advice how to 1) get rid of all of the 
>> messages currently in the inbox that were sent before a certain date, 
>> and 2) how to set up a filter so that messages are moved to folders 
>> according to date, and then folders are deleted after a certain date.
> 
> Please make sure you have a good backup of your mailstore before performing
> any of the below.
> 
> For 1), use ipurge. I have the following in my cyrus.conf on one of my
> servers (in the EVENTS section):
> 
> purgetrash cmd="/usr/sbin/ipurge -f -d 14 */Trash" at=0301
> 
> Which purges all messages older than 14 days, in all users' Trash folders
> and runs every morning at 3:01am. See the man pages for ipurge and
> cyrus.conf for more details.
> 
> Sieve filters only act in incoming messages at time of delivery, and to my
> knowledge can't be used to do 2).
> 
> You could do what you're wanting in a roundabout way by renaming the
> mailbox in a periodic basis, recreating the original box, and deleting the
> rotated out box.
> 
> For instance, you could run a script like this from crontab, once a month:
> 
> #!/bin/sh
> cat $HOME/last-rotated.txt | grep -q `date +%m%y`
> if [ $? -eq 0 ]; then
>   exit
> fi
> MONTH=`date +%m`
> echo "a01 delete user/jsmith/archive-$MONTH
> a02 rename user/jsmith/archive user/jsmith/archive-$MONTH
> a03 create user/jsmith/archive
> a04 logout" | imtest -m plain -a cyrus -w <secret> localhost
> date +%m%y > $HOME/last-rotated.txt
> 

Got it working! In case anyone ever wants to do this, here is my setup. 
I have an account set up to collect all spam from all user accounts over 
some large spam number, so that users just have a small amount of spam 
(the stuff most likely to be incorrectly classified) in their spam 
folders. On this spam account, I have a sieve filter that puts all 
incoming mail into the archive folder. Then once a week I rotate the 
folders, deleting the folder from 4 weeks ago. So users have a month to 
complain to me about missing mail, and the folders are still almost 
manageable. Here is the script that I run once a week:

#!/bin/sh
cat $HOME/last-rotated.txt | grep -q `date +%U`
if [ $? -eq 0 ]; then
  exit
fi
WEEK=`date +%U`
DWEEK=`date --date='4 weeks ago' +%U`
echo "a01 delete user.test.archive-$DWEEK
a02 rename user.test.archive user.test.archive-$WEEK
a03 create user.test.archive
a04 logout" | imtest -m login -p imap -u cyrus -a cyrus -w <secret> 
localhost
date +%U > $HOME/last-rotated.txt

cheers,
maria


More information about the Info-cyrus mailing list