API Ldap_Mail de gestion de messageries

Besoins :

Nous avons besoin d’une plateforme multi-domaines avec une gestion simple. L’annuaire LDAP permet un stockage hierarchique, rapide (quand c’est bien fait) et un acces standard. Des APIs sont disponibles dans n’importe quel langage, ce qui permettra de greffer un peu tout ce que l’on veut sur cet annuaire.

Structure de l'annuaire

o=mail
 |
 |_ou=lescampeurs
 | |_dc=lescampeurs.org
 |   |
 |   |_ou=users
 |   |
 |   |_ou=contacts
 |   |
 |   |_ou=public_folders
 |   |
 |   |_ou=shared_folders
 |
 |_ou=doudou
 | |_dc=doudouke.org
 | | |
 | | |_ou=users
 | | |
 | | |_ou=contacts
 | | |
 | | |_ou=public_folders
 | | |
 | | |_ou=shared_folders
 | |
 | |
 | |_dc=golgot.org
 |   |
 |   |_ou=users
 |   |
 |   |_ou=contacts
 |   |
 |   |_ou=public_folders
 |   |
 |   |_ou=shared_folders


On trouve a la racine des groupes de Domaines qui contiennent un ou plusieurs domaines. Chaque Domaine peut avoir un ou plusieurs alias. Cette structure permet un délégation des gestions des domaines par groupe de Domaines.

Graph

Structure des repertoires

Voici la structure des repertoires lie a la base LDAP.

/vmail/lescampeurs
/vmail/lescampeurs/lescampeur.org
/vmail/lescampeurs/lescampeur.org/users
/vmail/lescampeurs/lescampeur.org/public_folders
/vmail/doudou
/vmail/doudou/douduke.org
/vmail/doudou/douduke.org/users
/vmail/doudou/douduke.org/public_folders
/vmail/doudou/golgot.org
/vmail/doudou/golgot.org/users
/vmail/doudou/golgot.org/public_folders

Api pour gere les domaines et les utilisateurs

Au depart j’etais partie pour faire truc en shell, puis en perl, puis un package pour mettre les info de configuration... puis c’est partie en couille. Je completerais les scripts d’exemples au fur et a mesure que modifierais l’api.

Cette api manipule les entres ldap et les maildirs pour que le tout reste coherent.

Ldap_Mail

Exemples d'utilisation de l'api

Gestion groupe de domaines

#!/usr/bin/perl -w
 
use strict;
#use diagnostics;
use Ldap_Mail;
 
 
 
my $m = Ldap_Mail->new;
$m->set_bindpw('cn=admin,o=mail', 'secret');
 
my $g;
#Cree un groupe de domaines
$g  = $m->new_dnsgroup('test');
my $d = $g->create_dns('test.com');
 
#Detruire un groupe de domaines
$g = $m->get_dnsgroup('test');
$g->del_all();

Gestion des utilisateurs

#!/usr/bin/perl -w
 
use strict;
#use diagnostics;
use Ldap_Mail;
 
 
my $m = Ldap_Mail->new;
$m->set_bindpw('cn=admin,o=mail', 'secret');
 
my $r;
#Cree un groupe de domaines
$r  = $m->new_realm('test');
my $d = $r->create_domain('test.com');
 
 
$r = $m->get_realm('test');
$d = $r->new_domain('coucou.com');
#Creer un alias DNS
$d->add_alias('coucou.net');
#Creer un utilisateur
my $u = $d->new_user('postmaster5');
#Creer un alias pour postmaster5 => root@coucou.com root@coucou.net
$u->add_alias('root');
#Creer un alias pour postmaster5 => admin@coucou.com
$u->add_alias('admin@coucou.com');
#Creer un alias pour postmaster5 => webmaster@coucou.com webmaster@coucou.net
$u->add_alias('webmaster');
my $p = $d->new_public_folder('Info');
$p = $d->new_public_folder('Evenements');
$u = $d->new_user('test', [userPassword => 'coucou']);
$u = $d->new_user('danjer');
$u->set_passwd('coucou');
$u->add_subscribers('postmaster5', 'test');
$u->set_passwd('blah');

Bref tout ca est a mettre au propre...

Daemon interface

Pour compartimenter au mieux la sécurité et pouvoir déployer d’autres types d’interfaces que des scripts (Web, etc...), voici ldap_mail_daemon.pl ou encore connue sous le nom de : ‘GolgotExecutor Server‘.

 
tech/ldap_mail.txt · Dernière modification: 2006/07/20 14:44 par danjer
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Driven by DokuWiki Powered by Lescampeurs