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