imap.pm
changeset 0 2a5f2464f8c6
child 48 36aca6fb0ab8
--- /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;
+}
+