[lug-ld] cyrus scripten

Jochen Wambsganß mailings at wambsganss.net
So Okt 30 09:30:23 CET 2011


Hallo Gregor und alle anderen die das vielleicht mal brauchen.

So kann man cyrus auf der shell scripten:


*User anlegen mit perl*

======= Script Start =======

#!/usr/bin/perl

unless ($ARGV[0]=~/^[a-zA-Z0-9.\/]+$/) { error("Mit den übergebenen
Daten stimmt was nicht!\n$ARGV[0] ist kein gueltiger MBOX-Name\nAufruf:
$0 MBOXNAME MBOXGROESSE") }
unless (($ARGV[1]=~/\d{2}/) && ($ARGV[1]<=9999)) { error("Mit den
übergebenen Daten stimmt was nicht!\n$ARGV[1] isst kein erlaubter Wert
(Minimal 10 / Maximal 9999)\nAufruf: $0 MBOXNAME MBOXGROESSE") }

chomp($ARGV[0], $ARGV[1]);
$mbox=$ARGV[0];
$spaceusage=$ARGV[1];
$mboxspace=$ARGV[1]*1024;
$space=$ARGV[1];

use Cyrus::IMAP::Admin;
$cyrus = Cyrus::IMAP::Admin->new("localhost");
$cyrus->authenticate('login','imap','','admin','0','10000','password');

if ($cyrus->listmailbox($mbox)) { error("MBOX $mbox gibt es schon") }

$cyrus->createmailbox($mbox) || error("Konnte Mailbox $mbox nicht
erstellen: $!");
$cyrus->setquota($mbox, STORAGE, $mboxspace) || error("Konnte Quote von
$mbox nicht auf $mboxspace setzen: $@");

exit 0;

sub error {
 $message=shift;
 die "$message";
 exit 1;
}

======= Script Stop =======

Das Script wird dann einfach aufgerufen mit:

scriptname user/rekus 500

wenn der Mailboxtrenner mit . eingestellt ist:
scriptname user.rekus 500

Es wird eine Mailbox rekus angelegt mit einem Quota von 500MB

So kann man eine Mailbox löschen:
$cyrus->deletemailbox($mbox) || error("Konnte Mailbox $mbox nicht
loeschen: $!");

So setzt man ACLs
$cyrus->setaclmailbox($mbox, 'chef' => "read") || error("Konnte
Mailboxrechte von $mbox nicht auf read aendern: $!");