diff -r 000000000000 -r 2a5f2464f8c6 imap.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imap.pm Fri Nov 04 06:29:26 2005 +0000 @@ -0,0 +1,44 @@ + +sub createMbox($) { + my $user = shift; + my $mbox = "user/$user"; + + verbose(" imap:"); + my $imap = connectImap(); + + $imap->setacl($mbox, $Cf->imap_admin => "lrswipcda"); + if ($imap->list($mbox)) { + verbose("(exists)"); + } else { + $imap->create($mbox) or die ":$@: $mbox\n"; + $imap->setquota($mbox, STORAGE => 1024 * $Cf->imap_quota) or die ":$@: $mbox\n"; + } + verbose("ok"); + +} + +sub removeMbox($) { + my $user = shift; + my $mbox = "user/$user"; + verbose(" imap:"); + my $imap = connectImap(); + + $imap->setacl($mbox, $Cf->imap_admin, "rc"); + + if (not $imap->exists($mbox)) { + verbose("does not exist"); + } else { + $imap->delete($mbox) or die "$@"; + } + verbose("ok"); +} + + +sub connectImap() { + my $imap = new Cyrus::IMAP::Admin($Cf->imap_server) or die "$@"; + $imap->authenticate(-user => $Cf->imap_admin, + -password => $ENV{IMAP_PASS} || askPass("IMAP (" . $Cf->imap_admin .") password: ")); + + return $imap; +} +