Dear Bron, dear Andrew,

well, I left the ugly problem unsolved for a couple of weeks ;-)

I think I've posted my "Cyrus::IndexFile" perl module to the list
before, but I'll attach it here as well.  This allows you to parse
through indexes a lot more efficiently, and 'cyr_dbtool' (see the
patches at http://cyrus.brong.fastmail.fm/) is great for seeing the
contents of mailboxes.db.  Unfortunately, most of our tools are only
for cyrus 2.3+.  We were running a fairly recent CVS even back when I
started work on dbtool, and that was one of my first projects at
FastMail.

I've had to do the same job, and I did it by reading the directory
contents and listing UIDs via IMAP, then removing any that didn't
match.  There's no need to move anything.

$imap->select("INBOX.Trash");
ls /var/spool/imap/b/user/brong/Trash/

You'll need some logic to map from mailbox names to on-disk paths of
course, but I think this is a cleaner solution than the copying one, and
as other people have noted, this doesn't break flags (including \Sent)

At http://www.bueker.net/cyrus/remove_old_uids.pl the script I've finally used is available. It's based on Andrew's copy_user_mailbox.pl. Sorry for my rather poor programming skills -- but as far as I can see it works fine ;-)

Thanks again for your help!

kind regards,
  Thorsten
----
Cyrus Home Page: http://cyrusimap.web.cmu.edu/
Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to