Deleting messages "marked for deletion" older than X days
Gerard Beekmans
gbeekmans at achillesmedia.com
Tue Aug 19 10:37:18 EDT 2008
Hi Bron,
Yes, it sounds like that's what I'm looking for: running expunge
periodically.
Now there's one slight problem here: I can't just run expunge as it is.
I have users who periodically need to undelete messages. I'd like
expunge to only act on messages older than X days, giving people the
chance to undelete messages within that time period.
I'll check out some IMAP libraries. Perhaps one offers to obtain a list
of all messages with the \Deleted flag, then check its received time
stamp and do the math on that. If older than X, delete/expunge/whatever
it, else skip it.
Gerard Beekmans
IT Manager
Achilles Media
Tel: 403-678-1216 ext. 102
Email: gbeekmans at achillesmedia.com
Bron Gondwana wrote:
> On Mon, Aug 18, 2008 at 05:09:53PM -0500, Kenneth Marshall wrote:
>
>> In the manual page, the definition of the '-X' option seems to
>> do what you want:
>>
>> -X expunge-days
>> Expunge previously deleted messages older than expunge-days
>> (when using the "delayed" expunge mode). The default is
>> 0 (zero) days, which will expunge all previously deleted messages.
>>
>
> Messages go through the following life cycle in "traditional IMAP",
> example:
>
> Created (\Recent) - LMTP DELIVER (UID = 9)
> No flags () - A001 SELECT INBOX (clears the \Recent)
> Viewed (\Seen) - A002 UID FETCH 9 RFC822
> Deleted (\Deleted \Seen) - A003 UID STORE 9 +FLAGS (\Deleted)
> Purged (no message) - A004 EXPUNGE
>
> Now, what the -X option actually does is turns this into:
>
> Created (\Recent) - LMTP DELIVER (UID = 9)
> No flags () - A001 SELECT INBOX (clears the \Recent)
> Viewed (\Seen) - A002 UID FETCH 9 RFC822
> Deleted (\Deleted \Seen) - A003 UID STORE 9 +FLAGS (\Deleted)
> Purged (no index record)- A004 EXPUNGE
>
> but the file is still on disk, just the index record has been moved
> from the file cyrus.index to a new file cyrus.expunge. A week later:
>
> Cleaned up (no file) - cyr_expire -X 7
>
> The cyrus.expunge record and the actual spool file itself get deleted at
> this point. Until then you can un-delete the record using the
> "unexpunge" command in cyrus 2.3.X.
>
> ---
>
> I think what the original requestor was actually looking for is a tool
> that can run the "EXPUNGE" phase on a regular basis. As far as I'm
> aware there's nothing that ships with Cyrus that can do it. If I was
> writing something for the job I would make an admin IMAP connection to
> Cyrus and just cycle through the folders calling 'EXPUNGE' on them.
> Cheap and nasty, but it would do the trick. You can do this in any
> language with a TCP library, though something with an IMAP interface
> library would be nicer. I'd use Perl and Mail::IMAPTalk, but that's
> just because that's what I already use!
>
> Bron.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20080819/be349d5a/attachment.html
More information about the Info-cyrus
mailing list