The Mailbox Purge Wiki entry mentions the following:

When a mailbox is purged, all attributes are considered. In cases where there's both a system and user-level policy is specified for the same folder, the shorter interval is used.
But what happens if one is set to ZERO (ie disabled)? Is ZERO shorter than 30d? Shouldn't admin settings trump user's settings?

By default, the following is set in our case, in particular for the Trash folder:

zmprov ga | grep -i Lifetime
zimbraAdminAuthTokenLifetime: 2h
zimbraAuthTokenLifetime: 1d
zimbraMailMessageLifetime: 0
zimbraMailSpamLifetime: 30d
zimbraMailTrashLifetime: 30d
zimbraPasswordLockoutFailureLifetime: 1h
zimbraPrefInboxReadLifetime: 0
zimbraPrefInboxUnreadLifetime: 0
zimbraPrefJunkLifetime: 0
zimbraPrefSentLifetime: 0
zimbraPrefTrashLifetime: 0
What we notice is that the Junk folder gets properly purged, however, the Trash folder does not. Most our users use a desktop client (Thunderbird).

Looking in the mailbox.log file, there is purge going on, but no way of telling which mailbox it is for - my guess it is the Junk folder as this one is getting purged:

2010-09-22 07:21:31,305 INFO  [MailboxPurge] [;mid=1883;] mailop - Deleting items: 279121,279122,279123,279124,279125,279126,279127,279153,279154,279155,279156,279157,279158,279159,279160,279161,279162,279163,279164,279165,279166,279167,279168,279169,279170.
SentLifetime works as we had a user that had tested an old copy of Zimbra desktop and somehow modified zimbraPrefSentLifeTime and messages in the Sent folder were getting purged.