[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: $!");