imap.pm
changeset 0 2a5f2464f8c6
child 48 36aca6fb0ab8
equal deleted inserted replaced
-1:000000000000 0:2a5f2464f8c6
       
     1 
       
     2 sub createMbox($) {
       
     3     my $user = shift;
       
     4     my $mbox = "user/$user";
       
     5 
       
     6     verbose(" imap:");
       
     7     my $imap = connectImap();
       
     8 
       
     9     $imap->setacl($mbox, $Cf->imap_admin => "lrswipcda");
       
    10     if ($imap->list($mbox)) {
       
    11 	verbose("(exists)");
       
    12     } else {
       
    13 	$imap->create($mbox) or die ":$@: $mbox\n";
       
    14 	$imap->setquota($mbox, STORAGE => 1024 * $Cf->imap_quota) or die ":$@: $mbox\n";
       
    15     }
       
    16     verbose("ok");
       
    17 
       
    18 }
       
    19 
       
    20 sub removeMbox($) {
       
    21     my $user = shift;
       
    22     my $mbox = "user/$user";
       
    23     verbose(" imap:");
       
    24     my $imap = connectImap();
       
    25 
       
    26     $imap->setacl($mbox, $Cf->imap_admin, "rc");
       
    27 
       
    28     if (not $imap->exists($mbox)) {
       
    29 	verbose("does not exist");
       
    30     } else {
       
    31 	$imap->delete($mbox) or die "$@";
       
    32     }
       
    33     verbose("ok");
       
    34 }
       
    35 
       
    36 
       
    37 sub connectImap() {
       
    38     my $imap = new Cyrus::IMAP::Admin($Cf->imap_server) or die "$@";
       
    39     $imap->authenticate(-user => $Cf->imap_admin,
       
    40 	-password => $ENV{IMAP_PASS} || askPass("IMAP (" . $Cf->imap_admin .") password: "));
       
    41 
       
    42     return $imap;
       
    43 }
       
    44