971 lines
37 KiB
HTML
971 lines
37 KiB
HTML
<html>
|
|
<head>
|
|
<title>Howto pour installer un serveur de mail multidomaine utilisant un annuaire LDAP.</title>
|
|
</head>
|
|
<body bgcolor="#ffffff">
|
|
<center><h1><strong>Guide pour installer un serveur de mails multidomaine utilisant un annuaire LDAP.</strong></h1></center>
|
|
<br>
|
|
<center><h3>Auteur: Luc Saillard <luc.saillard at free.fr></h3></center>
|
|
<center><h4>Date: 16 mai 2001, Version: 0.1.2</h4></center>
|
|
<center><h4>Licence: <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a></h4></center>
|
|
<h4>
|
|
Copyright (c) 2000-2001 Luc Saillard<br>
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.1 or any later
|
|
version published by the Free Software Foundation; with no Invariant Sections,
|
|
with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license
|
|
is included in the section entitled "GNU Free Documentation License".
|
|
</h4>
|
|
<br>
|
|
|
|
<h1>Introduction</h1>
|
|
|
|
Ce mini guide décrit l'installation d'un serveur de mails pour un grand nombre
|
|
d'utilisateurs et ne voulant pas utiliser de comptes Unix pour gérer les boîtes
|
|
aux lettres. Cette solution permet aussi de rendre le système scalable, et
|
|
facilement redondant.<br>
|
|
L'utilisation d'un annuaire LDAP n'est pas obligatoire, puisque l'on peut
|
|
faire la même chose avec des bases de données. LDAP étant plus ouvert que le
|
|
support des bases de données avec le monde Windows. LDAP servira pour
|
|
l'authentification des utilisateurs et la conservation des profils de chaque
|
|
utilisateur. L'utilisation d'un annuaire est tout indiqué puisqu'il permet une
|
|
plus grande souplesse d'administration tout en conservant une vitesse de
|
|
recherche plus importante qu'une base de données.<br>
|
|
L'avantage d'utiliser LDAP permet de décentraliser les services plus
|
|
facilement, si on désire faire fonctionner le système sur plusieurs machines. Plusieurs machines
|
|
pour les serveurs de mails et Imap, un serveur faisant fonctionner LDAP, et un
|
|
autre pour partager les fichiers.<br>
|
|
Un annuaire peut être administré depuis une autre machine. Il existe de
|
|
nombreux outils pour administrer une base, la plupart des langages (C, Perl,
|
|
Php, Python) possède une API pour dialoguer avec un serveur LDAP donc rien
|
|
n'empêche d'écrire son propre outil adapté à la situation.
|
|
La base des utilisateurs pourra servir comme carnet d'adresses pour les
|
|
clients mails. Le protocole permet de gérer la réplication des données de façon
|
|
efficace, ce qui permet de faire simplement de la haute disponibilité.
|
|
|
|
<h1>Logiciels nécessaires</h1>
|
|
|
|
<ul>
|
|
<li><b>un serveur LDAP</b>. Il y a plusieurs serveurs LDAP sur le marché. Dans le libre,
|
|
il y a <a href="http://www.openldap.org/">Openldap</a>, et une version plus ancienne qui est
|
|
<a href="">UmichLdap</a>. Dans les solutions propriétaires, nous retrouvons <a
|
|
href="http://www.iplanet.com/products/infrastructure/dir_security/dir_srvr/">iPlanet
|
|
Directory Server</a> anciennement Netscape LDAP, Microsoft possède aussi une
|
|
version avec son <a href="http://www.microsoft.com/windows2000/guide/server/features/dirlist.asp">Active Directory</a>,
|
|
Novell avec Novel Directory Service.</li>
|
|
<li><b>un serveur de courrier sortant</b>. Il existe de nombreux serveur POP ou Imap dans le monde des
|
|
logiciels libres. Cependant, il faut choisir celui qui est le plus adapté en fonction des besoins.
|
|
Dans ce guide nous allons utiliser la suite <a
|
|
href="http://www.courier-mta.org/">courier-imap</a> et <a
|
|
href="http://www.courier-mta.org/">courier-pop</a>.</li>
|
|
<li><b>un serveur de courrier entrant</b>. Les principaux MTA sont Sendmail, Qmail, Exim, Postfix.
|
|
Ils ont tous un support LDAP, sauf pour Qmail qui a ce support sous forme de patch.</li>
|
|
</ul>
|
|
Optionnels:<br>
|
|
<ul>
|
|
<li><b>un serveur Webmail</b>. Le serveur Webmail comprend, un serveur web et
|
|
une application permettant d'afficher le courrier. Ils sont nombreux dans les logiciels
|
|
libres. On peut citer notamment: <a href="http://www.horde.org/imp/">Imp</a> et
|
|
<a href="http://www.inter7.com/sqwebmail/">SqWebmail</a>.
|
|
<li><b>une couche SSL</b>. On peut rajouter une couche sécurisé au système pour transmettre
|
|
le courrier en crypté en utilisant le même protocole que le http. La sécurité s'applique à tous
|
|
les services (Pop, Imap, Web). Pour le smtp, il faut utiliser SMTP Auth.
|
|
</ul>
|
|
|
|
<h1>Pré-requis</h1>
|
|
|
|
<h2>LDAP</h2>
|
|
LDAP va servir d'annuaire pour sauvegarder les profils des utilisateurs. Ce guide n'expliquera pas
|
|
le fonctionnement d'un annuaire, ou de la norme pour importer des données. Les outils tels que
|
|
ldapsearch, ldapdelete, ... sont ceux de la version Openldap. Les utilisateurs de Netscape Ldap
|
|
auront une syntaxe presque identique.
|
|
|
|
<h2>Le serveur de mail</h2>
|
|
Je considererai par la suite que le serveur de mails est déjà fonctionnel (il peut envoyer et recevoir des emails).
|
|
Seuls Exim et Postfix seront détaillés. Sendmail et Qmail ne le sont pas car
|
|
je ne connais pas la syntaxe a employer. Pour les autres serveurs de mails, je
|
|
vous renvoie à la documentation du programme.
|
|
|
|
<h2>Le serveur Pop, Imap</h2>
|
|
La solution présentée dans ce document se base sur Courier-Imap et Courier-Pop.
|
|
Bien sûr, on pourra utiliser d'autres serveurs Pop ou Imap qui supportent le
|
|
protocole LDAP, ou à travers PAM-Ldap. Je déconseille la 2ème méthode
|
|
ralentissant le serveur.<br>
|
|
On trouvera à cette adresse <a href="http://luc.saillard.free.fr/patches/qpopper/">
|
|
http://luc.saillard.free.fr/patches/qpopper/</a>,
|
|
un patch pour <a href="http://www.eudora.com/qpopper/">Qpopper</a> version
|
|
3.0.x supportant en mode natif le protocole LDAP. Malheureusement, il n'y a pas
|
|
de documentation pour l'utiliser.<br>
|
|
Le principal avantage de la suite <a
|
|
href="http://www.courier-mta.org/">Courier</a>, est le support des modules
|
|
d'authentification en mode daemon et sous forme de plugins. Son interface
|
|
permet de développer rapidement de nouveaux drivers pour gérer de nouveaux
|
|
modules d'authentification.<br>
|
|
Courier-Imap peut-être téléchargé à cette adresse:
|
|
<a href="http://www.inter7.com/courier-imap/">http://www.inter7.com/courier-imap/</a>.<br>
|
|
Il existe un patch pour le support Ldap pour le vénérable serveur Pop, Imap de l'
|
|
Université de Washington (les auteurs de <a
|
|
href="http://www.washington.edu/pine/">Pine</a>), mais je n'arrive plus à
|
|
remettre la main dessus. Le plus gros défaut d'<a
|
|
href="http://www.washington.edu/imap/">UW-Imap</a>, est la mémoire utilisée pour
|
|
chaque connection. Il est obligé de fonctionner avec inetd, le rendant
|
|
inadéquate pour les gros serveurs de mails. De plus, il est très difficile
|
|
d'inclure de nouveaux drivers, la licence et le design du programme rendent
|
|
l'ajout très difficile.<br>
|
|
|
|
<h1>Installation et configuration des logiciels</h1>
|
|
<h2>Openldap</h2>
|
|
Pour les utilisateurs de Netscape LDAP, je vous renvoie à la documentation
|
|
fournie avec le logiciel, de toute façon, on ne peut pas compiler Netscape
|
|
LDAP.
|
|
<h3>Compilation</h3>
|
|
Après quelques tests effectués avec Openldap v2.0, il semblerait que la
|
|
librairie dbm a utilisé soit la berkeley 2.x, développée par la société
|
|
SleepyCat (<a href="http://www.sleepycat.com/">http://www.sleepycat.com</a>). La
|
|
version 3.x apporte une meilleure gestion mais semblerait plus lente en
|
|
définitive pour des tailles d'annuaires inférieures à 100.000 entrées. La version
|
|
GNU libgdbm est plus lente que la version 2.x. J'ai fait les tests de
|
|
compilation de la librairie à partir d'un ordinateur Pentium II Intel sous
|
|
Linux. Pour ceux que ça intéresse, j'ai mis en annexe les temps et les
|
|
procédures de tests. <br>
|
|
Voici les directives que j'utilise pour compiler Openldap sur une machine
|
|
Linux Intel. Note je n'utilise pas slurpd.
|
|
<ul>
|
|
<li>Pour Openldap 1.2.x:<br>
|
|
<ul>
|
|
<li>Compilation de la librairie Berkeley 2.x:
|
|
<pre>
|
|
CFLAGS="-O2 -pipe -mpentiumpro \
|
|
-fexpensive-optimizations \
|
|
-fomit-frame-pointer" \
|
|
../dist/configure \
|
|
--disable-shared \
|
|
--prefix=/home/luc/srcs/openldap/build/db2
|
|
make
|
|
make install
|
|
</pre></li>
|
|
<li>Compilation d'Openldap 1.2.x:
|
|
<pre>
|
|
CPPFLAGS="-I/home/luc/srcs/openldap/build/db2/BerkeleyDB/include/" \
|
|
LDFLAGS="-L/home/luc/srcs/openldap/build/db2/BerkeleyDB/lib" \
|
|
CFLAGS="-O2 -pipe -mpentiumpro -fexpensive-optimizations -fomit-frame-pointer" \
|
|
./configure \
|
|
--with-threads \
|
|
--disable-debug \
|
|
--enable-aclgroups \
|
|
--disable-wrappers \
|
|
--disable-rlookups \
|
|
--enable-ldbm \
|
|
--enable-ldbm-api=db2 \
|
|
--disable-slurpd \
|
|
--prefix=/home/luc/srcs/openldap/build/openldap1 \
|
|
--libexecdir=/home/luc/srcs/openldap/build/openldap1/sbin
|
|
make depend
|
|
make
|
|
make install sysconfdir=/home/luc/srcs/openldap/build/openldap1/etc
|
|
</pre>
|
|
Voici ce que j'ai utilisé pour Solaris8
|
|
<pre>
|
|
% LIBS="-lresolv -lgen -lnsl -lsocket -lrt" \
|
|
LDFLAGS="-L/usr/local/BerkeleyDB/lib" \
|
|
CFLAGS="-O2 -pipe -I/usr/local/BerkeleyDB/include" \
|
|
./configure \
|
|
--prefix=/usr/local/openldap --enable-shared \
|
|
--with-threads=lwp --with-ldbm-api=db2 \
|
|
--sysconfdir=/usr/local/openldap/etc
|
|
% make
|
|
% make install sysconfdir=/usr/local/openldap/etc
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<li>Pour Openldap 2.0.x<br>
|
|
<ul>
|
|
<li>Compilation de la librairie Berkeley 2.x:<br>
|
|
<pre>
|
|
CFLAGS="-O2 -pipe -mpentiumpro \
|
|
-fexpensive-optimizations \
|
|
-fomit-frame-pointer" \
|
|
../dist/configure \
|
|
--disable-shared \
|
|
--prefix=/home/luc/srcs/openldap/build/db2
|
|
make
|
|
make install
|
|
</pre></li>
|
|
<li>Compilation d'Openldap 2.0.7:<br>
|
|
<pre>
|
|
CPPFLAGS="-I/home/luc/srcs/openldap/build/db2/BerkeleyDB/include/" \
|
|
LDFLAGS="-L/home/luc/srcs/openldap/build/db2/BerkeleyDB/lib" \
|
|
CFLAGS="-O2 -pipe -mpentiumpro -fexpensive-optimizations -fomit-frame-pointer" \
|
|
./configure \
|
|
--with-threads \
|
|
--with-readline \
|
|
--enable-syslog \
|
|
--enable-aci \
|
|
--with-ldbm-api=berkeley \
|
|
--disable-slurpd \
|
|
--prefix=/home/luc/srcs/openldap/build/openldap2 \
|
|
--libexecdir=/home/luc/srcs/openldap/build/openldap2/sbin
|
|
make depend
|
|
make
|
|
make install sysconfdir=/home/luc/srcs/openldap/build/openldap2/etc
|
|
</pre></li>
|
|
</ul>
|
|
</ul>
|
|
|
|
|
|
<h3>Création des fichiers Ldif</h3>
|
|
Plusieurs fichiers LDIF devront être créés pour permettre plus tard, une plus
|
|
grande souplesse en cas d'upgrade ou de migration vers d'autres serveurs.
|
|
Il y aura un fichier pour créer l'arborescence de l'annuaire, et un fichier
|
|
pour quelques utilisateurs de test, ainsi que l'administrateur.
|
|
<h4>Définition du profil des utilisateurs</h4>
|
|
Nous avons 2 solutions pour créer un profil d'utilisateur. Prendre un
|
|
modèle existant déjà dans les Rfcs tel que le profil InetOrgPerson, ou construire
|
|
son propre profil. Chacun a ses avantages et ses inconvénients. Personnellement, j'utilise
|
|
plus souvent le 2ème cas (création du profil personnalisé), car l'on peut adapter plus
|
|
facilement certains problèmes (quota, autorisation de recevoir des emails, ...)<br>
|
|
Voici un profil d'utilisateur pour une entreprise nommée Toto. J'ai spécifié uniquement les
|
|
attributs qui me sont nécessaires:<br>
|
|
<b>Fichier toto_com.oc.conf</b>
|
|
<pre>
|
|
objectclass personToto
|
|
requires
|
|
objectclass,
|
|
cn,
|
|
uid,
|
|
mail,
|
|
maildrop,
|
|
userPassword
|
|
allows
|
|
allowedServices
|
|
</pre>
|
|
<b>Fichier toto_com.at.conf</b>
|
|
<pre>
|
|
attribute allowedServices ces
|
|
attribute maildrop ces
|
|
</pre>
|
|
Seul l'attribut <b>allowedServices</b> n'est pas obligatoire. Il servira pour montrer
|
|
comment on peut restreindre l'accès au serveur FTP, au serveur de mails, ou à d'autres
|
|
services.<br>
|
|
|
|
<b>cn</b>: (abréviation de Common Name) donne le nom complet de la personne. Ce nom
|
|
sera utilisé par les applications pour afficher le nom complet de la personne.<br>
|
|
|
|
<b>uid</b>: La valeur permettra d'identifier une personne de façon unique dans
|
|
l'annuaire. La plupart du temps, <b>uid</b> correspondra à la partie gauche
|
|
d'une adresse email. ($local_part sous Exim)<br>
|
|
|
|
<b>mail</b>: Cet attribut contiendra les différentes adresses qu'il pourra recevoir. Je
|
|
le repréciserai plus tard, mais les valeurs d'un attribut Ldap peuvent être multiples,
|
|
c'est une des possibilités pour l'utilisateur de recevoir du courrier provenant de plusieurs
|
|
adresses emails. Généralement, on spécifie l'adresse email en entier de la personne.<br>
|
|
|
|
<b>maildrop</b>: Cet attribut contiendra les différentes adresses de livraison du mail pour
|
|
cette personne. En fonction du serveur de mails, les adresses de livraison peuvent-être une
|
|
adresse email, un répertoire, un fichier, un programme externe. Ainsi, on retrouve
|
|
la notion d'<i>alias</i> et de <i>.forward</i>.<br>
|
|
|
|
<b>userPassword</b>: Cet attribut contient le mot de passe de l'utilisateur. Il peut-être
|
|
crypté par le serveur LDAP auquel cas, il faudra configurer les serveurs Pop et Imap
|
|
spécifiquement. Ainsi il est impossible d'utiliser le mode CRAM-MD5 (option
|
|
permettant d'éviter la transmission du mot de passe en clair sur le réseau Internet.<br>
|
|
|
|
<b>allowedServices</b>: Certains administrateurs veulent pouvoir limiter les accès
|
|
Mails, les accès FTP pour certaines personnes. On va utiliser cet attribut pour
|
|
autoriser uniquement les utilisateurs qui peuvent recevoir du mail, et disposent d'un
|
|
accès FTP. On pourra facilement créer d'autres attributs pour d'autres situations.
|
|
L'exemple devrait suffire pour comprendre la méthode.<br>
|
|
|
|
|
|
<h4>Définition de l'arbre LDAP</h4>
|
|
|
|
Dans le cas d'un serveur de mails multidomaines, il est bon de créer un branche
|
|
par sous-domaine. Il sera plus facile après de le gérer. La création de multiples
|
|
branches ne pénalise pas les recherches, puisque les recherches ne se font pas sur les
|
|
branches mais sur les attributs.<br>
|
|
Voici un exemple d'arbre LDAP pour un serveur multi-domaines. Pour un serveur ne gérant qu'un
|
|
seul domaine, on appliquera la même méthode sauf que l'on se retrouvera qu'avec une seul branche
|
|
organisation.<br>
|
|
<pre>
|
|
+ dc=toto, dc=com
|
|
|-+ o=groupFR, dc=toto, dc=com
|
|
| |-+ ou=Peoples, o=groupFR, dc=toto, dc=com
|
|
| | |-- uid=user1, ou=Peoples, o=groupFR, dc=toto, dc=com
|
|
| | |-- uid=user2, ou=Peoples, o=groupFR, dc=toto, dc=com
|
|
| | |-- uid=user3, ou=Peoples, o=groupFR, dc=toto, dc=com
|
|
| | |...
|
|
| |-+ ou=Administrators,dc=toto,dc=com
|
|
| | |-- uid=admin1, ou=Administrators, o=groupFR, dc=toto, dc=com
|
|
| | |-- uid=admin2, ou=Administrators, o=groupFR, dc=toto, dc=com
|
|
| | |...
|
|
| |...
|
|
| ...
|
|
|-+ o=groupUK,dc=toto,dc=com
|
|
| |-+ ou=Peoples, o=groupUK, dc=toto, dc=com
|
|
| | |-- uid=user1, ou=Peoples, o=groupUK, dc=toto, dc=com
|
|
| | |-- uid=user2, ou=Peoples, o=groupUK, dc=toto, dc=com
|
|
| | |-- uid=user3, ou=Peoples, o=groupUK, dc=toto, dc=com
|
|
| | |...
|
|
| |-+ ou=Administrators,dc=toto,dc=com
|
|
| | |-- uid=admin1, ou=Administrators, o=groupUK, dc=toto, dc=com
|
|
| | |-- uid=admin2, ou=Administrators, o=groupUK, dc=toto, dc=com
|
|
| | |...
|
|
| |...
|
|
| ...
|
|
|-+ o=Administrators,dc=toto,dc=com
|
|
| |-- cn=admin,o=Administrators,dc=toto,dc=com
|
|
| |-- cn=mail,o=Administrators,dc=toto,dc=com
|
|
| |-- cn=imap,o=Administrators,dc=toto,dc=com
|
|
| |...
|
|
|...
|
|
</pre>
|
|
|
|
Explication:<br>
|
|
Dans cet exemple, j'ai pris le cas d'une entreprise multinationale, qui voudrait
|
|
centraliser à un seul endroit les informations des ses collaborateurs.<br>
|
|
L'entreprise s'appelle toto, et dispose du nom de domaine toto.com. Les adresses
|
|
emails sont hiéarchisées par pays (toto@uk.toto.com, toto@fr.toto.com, ...),
|
|
donc on voudrait aussi que l'annuaire possède cette même hiérarchie. J'ai donc
|
|
créé des organisations pour chaque pays (o=groupFR et o=groupUK).<br>
|
|
Dans chaque organisation, on peut classer (même si je n'aime pas ce mot) les personnes
|
|
suivant leur fonction ou leur place dans la société. Ici, j'ai décidé que l'on classerait
|
|
les informaticiens (ou=Administrators) et les non-informaticiens (ou=Peoples). J'ai donc créé
|
|
2 sous-organisations.<br>
|
|
Juste en dessous viennent les profils des utilisateurs. Mais nous pouvons très
|
|
bien avoir d'autres sous-organisations. Pour regrouper tous les services qui
|
|
ont besoin d'accéder, j'ai créé un organisation Administrators à la racine du
|
|
site. Il y aura un utilisateur root, qui aura le droit de tout modifier, un
|
|
utilisateur mail, un utilisateur imap.<br>
|
|
|
|
|
|
<h4>Création des fichiers</h4>
|
|
|
|
Maintenant, que les profils et la structure sont définis, voici les fichiers LDIF
|
|
correspondant à l'exemple enoncé.
|
|
<b>Fichier toto_com-tree.ldif</b>
|
|
<pre>
|
|
dn: dc=toto, dc=com
|
|
objectclass: dcobject
|
|
dc: toto
|
|
|
|
dn: o=Administrators, dc=toto, dc=com
|
|
objectclass: organization
|
|
o: Administrators
|
|
|
|
dn: o=groupFR, dc=toto, dc=com
|
|
objectclass: organization
|
|
o: groupFR
|
|
|
|
dn: o=groupUK, dc=toto, dc=com
|
|
objectclass: organization
|
|
o: groupUK
|
|
|
|
dn: ou=Peoples, o=groupFR, dc=toto, dc=com
|
|
objectclass: organizationalUnit
|
|
ou: Peoples
|
|
|
|
dn: ou=Administrators, o=groupFR, dc=toto, dc=com
|
|
objectclass: organizationalUnit
|
|
ou: Administrators
|
|
|
|
dn: ou=Peoples, o=groupUK, dc=toto, dc=com
|
|
objectclass: organizationalUnit
|
|
ou: Peoples
|
|
|
|
dn: ou=Administrators, o=groupUK, dc=toto, dc=com
|
|
objectclass: organizationalUnit
|
|
ou: Administrators
|
|
</pre>
|
|
|
|
<b>Fichier toto_com-admins.ldif</b>
|
|
<pre>
|
|
dn: cn=admin, o=Administrators, dc=toto, dc=com
|
|
objectclass: person
|
|
cn: admin
|
|
sn: admin
|
|
userPassword: 3bLtqp4wTXp35dRR
|
|
|
|
dn: cn=mail, o=Administrators, dc=toto, dc=com
|
|
objectclass: person
|
|
cn: mail
|
|
sn: mail
|
|
userPassword: 3bLtqp4wTXp35dRR
|
|
|
|
dn: cn=imap, o=Administrators, dc=toto, dc=com
|
|
objectclass: person
|
|
cn: mail
|
|
sn: mail
|
|
userPassword: 3bLtqp4wTXp35dRR
|
|
</pre>
|
|
|
|
<b>Fichier toto_com-users.ldif</b>
|
|
<pre>
|
|
dn: uid=Fayre.Nickerson, ou=Peoples, o=groupFR, dc=toto, dc=com
|
|
objectclass: personToto
|
|
uid: Fayre.Nickerson
|
|
cn: Fayre Nickerson
|
|
maildrop: /import/mail/Fayre.Nickerson/
|
|
userPassword: toto
|
|
mail: fnickerson@fr.toto.com
|
|
mail: Nayre.Nickerson@fr.toto.com
|
|
|
|
dn: uid=Felice.Risher, ou=Peoples, o=groupUK, dc=toto, dc=com
|
|
objectclass: personToto
|
|
uid: Felice.Risher
|
|
cn: Felice Risher
|
|
allowedServices: FTP
|
|
allowedServices: SMTP
|
|
maildrop: /import/mail/Felice.Risher/
|
|
userPassword: fff
|
|
mail: FRisher@uk.toto.com
|
|
mail: felice.risher@uk.toto.com
|
|
|
|
dn: uid=Kollen.Beshai, ou=Administrators, o=groupFR, dc=toto, dc=com
|
|
objectclass: personToto
|
|
uid: Kollen.Beshai
|
|
cn: Kollen Beshai
|
|
allowedServices: SMTP
|
|
maildrop: /import/mail/Kollen.Beshai/
|
|
userPassword: mmm
|
|
mail: KBeshai@fr.toto.com
|
|
mail: Kollen.Beshai@fr.toto.com
|
|
</pre>
|
|
|
|
<h3>Configuration du serveur</h3>
|
|
|
|
<h4>Création du fichier slapd.conf</h4>
|
|
|
|
Il n'y a pas grand chose à dire au sujet du fichier de configuration, sauf pour la partie
|
|
droits d'accès qui sera détaillée ci-dessous. Il faut toujours activer l'option <b>schemacheck</b>.
|
|
<pre>
|
|
schemacheck on
|
|
</pre>
|
|
Pour optimiser les performances, on peut rajouter ceci dans la section de notre backend.
|
|
<pre>
|
|
lastmod off
|
|
|
|
cachesize 10000
|
|
dbcachesize 5000000
|
|
</pre>
|
|
Ensuite, il faut lui indiquer, quels sont les attributs à indexer. Dans la
|
|
version 2.0 d'Openldap, il faut lui préciser objectclass. Les attributs où l'on
|
|
ne fait jamais de recherche doivent être indexés.
|
|
<pre>
|
|
index cn
|
|
index mail,uid eq,sub
|
|
index default none
|
|
</pre>
|
|
Pour encore plus optimiser, on peut rajouter ces 2 options dans la version 2.0 d'Openldap.
|
|
<pre>
|
|
dbnosync
|
|
dbnolocking
|
|
</pre>
|
|
|
|
Sécurité, définition des droits d'accès aux attributs.<br>
|
|
Il faut définir, quels sont les personnes qui ont le droit de lire ou modifier les attributs.
|
|
Prenons le cas du serveur de mail, il faut qu'il puisse lire le contenu de la variable
|
|
maildrop, et mail. En revanche, le serveur IMAP doit avoir le droit de lire le contenu de la
|
|
variable userPassword, cn, maildrop. En aucun cas, les 2 programmes ne devront avoir le droit
|
|
de modifier les valeurs.<br>
|
|
Voici donc les Access Control List que j'utilise dans notre exemple ci-dessus.
|
|
<pre>
|
|
access to attribute=userPassword
|
|
by dn="cn=admin, o=Administrators, dc=toto, dc=com" write
|
|
by dn="cn=imap, o=Administrators, dc=toto, dc=com" read
|
|
by self write
|
|
by * none
|
|
|
|
access to attribute=maildrop
|
|
by dn="cn=admin, o=Administrators, dc=toto, dc=com" write
|
|
by dn="cn=mail, o=Administrators, dc=toto, dc=com" read
|
|
by dn="cn=imap, o=Administrators, dc=toto, dc=com" read
|
|
by * none
|
|
|
|
access to attribute=*
|
|
by dn="cn=admin, o=Administrators, dc=toto, dc=com" write
|
|
by * read
|
|
</pre>
|
|
|
|
Le fichier de configuration d'Openldap:
|
|
<pre>
|
|
#
|
|
# See slapd.conf(5) for details on configuration options.
|
|
# This file should NOT be world readable.
|
|
#
|
|
include /home/luc/srcs/openldap/build/openldap1/etc/slapd.at.conf
|
|
include /home/luc/srcs/openldap/build/openldap1/etc/slapd.oc.conf
|
|
include /home/luc/srcs/openldap/build/openldap1/etc/toto_com.at.conf
|
|
include /home/luc/srcs/openldap/build/openldap1/etc/toto_com.oc.conf
|
|
|
|
schemacheck on
|
|
|
|
pidfile /home/luc/srcs/openldap/build/openldap1/var/slapd.pid
|
|
argsfile /home/luc/srcs/openldap/build/openldap1/var/slapd.args
|
|
|
|
#######################################################################
|
|
# ldbm database definitions
|
|
#######################################################################
|
|
|
|
database ldbm
|
|
suffix "dc=toto, dc=com"
|
|
directory /home/luc/srcs/openldap/build/openldap1/var/openldap-ldbm
|
|
defaultaccess none
|
|
|
|
#rootdn "cn=root, dc=toto, dc=com"
|
|
#rootpw secret
|
|
|
|
# Pas d'attribut indiquant la dernière modification.
|
|
lastmod off
|
|
|
|
# Les indexs
|
|
index cn
|
|
index mail,uid eq,sub
|
|
index default none
|
|
|
|
# La mémoire utilisée
|
|
cachesize 10000
|
|
dbcachesize 5000000
|
|
|
|
# Attention a ne pas mettre d'espace lors de l'utilisation des dn
|
|
access to attribute=userPassword
|
|
by dn="cn=admin,o=Administrators,dc=toto,dc=com" write
|
|
by dn="cn=imap,o=Administrators,dc=toto,dc=com" read
|
|
by self write
|
|
by * none
|
|
|
|
access to attribute=maildrop
|
|
by dn="cn=admin,o=Administrators, dc=toto,dc=com" write
|
|
by dn="cn=mail,o=Administrators, dc=toto,dc=com" read
|
|
by dn="cn=imap,o=Administrators, dc=toto,dc=com" read
|
|
by * none
|
|
|
|
access to attribute=*
|
|
by dn="cn=admin,o=Administrators,dc=toto,dc=com" write
|
|
by * read
|
|
|
|
</pre>
|
|
|
|
<h4>Importation des données LDIF</h4>
|
|
|
|
Pour créer notre base, nous avons 2 solutions. La première est très rapide
|
|
et permet d'importer très rapidement plusieurs milliers d'enregistrements. La 2ème
|
|
nécessite que le serveur LDAP soit actif, mais peut se faire à distance.<br>
|
|
<ul>
|
|
<li>Méthode utilisant ldif2ldm:<br>
|
|
Concatener tous les fichiers <i>.ldif</i> dans le fichier <i>all.ldif</i><br>
|
|
Lancer la commande suivante avec le serveur ldap arrêté.<br>
|
|
<pre>
|
|
ldif2ldbm -i all.ldif
|
|
</pre>
|
|
</li>
|
|
<li>Méthode utilisant ldapadd:<br>
|
|
Pour utiliser cette méthode, il faut qu'il existe un utilisateur ayant le droit
|
|
d'écrire dans la base LDAP. La méthode la plus simple est de décommenter les
|
|
lignes dans le fichier de configuration <i>slapd.conf</i>: <b>rootdn</b> et
|
|
<b>rootpw</b>.<br>
|
|
Démarrer le serveur Ldap.<br>
|
|
Pour chaque fichier en commençant par le fichier <i>-tree.ldif</i>,
|
|
lancer la commande suivante:<br>
|
|
<pre>
|
|
ldapadd -h localhost -p 389 \
|
|
-D "cn=root,dc=toto,dc=com" \
|
|
-w secret \
|
|
-f all.ldif
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
|
|
<h3>Test du bon fonctionnement du serveur</h3>
|
|
|
|
<h4>Lancement du serveur</h4>
|
|
<pre>
|
|
slapd -f /home/luc/srcs/openldap/build/openldap1/etc/slapd.toto_com.conf \
|
|
-p 389
|
|
</pre>
|
|
|
|
<h4>test de recherche</h4>
|
|
La commande suivante doit afficher tous les objets contenus dans la base sous la
|
|
même forme que les fichiers <i>.ldif</i>.
|
|
<pre>
|
|
ldapsearch -L -h localhost -p 389 -b "dc=toto,dc=com" "(objectclass=*)"
|
|
</pre>
|
|
|
|
<h4>test d'ajout</h4>
|
|
<pre>
|
|
ldapadd -h localhost -p 389 \
|
|
-D cn=admin,o=Administrators,dc=toto,dc=com -w 3bLtqp4wTXp35dRR
|
|
dn: uid=test, ou=Peoples, o=groupFR, dc=toto, dc=com
|
|
objectclass: personToto
|
|
uid: test
|
|
cn: utilisateur test
|
|
maildrop: /var/spool/mail/test
|
|
userPassword: bingo
|
|
mail: test@fr.toto.com
|
|
|
|
</pre>
|
|
|
|
<h4>test de suppression</h4>
|
|
<pre>
|
|
ldapdelete \
|
|
-h localhost -p 389 \
|
|
-D cn=admin,o=Administrators,dc=toto,dc=com -w 3bLtqp4wTXp35dRR \
|
|
uid=test,ou=Peoples,o=groupFR,dc=toto,dc=com
|
|
</pre>
|
|
|
|
<h4>Utilisation du programme GQ.</h4>
|
|
On peut utiliser un programme graphique tel que <a href="http://biot.com/gq/">GQ</a>.
|
|
|
|
<h3>Optionnel: Migration d'une liste d'utilisateurs existante</h3>
|
|
|
|
|
|
<h2>Exim</h2>
|
|
<h3>Compilation</h3>
|
|
|
|
Copier le fichier <i>src/EDITME</i> à la place de <i>Local/Makefile</i>.
|
|
Configurer les options qui correspondent à votre système et activer les options
|
|
suivantes pour avoir le support LDAP.<br>
|
|
<pre>
|
|
LOOKUP_LDAP=yes
|
|
LOOKUP_LIBS=-lldap -llber
|
|
LDAP_LIB_TYPE=UMICHIGAN
|
|
</pre>
|
|
Si vous utilisez la version 2 d'Openldap, ou la version Netscape, remplacer
|
|
<b>LDAP_LIB_TYPE=UMICHIGAN</b> par <b>LDAP_LIB_TYPE=NETSCAPE</b>.<br>
|
|
|
|
La distribution Debian/GNU Linux utilise comme serveur de mail par défaut, le
|
|
programme Exim. Il est compilé avec toutes les options nécessaires pour un
|
|
serveur et dispose donc du support LDAP.<br>
|
|
|
|
Voici le fichier Local/Makefile. Ce n'est qu'un exemple. Je vous recommande de
|
|
lire le fichier de configuration en détail pour personnaliser au mieux le serveur
|
|
de mails.<br>
|
|
<pre>
|
|
COMPRESS_COMMAND=gzip
|
|
COMPRESS_SUFFIX=gz
|
|
ZCAT_COMMAND=zcat
|
|
CONFIGURE_FILE=/etc/exim.conf
|
|
DIRECTOR_ALIASFILE=yes
|
|
DIRECTOR_FORWARDFILE=yes
|
|
DIRECTOR_LOCALUSER=yes
|
|
DIRECTOR_SMARTUSER=yes
|
|
EXICYCLOG_MAX=10
|
|
EXIM_UID=1000
|
|
EXIM_GID=1000
|
|
EXIM_MONITOR=eximon.bin
|
|
LOOKUP_DBM=yes
|
|
LOOKUP_LSEARCH=yes
|
|
LOOKUP_LDAP=yes
|
|
LOOKUP_INCLUDE=-I/home/luc/srcs/openldap/build/openldap1/include
|
|
LOOKUP_LIBS=-L/home/luc/srcs/openldap/build/openldap1/lib -lldap -llber
|
|
LDAP_LIB_TYPE=UMICHIGAN
|
|
ROUTER_DOMAINLIST=yes
|
|
ROUTER_IPLITERAL=yes
|
|
ROUTER_LOOKUPHOST=yes
|
|
SPOOL_DIRECTORY=/var/spool/exim
|
|
SUPPORT_MAILDIR=yes
|
|
TRANSPORT_APPENDFILE=yes
|
|
TRANSPORT_PIPE=yes
|
|
TRANSPORT_SMTP=yes
|
|
</pre>
|
|
Il ne reste plus qu'à le compiler avec la commande <b>make</b>.
|
|
|
|
<h3>Configuration</h3>
|
|
Pour délivrer les mails en utilisant le support LDAP, j'ai besoin d'un
|
|
transport et d'un director. Je vais donc créer un <b>Director</b> que je
|
|
placerai après la gestion des alias systèmes.<br>
|
|
Voici donc le <b>Director</b> qu'il faut utiliser dans notre exemple.
|
|
<pre>
|
|
ldap_user:
|
|
driver = aliasfile
|
|
search_type = ldapm
|
|
query = user="cn=mail,o=Administrators,dc=toto,dc=com" \
|
|
pass="secret" \
|
|
"ldap://localhost:389/dc=toto,dc=com?maildrop?sub? \
|
|
(&(mail=${local_part}@${domain})(allowedServices=SMTP))"
|
|
expand errors_to = admin
|
|
user = vmail
|
|
group = vmail
|
|
directory_transport = address_directory_ldap
|
|
forbid_pipe = true
|
|
</pre>
|
|
|
|
<h2>Postfix</h2>
|
|
<h3>Compilation</h3>
|
|
|
|
<pre>
|
|
% make makefiles \
|
|
CCARGS="-pipe
|
|
-I/usr/local/BerkeleyDB/include/ \
|
|
-L/usr/local/BerkeleyDB/lib -DHAS_LDAP \
|
|
-I/usr/local/openldap/include" \
|
|
AUXLIBS="-L/usr/local/openldap/lib/ -lldap -llber" \
|
|
OPT="-O2" DEBUG=""
|
|
% make clean
|
|
% make
|
|
</pre>
|
|
<h3>Configuration</h3>
|
|
|
|
<h2>Sendmail</h2>
|
|
<h3>Compilation</h3>
|
|
Ajouter le support LDAP à sendmail.
|
|
<!-- mkdir -p /home/luc/srcs/sendmail/build/usr/lib/sm.bin /home/luc/srcs/sendmail/build/usr/bin /home/luc/srcs/sendmail/build/usr/sbin /home/luc/srcs/sendmail/build/etc/mail -->
|
|
Voici le fichier site.local.m4 qui permet de compiler Sendmail avec le support LDAP.
|
|
<pre>
|
|
define(`confMAPDEF', `-DMAP_REGEX -DNEWDB')
|
|
define(`confINCDIRS', `-I/home/luc/srcs/openldap/build/openldap1/include
|
|
-I/home/luc/srcs/openldap/build/db2/BerkeleyDB/include')
|
|
define(`confLIBDIRS', `-L/home/luc/srcs/openldap/build/openldap1/lib
|
|
-L/home/luc/srcs/openldap/build/db2/BerkeleyDB/lib')
|
|
APPENDDEF(`conf_sendmail_ENVDEF', `-DLDAPMAP')
|
|
APPENDDEF(`conf_sendmail_LIBS', `-ldb -lldap -llber')
|
|
dnl define(`confENVDEF', `-DUSE_VENDOR_CF_PATH=/home/luc/srcs/sendmail/build/etc/mail/sendmail.cf')
|
|
define(`confLIBS', `')
|
|
|
|
define(`confCC', `gcc')
|
|
define(`confOPTIMIZE', `-O2 -Wall -pipe')
|
|
|
|
dnl define(`confEBINDIR', `/home/luc/srcs/sendmail/build/usr/lib/sm.bin')
|
|
dnl define(`confHDIR', `/home/luc/srcs/sendmail/build/usr/lib')
|
|
dnl define(`confHFDIR', `/home/luc/srcs/sendmail/build/etc/mail')
|
|
dnl define(`confHFFILE', `helpfile')
|
|
dnl define(`confMANROOT', `/home/luc/srcs/sendmail/build/usr/man/man')
|
|
dnl define(`confMANOWN', `luc')
|
|
dnl define(`confMANGRP', `luc')
|
|
dnl define(`confMBINDIR', `/home/luc/srcs/sendmail/build/usr/sbin')
|
|
dnl define(`confSBINDIR', `/home/luc/srcs/sendmail/build/usr/sbin')
|
|
dnl define(`confSBINOWN', `luc')
|
|
dnl define(`confSBINGRP', `luc')
|
|
dnl define(`confSBINMODE', `0755')
|
|
dnl define(`confSTDIR', `/home/luc/srcs/sendmail/build/var/lib/sendmail')
|
|
dnl define(`confSTFILE', `statistics')
|
|
dnl define(`confUBINDIR', `/home/luc/srcs/sendmail/build/usr/bin')
|
|
dnl define(`confUBINOWN', `luc')
|
|
dnl define(`confUBINGRP', `luc')
|
|
dnl define(`confUBINMODE', `0755')
|
|
dnl
|
|
dnl define(`confNO_MAN_BUILD', `true')
|
|
dnl define(`confNO_MAN_INSTALL', `true')
|
|
dnl define(`confNO_STATISTICS_INSTALL', `true')
|
|
</pre>
|
|
Lancer la compilation de sendmail avec la commande suivante:
|
|
<pre>
|
|
sh Build -f site.local.m4
|
|
</pre>
|
|
<h3>Configuration</h3>
|
|
Voici le contenu de mon fichier local.mc. Dixit, les docs que j'ai trouvé sur
|
|
Internet. La meilleure documentation, ce sont les sources. Le code n'est pas
|
|
beaucoup documenté, donc pour trouver les options, allez voir le fichier
|
|
<i>sendmail/map.c</i> et chercher la fonction <i>ldapmap_parseargs</i>. Sinon
|
|
il y a une documentation qui explique un peu plus en détail mes propos.
|
|
(<a href="http://www.stanford.edu/~bbense/Inst.html">www.stanford.edu/~bbense/Inst.html</a>)
|
|
|
|
Les options principales:
|
|
<ul>
|
|
<li>-b"ldap search base":<br>
|
|
The is the "directory" in your ldap "tree" that you are going to search in.
|
|
</li>
|
|
<li>-h"ldap servers":<br>
|
|
This is a space separated string of servers that support ldap at your site. The ldap libraries
|
|
will attempt to connect to these machines in the order that they are listed.
|
|
</li>
|
|
<li>-k"ldap search string":<br>
|
|
This is a "sprintf" style string that defines how the map takes it's input value and constructs
|
|
an ldap search. It MUST be of the form "attribute=%s". It and the base used above should define a
|
|
search that returns AT MOST ONE ENTRY. The ldap map will only use the first entry it recieves.
|
|
</li>
|
|
<li>-v"ldap attribute":<br>
|
|
The value that replaces the origin string in the map. In most cases this will be your rfc822
|
|
email address.
|
|
</li>
|
|
<li>-d"ldap bind dn":<br>
|
|
</li>
|
|
<li>-P"ldap bind passwd":<br>
|
|
|
|
</li></ul>
|
|
Le fichier de configuration fourni ne concerne qu'un seul domaine pour
|
|
plusieurs raisons. Avec Sendmail, je ne sais pas comment gérer les sites
|
|
multidomaines pour permettre de faire plusieurs règles (une par domaine).
|
|
Sendmail ne permet pas d'avoir d'autres informations que la clef unique qui
|
|
identifie le mail. Je pense quand faisant 2 requètes LDAP, on devrait y
|
|
arriver. Voici donc le fichier <i>local.mc</i> permettant de générer le fichier
|
|
<i>sendmail.cf</i>.
|
|
|
|
<pre>
|
|
VERSIONID(`$Id: comment_installer_un_serveur_multidomaine_avec_ldap.html,v 1.1 2003/06/04 12:41:10 kiwi Exp $')
|
|
OSTYPE(linux)dnl
|
|
DOMAIN(generic)dnl
|
|
MAILER(local)dnl
|
|
MAILER(smtp)dnl
|
|
define(`confLDAP_DEFAULT_SPEC', `-h localhost -p 389 -b dc=toto,dc=com')
|
|
APPENDDEF(`confLDAP_DEFAULT_SPEC', `-dcn=mail,o=Administrators,dc=toto,dc=com -P/etc/mail/secret')
|
|
define(`ldap_query', `ldap -1 -v maildrop -k"(&(objectClass=personToto)(uid=%0))"')
|
|
FEATURE(`ldap_routing',`',ldap_query)
|
|
</pre>
|
|
|
|
<h2>Courier-Imap & Courier-Pop</h2>
|
|
<h3>Compilation</h3>
|
|
|
|
Voici la ligne de commande que j'utilise pour compiler courier-imap (et donc
|
|
courier-pop):
|
|
<pre>
|
|
CPPFLAGS="-I/usr/local/openldap/include/" \
|
|
LDFLAGS="-L/usr/local/openldap/lib" \
|
|
LIBS="-lresolv" \
|
|
./configure --prefix=/usr/local/courier
|
|
</pre>
|
|
|
|
Sur une machine solaris 8
|
|
<pre>
|
|
% LIBS="-lsocket" LDFLAGS="-L/usr/local/BerkeleyDB/lib \
|
|
-L/usr/local/openldap/lib" CXXFLAGS="-pipe -O2 \
|
|
-I/usr/local/BerkeleyDB/include \
|
|
-I/usr/local/openldap/include" CFLAGS="-pipe -O2 \
|
|
-I/usr/local/BerkeleyDB/include \
|
|
-I/usr/local/openldap/include" ./configure \
|
|
--prefix=/usr/local/courier-imap --with-waitfunc=wait3
|
|
% make
|
|
% make install
|
|
</pre>
|
|
|
|
|
|
La librairie <i>resolv</i> n'est pas nécessaire pour Openldap 1.x.
|
|
|
|
<h3>Configuration</h3>
|
|
|
|
Courier-Imap utilise plusieurs fichiers de configuration correspondants à chacun
|
|
de ses modules.<br><br>
|
|
|
|
<b>imapd.conf</b> ou <b>imapd</b>: Sert pour la configuration du serveur IMAP. La configuration
|
|
par défaut est correcte mais pensez à changer la variable IMAPDSTART par
|
|
YES.<br>
|
|
<b>authdaemonrc</b>: Ce fichier permet de configurer le daemon
|
|
d'authentification. Il contient plusieurs paramètres permettant de configurer
|
|
le nombre de daemon lancé (<i>daemons</i>), l'ordre des modules pour
|
|
authentifier une personne (<i>authmodulelist</i>). Voici une courte explication
|
|
des différents modules:
|
|
<ul>
|
|
<li>authuserdb: utilise une base au format dbm pour faire l'authentification.
|
|
<li>authcram: permet de réaliser le cryptage des mots de passe au format
|
|
CRAM-MD5 utilisable ensuite dans les autres modules.
|
|
<li>authcustom: est juste un template permettant d'implémenter votre propre module
|
|
d'authentification.
|
|
<li>authldap: permet de réaliser l'authentification au format LDAP. Le fichier
|
|
de configuration se nomme <i>authldaprc</i>
|
|
<li>authmysql: réalise l'authentification en utilisant une base Mysql. A quand
|
|
un module pour Postgresql ?
|
|
<li>authpam: réalise l'authentification en utilisant PAM.
|
|
<li>authpwd et doauthshadow: réalisent l'authentification en utilisant les
|
|
fonctions standards d'Unix pour lire les fichiers <i>/etc/passwd</i> ou
|
|
<i>/etc/shadow</i>.
|
|
<li>authvchkpw: réalise l'authentification en utilisant les même modules que
|
|
vpopmail (voir <a href="http://www.qmail.org">Qmail</a>). Note je ne connais
|
|
pas ce module.
|
|
</ul>
|
|
Dans notre cas, cette variable ne contiendra que "authcram authldap".<br><br>
|
|
|
|
<b>authldaprc</b>: Ce fichier configure le module d'authentification pour
|
|
LDAP.<br>
|
|
<pre>
|
|
LDAP_SERVER localhost
|
|
LDAP_PORT 389
|
|
LDAP_BASEDN dc=toto.com
|
|
LDAP_BINDDN cn=mail,o=Administrators,dc=toto.com
|
|
LDAP_BINDPW 34GREGEop#'
|
|
LDAP_TIMEOUT 5
|
|
LDAP_MAIL mail
|
|
LDAP_DOMAIN toto.com
|
|
LDAP_GLOB_UID vmail
|
|
LDAP_GLOB_GID vmail
|
|
LDAP_HOMEDIR maildrop
|
|
LDAP_MAILDIR maildrop
|
|
LDAP_FULLNAME cn
|
|
LDAP_CLEARPW userPassword
|
|
</pre>
|
|
<b>LDAP_DOMAIN</b> ne servira uniquement si l'utilisateur ne rentrera pas de nom de
|
|
domaine lors de son login. Ainsi la gestion est transparente comme pour les
|
|
serveurs de mail, lorsqu'il rajoute le nom de domaine. L'utilisateur <b>LDAP_BINDDN</b>
|
|
devra pouvoir lire les entrées des champs password et faire des recherches sur
|
|
l'adresse email.<br>
|
|
|
|
<i>TODO</i>
|
|
|
|
|
|
|
|
<h1>Programmes additionnels</h1>
|
|
<h2>Installation du webmail: IMP</h2>
|
|
|
|
Pour installer IMP, il faut la librairie Horde, que l'on trouvera au même endroit que IMP.
|
|
Décompressez les sources de horde, puis dans le répertoire horde, décompressez les sources de IMP.
|
|
Lisez la documentation se trouvant dans horde/doc/INSTALL et horde/imp/doc/INSTALL.
|
|
Doit-on parler de la base de données gérant les sessions.
|
|
|
|
Une fois les 2 programmes installés et configurés, on va passer à la configuration du Webmail.
|
|
Editez le fichier de configuration de IMP config/servers.php3.
|
|
Ce fichier permet d'afficher la liste des serveurs IMAP auquel l'utilisateur pourra se connecter.
|
|
Pour le moment, on en a configuré un seul.
|
|
<pre>
|
|
<?php
|
|
$IMAPServers = array();
|
|
$IMAPServers['localhost'] = new IMAPServer('Webmail',
|
|
'localhost',
|
|
143,
|
|
'',
|
|
'toto.com');
|
|
?>
|
|
</pre>
|
|
|
|
Editer le fichier <i>imp/config/ldap.php3</i>, qui contiendra la liste des serveurs LDAP auquel
|
|
IMP pourra se connecter pour faire des recherches.
|
|
<pre>
|
|
<?php
|
|
$LDAPServers = array();
|
|
$LDAPServers['localhost'] = new LDAPServer('Annuaire',
|
|
'Annuaire de Toto.com',
|
|
'localhost',
|
|
'dc=toto,dc=com',
|
|
'sn',
|
|
'cn,mail,sn,givenname',
|
|
'contains,begins,ends');
|
|
|
|
?>
|
|
</pre>
|
|
Dans le fichier <i>imp/config/defaults.php3</i>, activez cette variable à TRUE, pour que IMP utilise la liste
|
|
des serveurs IMAP configurés dans le fichier <i>imp/config/servers.php3</i>
|
|
<pre>$default->use_server_list = TRUE;</pre>
|
|
On utilise Courier-Imap, alors il faut modifier la valeur de la variable personal_folders.
|
|
<pre>$default->personal_folders = 'INBOX.'</pre>
|
|
|
|
|
|
<h1>FAQ</h1>
|
|
|
|
<ol>
|
|
<li><b>Comment une personne peut avoir plusieurs adresses emails ?</b><br>
|
|
Il suffit de mettre plusieurs valeurs dans l'attribut mails, les clients LDAP
|
|
devraient tous savoir gérer les valeurs multi-évaluées.
|
|
<li><b>Comment envoyer un mail à un groupe de personnes ?</b><br>
|
|
Il suffit de créer un profil, contenant plusieurs adresses emails dans
|
|
l'attribut maildrop. Une seconde méthode serait de rajouter pour chaque
|
|
personne, dans son attribut mail, le nom du groupe à rajouter.
|
|
<li><b>Comment définir que tous les domaines soient équivalents ?</b><br>
|
|
Il suffit de définir LDAP_DOMAIN à la valeur *
|
|
</ol>
|
|
<h1>Annexe</h1>
|
|
|
|
<h2>Remerciements</h2>
|
|
Je tiens remercier la société <a href="http://www.alcove.com/">Alcôve</a> pour
|
|
son effort en faveur de l'Open Source, et qui m'a permis de me former sur les
|
|
outils utilisés ci-dessus.<br>
|
|
Et les auteurs des programmes cités sans lesquels ce guide n'existerait pas.<br>
|
|
Et aussi frédéric massot pour ses commentaires :-).<br>
|
|
<h2>Références</h2>
|
|
|
|
Un Tutorial LDAP en français:
|
|
<a href="http://www-sop.inria.fr/semir/personnel/Laurent.Mirtain/LDAP.html">http://www-sop.inria.fr/semir/personnel/Laurent.Mirtain/LDAP.html</a><br>
|
|
Installation d'un serveur LDAP (de type stand-alone) sous Linux.
|
|
<a href="http://www.chez.com/frafart/documents/LDAP.html">http://www.chez.com/frafart/documents/LDAP.html</a><br>
|
|
|
|
|
|
<i>Je ne donne aucune garantie sur le contenu de ce document, à vos risques et périls.</i>
|
|
</body>
|
|
</html>
|