Starting "delayed message expunge" on a large Cyrus 2.3.16 server.

Eric Luyten Eric.Luyten at vub.ac.be
Fri May 13 08:57:36 EDT 2011


Hello,


Cyrus 2.3.16, single server, single Cyrus instance, 65k users,
460k mailboxes, roughly 4.5 Terabytes of messages.
Empty annotations DB.

Every weekend, Spam and Trash mailboxes are already pruned using
a number of
   /usr/cyrus/bin/ipurge -f -d 45 -X user/${letter}%/Trash
   /usr/cyrus/bin/ipurge -f -d 45 -X user/${letter}%/Spam
runs.

I enabled delayed_expunge on a test address (separate imapd.conf)
and have grown accustomed to the mechanism of expunging-but-not-
actualy-deleting, listing 'expunge' metadata information and bringing
back sets of messages to the live mailbox.


The remaining issue now is to carry out the physical removal within
a reasonable timeframe.

I currently have the following entry in my cyrus.conf :

   delprune	cmd="cyr_expire -E 1" at=0055

which takes about six minutes, every night, to

   May 13 00:55:11 cyr_expire[21210]: Expunged 0 out of 0 messages from 0
mailboxes
   May 13 00:55:11  cyr_expire[21210]: duplicate_prune: pruning back 1 days
   May 13 01:01:45cyr_expire[21210]: duplicate_prune: purged 205245 out of
401016 entries


I think I'll have to launch several cyr_expire's one after another or in
parallel (will be done during night hours or weekends) to get the job
done before production load arrives.

Would it be okay to keep the current line and to add a number of entries
with the "-a" flag and each working on a subset of mailboxes ?

e.g.
    cmd="cyr_expire -E 1" at=0055
    cmd="cyr_expire -E 1 -a -p user/a" at=0115
    cmd="cyr_expire -E 1 -a -p user/b" at=0145
    cmd="cyr_expire -E 1 -a -p user/c" at=0215
    <...>

but, since the '-E' appears to be mandatory, how can I avoid re-working
the delivery.db ?

Are there any other pitfalls I appear to be unaware of ?



Regards,
Eric Luyten, Computing Centre VUB/ULB.




More information about the Info-cyrus mailing list