4 231
modifications
(Page créée avec « =1. Installation= Pour installer OpenLDAP :</p> <pre># aptitude install ldap-server ldap-client</pre> La configuration de openldap se fait dans <code>/etc/ldap/</code>. Le da... ») |
Aucun résumé des modifications |
||
(6 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
= | [[Category:serveur]] | ||
Pour installer OpenLDAP : | [[Category:debian]] | ||
'''<span style="color: red;">Tuto plus vraiment à jour (a l'origine écrit sous debian lenny)</span>''' | |||
[[Category:toupdate]] | |||
=Installation= | |||
Pour installer OpenLDAP : | |||
<pre># aptitude install ldap-server ldap-client</pre> | <pre># aptitude install ldap-server ldap-client</pre> | ||
La configuration de openldap se fait dans <code>/etc/ldap/</code>. Le daemon OpenLDAP s'appèle slapd. Voici un exemple de fichier < | La configuration de openldap se fait dans <code>/etc/ldap/</code>. Le daemon OpenLDAP s'appèle slapd. Voici un exemple de fichier <code>slapd.conf</code> : | ||
<pre><nowiki> | |||
# This is the main slapd configuration file. See slapd.conf(5) for more | |||
# info on the configuration options. | |||
####################################################################### | |||
# Global Directives: | |||
# Features to permit | |||
include /etc/ldap/schema/core.schema | |||
include /etc/ldap/schema/cosine.schema | |||
include /etc/ldap/schema/nis.schema | |||
include /etc/ldap/schema/inetorgperson.schema | |||
include /etc/ldap/schema/mozillaorgperson.schema | |||
pidfile /var/run/slapd/slapd.pid | |||
argsfile /var/run/slapd/slapd.args | |||
loglevel 296 | |||
schemacheck on | |||
modulepath /usr/lib/ldap | |||
moduleload back_bdb | |||
sizelimit 500 | |||
# The tool-threads parameter sets the actual amount of cpu's that is used | |||
# for indexing. | |||
tool-threads 1 | |||
####################################################################### | |||
# Specific Backend Directives for bdb: | |||
# Backend specific directives apply to this backend until another | |||
# 'backend' directive occurs | |||
backend bdb | |||
checkpoint 512 30 | |||
TLSCertificateFile /etc/ldap/ssl/ldap.pem | |||
TLSCertificateKeyFile /etc/ldap/ssl/ldap.key | |||
TLSCACertificateFile /etc/ldap/ssl/ca.pem | |||
TLSCipherSuite HIGH | |||
require authc | |||
password-hash {SSHA} | |||
#disallow bind_v2 | |||
database bdb | |||
suffix "dc=domain,dc=tld" | |||
rootdn "cn=admin,dc=domain,dc=tld" | |||
rootpw {SSHA}HJsgK682kFZk | |||
directory "/srv/ldap/domain/" | |||
#cache de 2MB | |||
dbconfig set_cachesize 0 2097152 0 | |||
dbconfig set_lk_max_objects 1500 | |||
dbconfig set_lk_max_locks 1500 | |||
dbconfig set_lk_max_lockers 1500 | |||
index objectClass eq | |||
lastmod on | |||
# replogfile /var/lib/ldap/replog | |||
# The userPassword by default can be changed | |||
# by the entry owning it if they are authenticated. | |||
# Others should not be able to see it, except the | |||
# admin entry below | |||
# These access lines apply to database #1 only | |||
access to attrs=userPassword,shadowLastChange | |||
by dn="cn=admin,dc=domain,dc=tld" write | |||
by anonymous auth | |||
by self write | |||
by * none | |||
# Ensure read access to the base for things like | |||
# supportedSASLMechanisms. Without this you may | |||
# have problems with SASL not knowing what | |||
# mechanisms are available and the like. | |||
# Note that this is covered by the 'access to *' | |||
# ACL below too but if you change that as people | |||
# are wont to do you'll still need this if you | |||
# want SASL (and possible other things) to work | |||
# happily. | |||
#access to dn.base="" by * read | |||
= | access to dn.subtree="ou=pfoo,ou=addressbook,dc=domain,dc=tld" | ||
by dn="cn=pfoo,ou=users,dc=domain,dc=tld" write | |||
by * none | |||
== | access to dn="ou=users,dc=domain,dc=tld" | ||
C'est la première chose à définir, a savoir, quels schémas le serveur doit supporter. Les schémas sont placés dans <code>/etc/ldap/schema</code>. Voici ceux que j'utilise : | by * none | ||
access to dn="ou=addressbook,dc=domain,dc=tld" | |||
by dn.children="ou=users,dc=domain,dc=tld" read | |||
by * none | |||
access to dn="dc=domain,dc=tld" | |||
by dn="cn=admin,dc=domain,dc=tld" write | |||
by dn.children="ou=users,dc=domain,dc=tld" read | |||
by * none | |||
access to * | |||
by dn="cn=admin,dc=domain,dc=tld" write | |||
by * none | |||
####################################################################### | |||
# Specific Directives for database #2, of type 'other' (can be bdb too): | |||
# Database specific directives apply to this databasse until another | |||
# 'database' directive occurs | |||
#database <other> | |||
# The base of your directory for database #2 | |||
#suffix "dc=debian,dc=org" | |||
</nowiki></pre> | |||
=Configuration globale= | |||
==Les schémas== | |||
C'est la première chose à définir, a savoir, quels schémas le serveur doit supporter. Les schémas sont placés dans <code>/etc/ldap/schema</code>. Voici ceux que j'utilise : | |||
<pre> | <pre> | ||
include /etc/ldap/schema/core.schema | include /etc/ldap/schema/core.schema | ||
Ligne 15 : | Ligne 131 : | ||
</pre> | </pre> | ||
== | ==Log et exécution== | ||
Pour que slapd log les actions effectués, il faut définir le niveau de log avec la directive <code>loglevel</code>. Voici un petit tableau récapitulant les différents loglevels : | Pour que slapd log les actions effectués, il faut définir le niveau de log avec la directive <code>loglevel</code>. Voici un petit tableau récapitulant les différents loglevels : | ||
<pre> | <pre> | ||
Niveau Description | Niveau Description | ||
-1 enable all debugging | -1 enable all debugging | ||
Ligne 35 : | Ligne 150 : | ||
2048 print entry parsing debugging | 2048 print entry parsing debugging | ||
</pre> | </pre> | ||
Vous pouvez additionner les différents niveaux de log pour bénéficier de plusieurs options de log.<br | |||
Pour que les logs fonctionnent, ajoutez la ligne suivante dans <code>/etc/syslog.conf</code> puis redémarrez syslog (<code>/etc/init.d/sysklogd restart</code>) : | Vous pouvez additionner les différents niveaux de log pour bénéficier de plusieurs options de log.<br /> | ||
Pour que les logs fonctionnent, ajoutez la ligne suivante dans <code>/etc/syslog.conf</code> puis redémarrez syslog (<code>/etc/init.d/sysklogd restart</code>) : | |||
<pre>local4.* /var/log/ldap.log</pre> | <pre>local4.* /var/log/ldap.log</pre> | ||
D'autres directives doivent être définies : | D'autres directives doivent être définies : | ||
< | * <code>pidfile filename</code> : spécifie le fichier dans lequel le pid de slapd sera stocké. | ||
* <code>argsfile filename</code> : spécifie le fichier où les arguments qu'il faut passer à slapd lors de son lancement sont stockés. | |||
* <code>schemacheck on|off</code> : spécifie s'il faut vérifier la conformité de toutes les entrées aux schémas configurés | |||
Dans mon cas : | |||
Dans mon cas : | |||
<pre> | <pre> | ||
pidfile /var/run/slapd/slapd.pid | pidfile /var/run/slapd/slapd.pid | ||
Ligne 51 : | Ligne 167 : | ||
</pre> | </pre> | ||
== | ==Autres options== | ||
< | * <code>modulepath</code> : spécifie où sont stockés les modules. | ||
< | * <code>moduleload</code> : spécifie les modules à loader. | ||
< | * <code>sizelimit</code> : spécifie le nombre maximum d'entrée retourné lors d'une recherche | ||
Ma configuration : | Ma configuration : | ||
<pre> | <pre> | ||
modulepath /usr/lib/ldap | modulepath /usr/lib/ldap | ||
Ligne 63 : | Ligne 179 : | ||
</pre> | </pre> | ||
==SSL== | |||
== | slapd permet de sécuriser les transactions en SSL. Voici la configuration que j'utilise : | ||
slapd permet de sécuriser les transactions en SSL. Voici la configuration que j'utilise: | |||
<pre> | <pre> | ||
TLSCertificateFile /etc/ldap/ssl/ldap.pem | TLSCertificateFile /etc/ldap/ssl/ldap.pem | ||
Ligne 73 : | Ligne 188 : | ||
</pre> | </pre> | ||
Définition des directives :</ | Définition des directives : | ||
* <code>TLSCertificateFile</code>: spécifie l'emplacement du certificat du serveur. | |||
* <code>TLSCertificateKeyFile</code>: spécifie l'emplacement de la clé privée du certificat. | |||
* <code>TLSCACertificateFile</code>: spécifie l'emplacement du certificat de la CA qui a permit de signer le certificat de slapd. | |||
* <code>TLSCipherSuite</code>: spécifie les spécifications de chiffrement | |||
La section du fichier de configuration de openssl correspondante : | |||
La section du fichier de configuration de openssl correspondante : | |||
<pre> | <pre> | ||
[ | [OPENLDAP] | ||
basicConstraints = critical, CA:FALSE | nsComment = "OpenLDAP Certificate" | ||
subjectKeyIdentifier = hash | |||
keyUsage = digitalSignature, keyEncipherment | authorityKeyIdentifier = keyid,issuer:always | ||
issuerAltName = issuer:copy | |||
nsCertType = server | basicConstraints = critical,CA:FALSE | ||
keyUsage = digitalSignature, nonRepudiation, keyEncipherment | |||
nsCertType = server | |||
extendedKeyUsage = serverAuth | |||
</pre> | </pre> | ||
== | ==SASL== | ||
== | ==Autres options de sécurité== | ||
password-hash : spécifie la méthode de cryptage des mots de passe par défaut. Les différentes options possible sont :< | *<code>password-hash</code> : spécifie la méthode de cryptage des mots de passe par défaut. Les différentes options possible sont : | ||
** <code>{CRYPT}</code> : utilise la fonction crypt() de unix | |||
** <code>{MD5}</code> : hachage par MD5 | |||
** <code>{SHA}</code> : hachage en SHA-1 | |||
** <code>{SSHA}</code> : (Salted Secure Hash Algorithm) hachage en SHA-1 avec un meilleur support du seed. C'est l'option recommandée. | |||
*<code>require</code> : spécifie les conditions d'accès au serveur. Les options possibles sont : | |||
** <code>none</code> | |||
** <code>authc</code> : tout client doit s'authentifier | |||
* <code>allow</code> et <code>disallow</code> : permet d'autoriser ou de ne pas autoriser certaines fonctions. | |||
Ma configuration : | |||
Ma configuration : | |||
<pre> | <pre> | ||
require authc | require authc | ||
Ligne 111 : | Ligne 226 : | ||
</pre> | </pre> | ||
= | =Configuration de la base de donnée= | ||
== | ==Ajout d'une base== | ||
Dans mon exemple, j'ajoute les lignes suivantes au fichier <code>/etc/ldap/slapd.conf</code> : | Dans mon exemple, j'ajoute les lignes suivantes au fichier <code>/etc/ldap/slapd.conf</code> : | ||
<pre> | <pre> | ||
database bdb | database bdb | ||
suffix "dc= | suffix "dc=domain,dc=tld" | ||
rootdn "cn=admin,dc= | rootdn "cn=admin,dc=domain,dc=tld" | ||
rootpw {SSHA}Xe7Lb0SZi8B7F4CiqwRV8t3cm0R2XdYc | rootpw {SSHA}Xe7Lb0SZi8B7F4CiqwRV8t3cm0R2XdYc | ||
directory "/srv/ldap" | directory "/srv/ldap" | ||
Ligne 129 : | Ligne 244 : | ||
# replogfile /var/lib/ldap/replog | # replogfile /var/lib/ldap/replog | ||
</pre> | </pre> | ||
< | Une petite explication : | ||
< | * <code>database bdb</code> : spécifie qu'on créé une base de donnée de type bdb (berkeley DB). Toute les lignes suivant celle-ci s'appliqueront à cette base de donnée jusqu'à ce qu'une autre base de donnée soit définie par la même directive. | ||
* <code>suffix</code> : spécifie la racine de la base | |||
* <code>rootdn</code> : défini le super-utilisateur de la base de donnée. C'est lui qui aura tous les pouvrois. | |||
* <code>rootpw</code> : défini le mot-de-passe du super-utilisateur. Pour générer le mot-de-passe, utilisez la commande <code>/usr/sbin/slappasswd -h '{SSHA}' -s password -v</code> où password est le mot-de-passe souhaité. | |||
* <code>directory</code> : spécifie le dossier dans lequel la base de donnée sera créée. | |||
* <code>dbconfig set_cachesize</code> : spécifie la taille du cache | |||
* <code>index</code> : spécifie les options d'indexation pour accélérer les recherches. Les types d'index supportés sont : | |||
**approx (approximate) | |||
**eq (equality) | |||
**pres (presence) | |||
**sub (substring) | |||
* <code>lastmod</code> : spécifie s'il faut garder en mémoire la dernière modification des entrées | |||
* <code>replogfile</code> : spécifie le dossier où sont stockés les logs de réplication. C'est fonction est utile si vous faite de la réplication entre plusieurs serveurs ldap | |||
==Configuration des ACLs de la base== | |||
Les ACLs définissent qui a accès à quoi dans la base de donnée. | |||
Tout d'abord, on va définir les accès aux mots-de-passes. | |||
== | |||
Les ACLs définissent qui a accès à quoi dans la base de donnée. | |||
Tout d'abord, on va définir les accès aux mots-de-passes. | |||
<pre> | <pre> | ||
# The userPassword by default can be changed | # The userPassword by default can be changed | ||
Ligne 157 : | Ligne 270 : | ||
# These access lines apply to database #1 only | # These access lines apply to database #1 only | ||
access to attrs=userPassword,shadowLastChange | access to attrs=userPassword,shadowLastChange | ||
by dn="cn=admin,dc= | by dn="cn=admin,dc=domain,dc=tld" write | ||
by anonymous auth | by anonymous auth | ||
by self write | by self write | ||
by * none | by * none | ||
</pre> | </pre> | ||
Petite explication :</ | Petite explication : | ||
* <code>access to</code> : spécifie pour quoi on défini des accès. Dans le cas présent, c'est l'accès aux mots-de-passes | |||
* <code>by dn="cn=admin,dc=domain,dc=tld" write</code> : autorise l'accès en écriture par le super-utilisateur admin. L'accès en écriture signifie un accès complet. | |||
* <code>by anonymous auth</code> : autorise aux utilisateurs anonymes de se loguer | |||
* <code>by self write</code> : autorise l'utilisateur à changer son propre mot-de-passe | |||
* <code>by * none</code> : restreint l'accès à tous les autres utilisateurs. | |||
Les permissions d'accès se définissent dans l'ordre de haut en bas. Les premières permissions doivent être les plus précises, et les dernières les plus générales. Par exemple, ici, on interdit l'accès | Les permissions d'accès se définissent dans l'ordre de haut en bas. Les premières permissions doivent être les plus précises, et les dernières les plus générales. Par exemple, ici, on interdit l'accès | ||
à tous le monde en dernier, mais les permissions précédentes restent valides. Si on avait interdit l'accès en ajoutant une ligne <code>by * none</code> à la première ligne, les lignes suivantes n'auraient | à tous le monde en dernier, mais les permissions précédentes restent valides. Si on avait interdit l'accès en ajoutant une ligne <code>by * none</code> à la première ligne, les lignes suivantes n'auraient | ||
pas été appliqué. | pas été appliqué. | ||
Maintenant, on va définir les accès à la structure de la base. Voici la structure qu'on va mettre en place :</ | Maintenant, on va définir les accès à la structure de la base. Voici la structure qu'on va mettre en place : | ||
Précédemment, on a défini la racine de notre base avec la directive <code>suffix</code> | |||
On va définir un <code>ou</code> addressbook. Un <code>ou</code> peut s'apparenter à un sous-dossier | |||
Ensuite, on va définir dans le <code>ou</code> addressbook d'autres <code>ou</code> pour chaque utilisateurs. | |||
A la racine, nous allons aussi créer un <code>ou</code> users qui contiendra les utilisateurs de la base de donnée | |||
Voici les permissions correspondantes pour cette structure : | |||
Voici les permissions correspondantes pour cette structure : | |||
<pre> | <pre> | ||
access to dn.subtree="ou=pfoo,ou=addressbook,dc= | access to dn.subtree="ou=pfoo,ou=addressbook,dc=domain,dc=tld" | ||
by dn="cn=pfoo,ou=users,dc= | by dn="cn=pfoo,ou=users,dc=domain,dc=tld" write | ||
by * none | by * none | ||
access to dn="ou=users,dc= | access to dn="ou=users,dc=domain,dc=tld" | ||
by * none | by * none | ||
access to dn="ou=addressbook,dc= | access to dn="ou=addressbook,dc=domain,dc=tld" | ||
by dn.children="ou=users,dc= | by dn.children="ou=users,dc=domain,dc=tld" read | ||
by * none | by * none | ||
access to dn="dc= | access to dn="dc=domain,dc=tld" | ||
by dn="cn=admin,dc= | by dn="cn=admin,dc=domain,dc=tld" write | ||
by dn.children="ou=users,dc= | by dn.children="ou=users,dc=domain,dc=tld" read | ||
by * none | by * none | ||
access to * | access to * | ||
by dn="cn=admin,dc= | by dn="cn=admin,dc=domain,dc=tld" write | ||
by * none | by * none | ||
</pre> | </pre> | ||
On donne un accès en écriture à l'utilisateur pfoo (défini par la directive <code>cn</code> qui se situe dans le <code>ou>users</code> | En détail : | ||
Le premier paragraphe défini les accès pour le ou pfoo, qui lui même se situe dans le ou addressbook, qui lui même se situe à la racine de la base. | |||
* La directive <code>dn.subtree</code> permet de définir l'accès pour le <code>ou</code> pfoo et toute l'arborescence en dessou de ce <code>ou</code>. | |||
La directive <code>dn.children</code> permet de donner l'accès (en lecture) à tous les utilisateurs de la <code>ou</code> users. On refuse l'accès à tous les autres.</ | * On donne un accès en écriture à l'utilisateur pfoo (défini par la directive <code>cn</code> qui se situe dans le <code>ou>users</code>. | ||
Dans le deuxième paragraphe, on défini les accès au <code>ou</code> users. On ne donne l'accès à personne étant donné qu'on y stocke les utilisateurs et leurs mot-de-passes. | |||
Dans le troisième paragraphe, on défini l'accès au <code>ou</code> addressbook. | |||
* La directive <code>dn.children</code> permet de donner l'accès (en lecture) à tous les utilisateurs de la <code>ou</code> users. On refuse l'accès à tous les autres. | |||
Dans le quatrième paragraphe, on défini les accès à la racine de la base. | |||
* On donne un accès au <code>cn</code> admin ainsi qu'à tous les <code>cn</code> stockés dans le <code>ou</code> users et on refuse l'accès aux autres. | |||
Dans le dernier paragraphe, on précise les permissions pour la totalité de la base : | |||
* On ne donne un accès que au <code>cn</code> admin et on refuse l'accès à tous les autres | |||
On ne donne un accès que au <code>cn</code> admin et on refuse l'accès à tous les autres | |||
= | =Insertion de la structure dans la base= | ||
Bien que la base de donnée et ses accès soient configurés, elle reste pour l'instant vide. Nous allons la remplir en utilisant un fichier au format LDIF. | Bien que la base de donnée et ses accès soient configurés, elle reste pour l'instant vide. Nous allons la remplir en utilisant un fichier au format LDIF. | ||
Ouvrez votre éditeur de texte, collez les lignes suivantes dedans et enregistrez le nom avec le nom que vous voulez. | Ouvrez votre éditeur de texte, collez les lignes suivantes dedans et enregistrez le nom avec le nom que vous voulez. | ||
<pre> | <pre> | ||
#Racine de la base | #Racine de la base | ||
dn: dc= | dn: dc=domain, dc=tld | ||
objectClass: top | objectClass: top | ||
objectClass: dcObject | objectClass: dcObject | ||
objectClass: organization | objectClass: organization | ||
dc: | dc: domain | ||
o: | o: your domain | ||
# ou des utilisateurs de la base | # ou des utilisateurs de la base | ||
dn: ou=users,dc= | dn: ou=users,dc=domain,dc=tld | ||
objectClass: top | objectClass: top | ||
objectClass: organizationalunit | objectClass: organizationalunit | ||
Ligne 235 : | Ligne 351 : | ||
# utilisateur pfoo de la base | # utilisateur pfoo de la base | ||
dn: cn=pfoo,ou=users,dc= | dn: cn=pfoo,ou=users,dc=domain,dc=tld | ||
cn: pfoo | cn: pfoo | ||
objectClass: top | objectClass: top | ||
Ligne 243 : | Ligne 359 : | ||
# ou du carnet d'adresse global | # ou du carnet d'adresse global | ||
dn: ou=addressbook, dc= | dn: ou=addressbook, dc=domain, dc=tld | ||
objectClass: top | objectClass: top | ||
objectClass: organizationalUnit | objectClass: organizationalUnit | ||
Ligne 249 : | Ligne 365 : | ||
# ou du carnet d'adresse de pfoo | # ou du carnet d'adresse de pfoo | ||
dn: ou=pfoo, ou=addressbook, dc= | dn: ou=pfoo, ou=addressbook, dc=domain, dc=tld | ||
objectClass: top | objectClass: top | ||
objectClass: organizationalUnit | objectClass: organizationalUnit | ||
ou: pfoo | ou: pfoo | ||
</pre> | </pre> | ||
Une fois de plus, le mot-de-passe crypté de la ligne <code>userPassword:</code> de l'utilisateur pfoo peut être trouvé en utilisant la commande suivante : | Une fois de plus, le mot-de-passe crypté de la ligne <code>userPassword:</code> de l'utilisateur pfoo peut être trouvé en utilisant la commande suivante : | ||
<pre> | <pre>/usr/sbin/slappasswd -h '{SSHA}' -s password -v</pre> | ||
Une fois le fichié créé et enregistré, il ne reste plus qu'à l'ajouter à la base de donnée: | Une fois le fichié créé et enregistré, il ne reste plus qu'à l'ajouter à la base de donnée: | ||
<pre> | <pre>ldapadd -x -W -D "cn=admin,dc=domain,dc=tld" -f votre_fichier</pre> | ||
= | =Modification du fichier /etc/default/slapd pour les ports à écouter= | ||
Une petite modification est nécessaire pour que slapd écoute bien le port par défaut pour les connexions SSLs. | Une petite modification est nécessaire pour que slapd écoute bien le port par défaut pour les connexions SSLs. | ||
Ouvrez le fichier <code>/etc/default/slapd</code> et ajoutez y les lignes suivantes : | Ouvrez le fichier <code>/etc/default/slapd</code> et ajoutez y les lignes suivantes : | ||
<pre> | <pre> | ||
SLAPD_SERVICES="ldap://127.0.0.1:389/ ldap://213.186.47.110:389/ ldaps://213.186.47.110:636/" | SLAPD_SERVICES="ldap://127.0.0.1:389/ ldap://213.186.47.110:389/ ldaps://213.186.47.110:636/" | ||
</pre> | </pre> | ||
Si une autre ligne <code>SLAPD_SERVICES</code> est préexistante, supprimez la.<br | Si une autre ligne <code>SLAPD_SERVICES</code> est préexistante, supprimez la.<br /> | ||
Le démon slapd écoutera donc en local sur le port 389 (nécessaire pour utiliser une interface de gestion web comme <code>phpldapadmin</code>), ainsi que sur l'ip du serveur sur les ports | Le démon slapd écoutera donc en local sur le port 389 (nécessaire pour utiliser une interface de gestion web comme <code>phpldapadmin</code>), ainsi que sur l'ip du serveur sur les ports 389 (connexions normales) et 636 (connexions SSLs) | ||
389 (connexions normales) et 636 (connexions SSLs)</ | |||
=Lancement= | |||
Il ne reste plus qu'à lancer le serveur : | |||
<pre>/etc/init.d/slapd start</pre> | |||
Vous pouvez tester votre configuration en utilisant un client ldap. Pour ma part, j'ai fait mes tests avec le client <code>ldapbrowser</code>. | |||
Pour vous connecter : | |||
* <code>Base DN</code> est la racine de votre base de donnée (dc=domain,dc=tld dans mon cas) | |||
* <code>User DN</code> est le chemin complet de votre utilisateur (cn=pfoo,ou=users,dc=domain,dc=tld dans mon cas) | |||
=thunderbird= | |||
J'utilise thunderbird en tant que client mail. | |||
Pour configurer votre annuaire LDAP, il suffit d'aller dans le carnet d'adresse, de faire fichier > nouveau > annuaire LDAP puis de configurer les différents champs. Utilisez biensur de préférence une connexion chiffrée en SSL. | |||
Le plus gros problème est que thunderbird est à l'heure ou j'écris ces lignes incapable d'écrire dans le carnet d'adresse LDAP. Vous serrez donc obligé de modifier votre carnet d'adresse à la main (ou en utilisant une interface d'administration comme <code>phpldapadmin</code>). | |||
Le plus gros problème est que thunderbird est incapable d'écrire dans le carnet d'adresse LDAP. Vous serrez donc obligé de modifier votre carnet d'adresse à la main (ou en utilisant une interface | |||
d'administration comme <code>phpldapadmin</code>). | |||