All: Could you set zimbraMailPurgeSleepInterval to 1h or 1m please? (1m will be the new default)
To explain it better: There really is no concept of a "purge interval". The purge thread is constantly running, purging mailboxes in memory, one at a time. Between every one-two mailboxes it sleeps for the interval specified by zimbraMailPurgeSleepInterval. I have much fewer mailboxes on my server so 1d is fine for me - set accordingly after you work out the math

This is way more robust than the old method & allows for spreading the load out overtime, which is especially nice for larger setups.
Work on this was done via
Bug 13435 - User-definable expiration policy for systems folders where PurgeThread was implemented, which iterates all the mailboxes on the server and purges them one at a time. Mailboxes are only purged if they're loaded into the server cache & the thread sleeps between subsequent purges.
In short, the current mailbox purge algorithm only affects mailboxes that are in memory - as the theory is that if a mailbox is not in memory, it's not being accessed, not receiving mail, and therefore has less of a need to be purged.
Bug 20720 - Guarantee that mailboxes will be purged was filed for the issue of wanting a double check - possibly by making use of a zimbraMailLastPurgedTimestamp.
And yes zmpurgemessages, which used to produce some heavier load, was removed from cron/libexec in
Bug 20705 - Remove zmpurgemessages
Rob: Matt & I have marked
Bug 25018 - Spam not being purged from junk folders a dupe for now, as your description when you opened it didn't give mention that you had already tried setting the interval:
Quote:
|
Originally Posted by rob in bug 25018 With a COS setting of Spam Lifetime = 30d in the Admin web interface, I am seeing older spam accumulate in the junk folders. This started after an upgrade
from 4.5.10 to 5.0.2. |
Of course then I saw your forum post - should this not work we'll reopen/redirect.
If you're curious the attribute properties read:
Quote:
<attr id="542" name="zimbraMailPurgeSleepInterval" type="duration" cardinality="single" optionalIn="globalConfig,server" flags="serverInherited,domainAdminModifiable" callback="MailboxPurge">
<globalConfigValue>0</globalConfigValue>
<desc>Sleep time between subsequent mailbox purges. 0 means that mailbox purging is disabled.</desc>
</attr>
|
I generally set it at the server level, do note that if at any point you set server, it won't inherit from global anymore till it's reset "" - server overrides global - so for instance:
zmprov ms server.domain.com zimbraMailPurgeSleepInterval 1h
overrides:
zmprov mcf zimbraMailPurgeSleepInterval 1m
You can check your values by:
zmprov gacf | grep zimbraMailPurgeSleepInterval
zmprov gs server.domain.com | grep zimbraMailPurgeSleepInterval
To find out who last got cleaned up simply run:
zmprov gs server.domain.com | grep zimbraMailLastPurgedMailboxId
5.0.3 should have:
Bug 24823 - expose zimbraMailPurgeSleepInterval in Admin Console. & solve this for others via
Bug 23842 - Purging off by default in 5.0 (need upgrade step) -default will be 1m.