srv-stage/templates/cyrus/createmailboxmailadmin.pl.j2
2025-01-19 20:23:14 +01:00

115 lines
3.3 KiB
Django/Jinja
Raw Blame History

#!/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";
my $newuser = "mailadmin";
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);
$cyrus->subscribe($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_mailadmin_passwd }}','Sent');
subscribe($newuser,'{{ plain_mailadmin_passwd }}','Drafts');
subscribe($newuser,'{{ plain_mailadmin_passwd }}','Trash');
subscribe($newuser,'{{ plain_mailadmin_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");