121 lines
3.4 KiB
Django/Jinja
121 lines
3.4 KiB
Django/Jinja
#!/usr/bin/perl -w
|
||
|
||
#
|
||
# This will create a new mailbox and set a quota on the new user. Just be
|
||
# sure that you installed the Cyrus::IMAP perl module. If you did
|
||
# 'make all && make install' or installed Cyrus using the FreeBSD ports you
|
||
# don't have to do anything at all.
|
||
#
|
||
# Change the params below to match your mailserver settins, and
|
||
# your good to go!
|
||
#
|
||
# Author: <amram@manhattanprojects.com>
|
||
# minor changes by Enrique <info@caribenet.com>
|
||
|
||
use Cyrus::IMAP::Admin;
|
||
#
|
||
# CONFIGURATION PARAMS
|
||
#
|
||
my $cyrus_server = "localhost";
|
||
my $cyrus_user = "{{ cyrus_admin_user }}";
|
||
# MdP d<>fini dans le LDAP
|
||
my $cyrus_pass = "{{ cyrus_admin_pass }}";
|
||
|
||
# 10 Megs
|
||
my $quota_size = "10240";
|
||
my $mechanism = "login";
|
||
|
||
#
|
||
# EOC
|
||
#
|
||
|
||
if (!$ARGV[0]) {
|
||
die "Usage: $0 [user to add] \n";
|
||
} else {
|
||
$newuser = "$ARGV[0]"
|
||
}
|
||
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);
|
||
if ($cyrus->error) {
|
||
print STDERR "Error: ", $mailbox," ", $cyrus->error, "\n";
|
||
} else {
|
||
print "Created Mailbox: $mailbox \n";
|
||
}
|
||
}
|
||
|
||
sub setQuota {
|
||
my ($user) = @_;
|
||
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);
|
||
if ($cyrus->error) {
|
||
print STDERR "Error: ", $mailbox," ", $cyrus->error, "\n";
|
||
} else {
|
||
print "Setting Quota: $mailbox at $quota_size \n";
|
||
}
|
||
}
|
||
|
||
sub subscribe {
|
||
my ($user, $pwd, $subfolder) = @_;
|
||
my $cyrus = Cyrus::IMAP::Admin->new($cyrus_server);
|
||
print $user." - ".$pwd." - ".$subfolder."\n";
|
||
$cyrus->authenticate($mechanism,'imap','',$user,'0','10000',$pwd);
|
||
$cyrus->subscribe("INBOX.".$subfolder);
|
||
if ($cyrus->error) {
|
||
print STDERR "Error: ", $subfolder," ", $cyrus->error, "\n";
|
||
} else {
|
||
print "Subscription $subfolder OK ! \n";
|
||
}
|
||
}
|
||
|
||
sub setacl{
|
||
my ($user,$admin) = @_;
|
||
$cyrus = Cyrus::IMAP::Admin->new($cyrus_server);
|
||
$cyrus->authenticate($mechanism,'imap','',$cyrus_user,'0','10000',$cyrus_pass);
|
||
$cyrus->setacl("user.".$user, $admin => "all");
|
||
if ($cyrus->error) {
|
||
print STDERR "Error: ", $user," ", $cyrus->error, "\n";
|
||
} else {
|
||
print "Set ACL at $admin for $user OK!\n";
|
||
}
|
||
}
|
||
#print "Adding User: ", $newuser, "\n";
|
||
# Cr<43>ation des bo<62>tes aux lettre
|
||
createMailbox($newuser,'INBOX');
|
||
createMailbox($newuser,'Sent');
|
||
createMailbox($newuser,'Drafts');
|
||
createMailbox($newuser,'Trash');
|
||
createMailbox($newuser,'Junk');
|
||
|
||
# Quota
|
||
setQuota($newuser);
|
||
|
||
# Attribution des droits
|
||
setacl($newuser,'cyrus');
|
||
setacl($newuser,'mailadmin');
|
||
|
||
# Subscription aux dossiers
|
||
subscribe($newuser,'{{ plain_ldap_passwd }}','Sent');
|
||
subscribe($newuser,'{{ plain_ldap_passwd }}','Drafts');
|
||
subscribe($newuser,'{{ plain_ldap_passwd }}','Trash');
|
||
subscribe($newuser,'{{ plain_ldap_passwd }}','Junk');
|
||
|
||
|
||
# This portion below will set a password for the user you wanted to
|
||
# add. The default password that it sets is "123{USERNAME}123". You
|
||
# can obviously change it afterwards by doing "saslpasswd2 {USERNAME}"
|
||
|
||
#system "echo 123". $newuser ."123 > .saslpass.tmp";
|
||
#system "saslpasswd2 -p $newuser < .saslpass.tmp";
|
||
#print "Generated Password: Completed \n";
|
||
#unlink(".saslpass.tmp");
|