Cyrus stores its mail in a proprietary format (it's really just one file per message plus a database file to speed indexing). It's about a million times faster than any single-file message store I've seen. Of course, that prevents you from accessing the mail store directly, but I can't come up with a good reason you'd want to do that anyway.

Let me put it this way. I've got a Cyrus server running on a Pentium 166. I have a particular mailbox that has 45,000 messages in it. For a client that hasn't cached any information about that, it takes approximately (hang on, let's see 6 minutes to load (over a 100Mbps network). Of course, that's loading headers for all 45,000 messages, something I hope your webmail client isn't doing. Loading any number of messages takes the same amount of time, no matter what set it is. And on-server searching is fast, too. Searching for the word "test" in the subject took on the order of ten seconds (and returned about 300 results). And that's all on a Pentium 166 that's doing other stuff, too. And it's running on OpenBSD, which has a mmap bug which slows it down significantly compared to a Solaris or Linux machine.

Which, of course, doesn't help your archiving problem. You could write a little script of some nature that performed these IMAP commands:
. login username password

. SELECT INBOX
. SEARCH SINCE "1-Jun-2002"
<get message ids from output>
. CREATE June-Archive
. COPY <message ids> June-Archive
. STORE <message ids> FLAGS \Deleted
. EXPUNGE
That should be pretty easy using Expect. There are also IMAP modules for Perl (and probably also for Python, Tcl, Ruby, etc.) that should make that even easier. (My server responded to the above search in a fraction of a second on that 45,000 message mailbox, BTW.)
_________________________
Bitt Faulk