#!/usr/bin/perl
#
# Delete mailboxes and recreate!
#
#           2004 
# themes_AT_cutmasta_DOT_org
#
#

use IMAP::Admin;
use Cyrus::IMAP::Admin;

if(@ARGV != 2){
    print "Usage: $0 username passwd\n";
    exit(1);
}


my $user = $ARGV[0];
my $pass = $ARGV[1];
my $cyrus_server = "localhost";
my $cyrus_user = "mailadmin";
my $cyrus_pass = "secret";
my $quota = 2000;

createMailbox($user,'INBOX');
createMailbox($user,'sent-mail');
createMailbox($user,'trash');
createMailbox($user,'drafts');
createMailbox($user,'spam');
setQuota($user,$quota);
subscribe_folders($user,$pass);


sub subscribe_folders(){

    my ($uid,$passwd) = @_;
        
    $imap = IMAP::Admin->new('Server' => $cyrus_server,
   			     'Login' => $uid ,
     			     'Password' => $passwd,
     			     );
    
    $doit = $imap->subscribe("user.". $uid .".INBOX");
    $doit = $imap->subscribe("user.". $uid ."");
    $doit = $imap->subscribe("user.". $uid .".drafts");
    $doit = $imap->subscribe("user.". $uid .".sent-mail");
    $doit = $imap->subscribe("user.". $uid .".spam");
    $doit = $imap->subscribe("user.". $uid .".trash");
    
    $imap->close;
    
}

sub createMailbox {

    my ($user, $subfolder) = @_;
    
    my $cyrus = Cyrus::IMAP::Admin->new($cyrus_server);
    $cyrus->authenticate($mechanism,'imap','',$cyrus_user,'0','10000',$cyrus_pass);
    
    if ($subfolder eq "INBOX") {
	$mailbox = "user.". $user;
    } else {
	$mailbox = "user.". $user .".". $subfolder;
    } 
  
    $cyrus->create($mailbox);
    
}


sub setQuota {
    
    my ($user,$quota_size) = @_;
    
    my $cyrus = Cyrus::IMAP::Admin->new($cyrus_server);
    $cyrus->authenticate($mechanism,'imap','',$cyrus_user,'0','10000',$cyrus_pass);
    
    $mailbox = "user.". $user;
    $cyrus->setquota($mailbox,"STORAGE",$quota_size);
    
}
