When I upgraded to Cyrus IMAP v2.2.3 from an age old ESYS version (a
commercial knock off of a v.1.x).  I used imapsync to move the mail spools
from one server to another and then after all was up and going a crash caused
the mailboxes database to be irreparably damaged.  Yikes, the "-m"
functionality is diabled in the reconstruct utility.

I wrote the following perl script to mine the information necessary to
rebuild the mailboxes database and write it to a file, and so I thought I'd
pass it on.  I only use a single default partition (some 280GB fully
mirrored).  If someone has multiple partitions, it would not be that big a
task to have the program read /etc/imapd.conf and do each partition
separately.


#! /usr/bin/perl

use strict;

my $SPOOL = '/var/spool/imap';

foreach my $ltr ( 'A' .. 'Z' ) {
  chdir "${SPOOL}/${ltr}/user";

  my @dirs = `find . -type d`;

  foreach my $dir ( @dirs )
        {
          chomp $dir;

          # Things to ignore
          next if $dir eq ".";
          next unless -f "${dir}/cyrus.header";

          # ACLs are the last line in the cyrus.header file
          my @cyrus_header = `cat \"${dir}/cyrus.header\"`;
          my $acl = pop @cyrus_header;
          chomp $acl;

          #
          # Replace the leading "./" returned
          # by the find command with "user."
          #

          $dir =~ s/^\.\//user./;

          #
          # Replace directory path slashes
          # ("/") with dots (".")
          #

          $dir =~ s/\//./g;

          # Write result to STDOUT
          print $dir, "\tdefault\t",  $acl, "\n";
        }
}


-- 
Rob Tanner
UNIX Services Manager
Linfield College, McMinnville OR

---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to