--- /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;
+}
+