cyrus 2.3.x and thunderbird 2.x delete issue
    Jo Rhett 
    jrhett at netconsonance.com
       
    Sun Apr 22 20:45:25 EDT 2007
    
    
  
Jo Rhett wrote:
> Do we really have to write a script to loop through all 
> of the accounts and fix the ACLs for every folder?
Well if you find yourself needing to do this (I did) the following 
script will save you a lot of time.  This could possibly use improvement 
to look for any write permissions instead of just the specific ones 
assigned to all mailboxes, but it solved our problem asap.
#!/usr/local/bin/perl
use strict;
use Cyrus::IMAP::Admin;
my $cyrus_pass = $ARGV[0];
# Flush immediately
$|=1;
my $cyrus = new Cyrus::IMAP::Admin( 'localhost' )
     || die Cyrus::IMAP::Admin->error();
$cyrus->authenticate( 'login', 'imap', '', 'root', '0', '10000', 
$cyrus_pass )
     || die $cyrus->error();
my $oldrights = 'lrswipkxtea';
my $newrights = 'lrswipkxtecda';
my( @results ) = $cyrus->listmailbox( '*' );
foreach my $result ( @results ) {
     my $mailbox = shift( @{ $result } );
     my %rights = $cyrus->listacl( ${mailbox} );
     while( my( $user, $rights ) = each %rights ) {
         # Fix the flags if they have all rights
         if( $rights eq $oldrights ) {
             # Now do the change
             print qq|Doing setacl( ${mailbox}, $user => $newrights )... |;
             $cyrus->setacl( ${mailbox}, $user => $newrights )
                 || die $cyrus->error();
             print "done.\n";
         }
     }
}
exit 0;
-- 
Jo Rhett
Network/Software Engineer
Net Consonance
    
    
More information about the Info-cyrus
mailing list