Re: copying and renaming mailboxes to clean up directories

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 02, 2007 at 03:11:03PM +0200, Thorsten B?ker wrote:
> Dear all,
> But wondering about the heavily increased amount of partition in use, I
> noticed that my call of rsync lacked of the "--delete" attribute. In 
> consequence the restored mailbox directories include not only the 
> messages, which should be in the inbox, but all files beeing in the 
> directories during the backup cronjobs. (My mailbox sizes ~700 MB 
> instead of ~100 MB.)
> 
> With regard to backup performance I'd like to clean up the relevant
> directories by ensuring uniformity of the inbox according to the Cyrus
> mailbox database and the files in the mailbox directory.
> 
> In the wiki I found Andrew's collection of scripts [2] and had a try. My 
> intention is/was to firstly manually select mailbox directories, which 
> contain much too much unneeded files -- mainly mailboxes used via imap. 
> After temporarily stopping mail delivery and mailbox access, each chosen 
> mailbox might be renamed and its contents copied to a new mailbox of its 
> initial name. After starting mail delivery and access again, the 
> mailboxes and directories containing wrong fails might be deleted at all.
> 
> But, as usual, the idea doesn't work yet. A first try to copy the
> existing mailbox "thorsten" to "thorsten_neu" leads to the following:

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)

Bron.
----
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

[Index of Archives]     [Cyrus SASL]     [Squirrel Mail]     [Asterisk PBX]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [KDE]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux