Scripts para o Cyrus Imap: Aplicar permissão e remover caixas postais

Precisei executar um procedimento para remover cerca de 400 caixas postais no Cyrus Imap, como certamente executar essa tarefa manualmente não seria nada adequado criei um script em Perl para remover essas caixas postais em lote, porém algumas em algumas caixas postais o usuário administrador não possuía as devidas permissões, compartilho com vocês os dois scripts, para aplicar as permissões corretas e remover as caixas postais desejadas:

(Os scripts também estão disponbilizados em https://github.com/fsschmidt/cyrusimap)

Aplicar permissão:

#!/usr/bin/perl -w
#Autor: Fabio S. Schmidt <fabio_schmidt@hotmail.com>
#Revisao em: 14/03/2013
#Script para aplicar permissao em caixas postais do Cyrus Imap
use Cyrus::IMAP::Admin;
#
# PARAMETROS DE CONFIGURACAO
#
my $cyrus_server = $ARGV[2];
my $cyrus_user = “admin”;
my $matricula = $ARGV[1];
my $mechanism = “login”;
if (!$ARGV[1]) {
    die “Usage: $0 SENHA MAILBOX SERVIDOR\n”;
} else {
    $cyrus_pass = “$ARGV[0]”;
}
print “Aplicando permissao ALL para o usuario $cyrus_user na caixa : $matricula. \n”;
aplicapermissao($matricula);
sub aplicapermissao {
    my ($user, $subfolder) = @_;
    my $cyrus = Cyrus::IMAP::Admin->new($cyrus_server);
    $cyrus->authenticate($mechanism,’imap’,”,$cyrus_user,’0′,’10000′,$cyrus_pass);
    $cyrus->setaclmailbox(“user.$matricula”, ‘expresso-admin’, ‘all’);
    if ($cyrus->error) {
        print STDERR “Error: “, $matricula,” “, $cyrus->error, “\n”;
    } else {
        print “Permissao concedida para o usuario $matricula.\n”;
    }
}
Remover caixa postal:
#!/usr/bin/perl -w
#Autor: Fabio S. Schmidt <fabio_schmidt@hotmail.com>
#Script para remover caixas postais do Cyrus Imap
use Cyrus::IMAP::Admin;
#
# PARAMETROS DE CONFIGURACAO
#
my $cyrus_server = $ARGV[2];
my $cyrus_user = “admin”;
my $matricula = $ARGV[1];
my $mechanism = “login”;
if (!$ARGV[1]) {
    die “Usage: $0 SENHA MAILBOX SERVIDOR\n”;
} else {
    $cyrus_pass = “$ARGV[0]”;
}
print “Removendo usuario : $matricula. \n”;
removeusuario($matricula);
sub removeusuario {
    my ($user, $subfolder) = @_;
    my $cyrus = Cyrus::IMAP::Admin->new($cyrus_server);
    $cyrus->authenticate($mechanism,’imap’,”,$cyrus_user,’0′,’10000′,$cyrus_pass);
    $cyrus->deletemailbox(“user.$matricula”);
    if ($cyrus->error) {
        print STDERR “Error: “, $matricula,” “, $cyrus->error, “\n”;
    } else {
        print “Usuario $matricula foi removido com sucesso.\n”;
    }
}
Para executar os comandos em lote, basta criar um laço FOR conforme o exemplo abaixo:
#!/bin/bash
# EXCLUIR CAIXAS POSTAIS DO CYRUS IMAP
echo “Excluindo caixas postais do CYRUS IMAP…”
for i in `cat remover_caixas.txt`
do perl remover_caixas.pl SENHA $i SERVIDOR
done
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s