Date de publication: le mardi 15 mai 2007 Ă 23h13
Dernière modification: par Pascal BOYER le dimanche 15 juillet 2007 à 08h11
« Article précédent: Cyrus IMAP : Plus encore...
» Article suivant: Postfix : le fichier main.cf
Avertissement
A tous ceux qui suivent cette série d’articles afin de mettre en place un serveur de mails, je recommande vivement, et dès à présent, de se reporter aux articles Postfix : le fichier main.cf , Postfix : le fichier master.cf et Postfix : le fichier smtpd.conf avant d’envisager la configuration d’un annuaire LDAP.
En effet, il me semble prudent de commencer par un fonctionnement simple de Postfix avant d'envisagé d’ajouter un annuaire LDAP pour faire de l’authentification et/ou du contrôle d’adresses mail.
Authentification ldap
Après avoir vu comment le serveur imapd Cyrus IMAP authentifie les utilisateurs avec la base de données sasldb2 , nous allons voir qu’il est possible d’authentifier les utilisateurs grâce au protocole LDAP.
Comme d’habitude, si, au cours de votre lecture, vous rencontriez des inexactitudes surtout prenez le temps de m’en informer par mail .
J’insiste sur le fait de partager vos compétences et savoirs en terme d’administration d’annuaire LDAP car, comme je le rappelle en conclusion, peu de documentation - surtout en français - est disponible sur le net. Particulièrement, une documentation détaillée sur l’authentification des comptes UNIX serait la bienvenue.
Le contexte
Si vous avez suivi la procédure d’installation du serveur imapd Cyrus IMAP décrite dans les 4 premiers articles, vous savez que l’authentification des utilisateurs auprès du seveur imapd se fait grâce au protocole SASL ( sans utiliser le serveur d’authentification saslauthd ) qui utilise la base de données /etc/sasldb2 , laquelle contient les couples login/passwd de chaque utilisateur ayant une Bà L.
L’accès à la base de données /etc/sasldb2 se fait par l’intermédiaire d’un mécanisme , appelé sasldb , et défini par:
MECHANISMS="sasldb"
dans le fichier /etc/default/ saslauthd , fichier de configuration du serveur d’authentification du même nom.
Et c’est bien sûr ce couple login/passwd (demandé chaque fois que vous lancez votre logiciel de gestion de mails) qui est vérifié par le serveur d’authentification saslauthd .
- Si le login et le passwd que vous spécifiez sont exacts, alors vous êtes authentifiés et vous pouvez donc utiliser le serveur imapd pour consulter et gérer (et non pas envoyer !) les mails que vous avez reçus et qui se trouvent dans votre Bà L.
- Si le login et le passwd que vous spécifiez ne sont pas exacts alors l’authentification échoue et vous êtes invités à les retaper.
Pourquoi ldap
L’utilisation de la base de données /etc/sasldb2 impose de créer un couple login/passwd pour chaque création de Bà L. Or l’accès aux commandes permettant la création de ce couple login/passwd est réservé à root (par défaut). Il n’est donc pas possible, à moins de redéfinir les droits sur ces commandes, de déléguer cette tâche.
De plus, ces couples login/passwd ne peuvent servir qu’au serveur de mail. Il n’est pas possible de faire de cette base de données un système centralisé d’authentification.
Par contre, la mise en place d’un annuaire LDAP, en plus d’offrir bien d’autres services, répond à ces deux limites du mécanisme sasldb .
Pré-requis
Avant de vouloir taper une quelconque commande, il est nécessaire d’installer "Openldap".
Voici les packages que j’ai installés:
dpkg -l '*ldap*'
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé |/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais) ||/ Nom Version Description +++-==-========================================================= ii ldap-utils 2.3.27-1 OpenLDAP utilities ii libldap-2.3-0 2.3.27-1 OpenLDAP libraries ii libldap2 2.1.30-13+b1 OpenLDAP libraries ii libldap2-dev 2.1.30-13+b1 OpenLDAP development libraries ii php4-ldap 4.4.4-1 LDAP module for php4 ii postfix-ldap 2.3.3-1 LDAP map support for Postfix ii libapache2-mod-ldap-userdir 1.1.8-1 Apache2 module that provides UserDir lookups ii libnet-ldap-perl 0.33-2 A Client interface to LDAP servers ii libnss-ldap 251-4 NSS module for using LDAP as a naming servic
1°/ Le fichier /etc/saslauthd.conf
Ce fichier est le fichier de configuration par défaut sous Debian du serveur d’authentification saslauthd (voir ~# man saslauthd ).
cd /etc
Puis on crée le fichier:
touch saslauthd.conf
Voici un exemple commenté de contenu de ce fichier:
# On indique le nom du serveur (ou son @IP) LDAP_SERVERS: ldap://<@IP>/ # Ici on définit le domaine du serveur: LDAP_DEFAULT_DOMAIN: foo.net # Ici on indique le temps maxi que devra durer la requète/recherche avant d'abandonner. # Exprimé en secondes. LDAP_TIMEOUT: 10 # Ici on indique le temps maxi que peut prendre une recherche. LDAP_TIME_LIMIT: 10 # Option à utiliser avec prudence (expérimentale) LDAP_CACHE_TTL: 30 # Ici on spécifie la taille du cache (en octet) LDAP_CACHE_MEM: 32768 # Ici on indique la version du protocole LDAP à utiliser pour interroger le serveur LDAP. LDAP_VERSION: 3 # Ici on indique qu'il ne faut pas utiliser le protocole SASL pour la connexion au serveur LDAP LDAP_USE_SASL: no # Ici on va indiquer la méthode de vérification du mot de passe. # ATTENTION: Si cette règle n'est pas initialisée alors le filtre de recherche # recherchera la valeur de l'attribut "userPassword". # IMPORTANT: "bind" est la valeur par défaut si et seulement si LDAP_USE_SASL: no # Valeurs possibles: bind|custom|fastbind # (custom semble être 2 à 3fois plus rapide que bind) LDAP_AUTH_METHOD: bind # Ici on indique le nom de l'utilisateur qui se connecte. # Si on commente cette règle (ainsi que la suivante) alors la connexion au serveur LDAP # se fera anonymement. LDAP_BIND_DN: cn=admin,dc=linuxorable,dc=net # Puis on indique le mot de passe de cet utilisateur. # Attention: le mot de passe transite en clair !!! LDAP_BIND_PW: xxxx # Ici on indique à partir d'où on commence la recherche LDAP_SEARCH_BASE: ou=mail,dc=foo,dc=net # On indique la profondeur de la recherche (ici on recherche dans les sous-répertoires) # Valeurs possibles: sub, one, base LDAP_SCOPE: sub # IL N'EST PAS OBLIGATOIRE DE DÉFINIR UN FILTRE !!! # EN EFFET, ET PAR DÉFAUT, UN uid VALANT LE LOGIN DE L'UTILISATEUR AINSI # QUE LA VALEUR DE L'ATTRIBUT userPassword SONT RECHERCHÉS. # Le filtre par défaut est donc: #LDAP_FILTER: uid=%u # Ici on cherche donc une entrée dont le "cn" sera égale au login entré dans le # client mail (IMP, Thunderbird etc...). LDAP_FILTER: cn=%u # # et ici on définit le nom de l'attribut qui contient le password tapé par l'utilisateur dans son client mail: LDAP_PASSWORD_ATTR: userPassword
2°/ Le fichier /etc/default/saslauthd
Ce fichier est important car:
- il est lu au démarrage du serveur d’authentification saslauthd
- c’est lui qui indique qu’il faut lire le fichier de configuration que l’on vient de créer ( /etc/ saslauthd.conf )
Les options que peut contenir ce fichier sont accessibles par la page de man (voir ~# man saslauthd )
Voici un exemple de ce fichier:
###################################################################### # # Configuration pour authentification IMAP via LDAP # # http://www.story.cz/doc/cyrus21-doc/README.Debian.simpleinstall.gz ###################################################################### # # Ce fichier est lu par le serveur d'authentification "saslauthd" # chaque fois qu'il est démarré. # ###################################################################### # Pour que le serveur d'authentification démarre automatiquement (script de démarrage /etc/init.d/saslauthd) il faut # que la ligne ci-dessous soit décommentée. START=yes # Ici on indique le mécanisme d'authentification qui sera utilisé par le serveur d'authentification saslauthd # Pour obtenir la liste des mécanismes d'authentification supportés par ce serveur, utiliser la commande: saslauthd -v # Cette règle accepte une liste de mécanismes séparés par un espace. # Ici on choisit bien sûr le mécanisme "ldap". MECHANISMS="ldap" # Pour une authentification auprès de la base /etc/sasldb2 #MECHANISMS="sasldb" # Ici on indique les paramètres de démarrage. # C'est ici qu'on indique au serveur d'authentification saslauthd quel est son fichier de configuration. PARAMS="-O /etc/saslauthd.conf"
3°/ Configuration de Cyrus IMAP
sasl_pwcheck_method: auxprop sasl_auxprop_plugin: sasldb
De plus, il est indiqué que celle-ci doit être commentée:
#sasl_pwcheck_method : saslauthd
Ainsi, cette configuration permettant de ne pas recourir au serveur d’authentification saslauthd .
Et bien nous allons tout simplement inverser ces trois règles afin de dire au serveur imapd Cyrus IMAP qu’il faut qu’il utilise maintenant le serveur d’authentification saslauthd qui, par l’intermédiaire de son fichier de configuration /etc/ saslauthd.conf , ira interroger l'annuaire LDAP.
Le fichier /etc/ imapd.conf devient donc ceci:
#sasl_pwcheck_method: auxprop sasl_pwcheck_method : saslauthd #sasl_auxprop_plugin: sasldb
Pour que le serveur imapd puisse communiquer avec le serveur LDAP il est sûrement nécessaire de définir, dans le fichier /etc/ imapd.conf , la règle sasl_mech_list: ainsi:
sasl_mech_list: plain
START=yes
A partir de maintenant, si le serveur LDAP est en service, l’authentification au serveur imapd se fera auprès du serveur LDAP et non plus auprès de la base de données sasldb2 .
4°/ Au niveau du serveur LDAP
Le but de cet article n’est pas de présenter l’installation du serveur LDAP.
Néanmoins, puisque nous allons l’utiliser pour assurer l’authentification des utilisateurs auprès du serveur imapd Cyrus-IMAP, je vous présente ci-dessous les deux fichiers important.
4.1°/ Le fichier /etc/ldap/slapd.conf
Ce fichier est le fichier de configuration du serveur slapd LDAP.
####################################
# Section "globale" du fichier #
####################################
#
# Les références des pages renvoient au livre "LDAP de O'REILLY"
#
# PARAMÊTRES LIÉS À LA SÉCURITÉ:
# ------------------------------
# On autorise les connexions au serveur LDAP avec le protocole v2 car certains clients ne supportent pas encore la version 3
# (p49)
allow bind_v2
# Ici on indique quel algorithme de hachage ou de chiffrement sera employé pour stocker la valeur (c-à -d le mot de passe)
# de l'attribut "userPassword" qui figure dans la section "Base de données". (p50)
password-hash {SSHA}
# Ici on définit les shémas qui doivent être inclus.
# "core.schema" est le schéma de base OBLIGATOIRE !(p66)
# ATTENTION !!!! L'ordre d'inclusion est IMPORTANT !!!!
# -------------- (nis.schema ne peut ĂŞtre inclus avant cosine.schema. Sinon message d'erreur:
# /etc/ldap/schema/nis.schema: line 181: AttributeType not found: "manager")
include /etc/ldap/schema/core.schema
# Les deux schémas ci-dessous sont nécessaires pour supporter l'objet "inetOrgPerson":(p66)
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
# Le schéma ci-dessous est nécessaire pour la création de comptes utilisateurs.
# Je vais sur http://ldap.akbkhome.com/index.php et je clique sur le lien "LDAP Objectclass" puis je clique sur "shadowAccount"
# et là je vois que "ID: nisSchema.2.1" donc j'en déduis que je dois inclure le schéma "nis.schema".
include /etc/ldap/schema/nis.schema
# Cette directive indique si le serveur slapd devra vérifier si les objets de l'annuaire respectent ou pas le schéma,
# lors d'une insertion ou d'une modification.
# Si la directive « schemacheck off » est placée içi, on peut,par exemple, mettre un attribut mail
# alors qu'il n'est pas défini dans la structure de l'objet "person".
schemacheck on
# Emplacement du fichier contenant le PID du démon "slapd" maitre en cours d'exécution. (p42)
pidfile /var/run/slapd/slapd.pid
# Emplacement du fichier contenant les paramètres de ligne de commande du démon slapd en cours d'exécution.
# Ce paramètre n'est pas pris en compte si slapd est démarré avec l'option -debug (p42)
argsfile /var/run/slapd.args
# Niveau des informations loguées par le démon syslogd
# Ajouter ceci Ă la fin de /etc/syslog.conf:
# local4.debug -/var/log/slapd.log (p42)
# 8 => log des connexions
# 32 => log du traitement des filtres. Ce loglevel permet aussi de déterminer les index à configurer (p54).
# 256 => log des statistiques sur les connexions, les opérations et les résultats
#loglevel 296
# Mode HYPER-SUPRA verbeux:
loglevel -1
# Emplacement des modules chargés dynamiquement:
modulepath /usr/lib/ldap
moduleload back_bdb
# Chiffrement TLS/SSL: (p45) Méthode à suivre: http://research.imb.uq.edu.au/~l.rathbone/ldap/tls.shtml (comme la mienne !!!)
# --------------------
#
# Ici on indique l'emplacement du certificat de mon AC: (http://www.openldap.org/faq/data/cache/185.html)
# ATTENTION: cette directive INDUIT la présentation de ce certificat lors d'une connexion au serveur LDAP.
# ---------- cette directive IMPLIQUE cette ligne dans /etc/ldap/ldap.conf:
# TLS_CACERT /usr/lib/ssl/mon_AC/private/mon_AC.crt
TLSCACertificateFile /usr/lib/ssl/mon_AC/private/mon_AC.crt
#
# Ici on indique si l'on souhaite authentifier ou non les clients:
# Valeurs possibles: demand ou never
TLSVerifyClient never
#
# Ici on indique l'emplacement du certificat signé du serveur.
TLSCertificateFile /usr/lib/ssl/mon_AC/certs/server_signed.pem
#
# Ici on indique l'emplacement de la clef privée du serveur.
# OpenLDAP ne supporte pas les clefs privées cryptées.
TLSCertificateKeyFile /usr/lib/ssl/mon_AC/private/server_tls.pem
#
# Ici on indique le ou les algorithmes de chiffrement que l'on souhaite utiliser.
# Pour tous les visualiser on utilise cette commande: openssl ciphers -v ALL
TLSCipherSuite 3DES:DES:HIGH
#########################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#
# Un backend EST un MOTEUR de base de données.
backend bdb
#######################################
# SECTION BASE DE DONNÉES #
#######################################
#
#
# Ici débute la section liée à une base de données.
# Cette section prend fin avec un nouvel attribut "database".
# Ici on indique quel "type" de base de données on va utiliser. Ici ce sera un gestionnaire de base de données BERKELEY DB4.
database bdb
# Ici on définit le contexte/l'espace de nommage de cette partition (cette base) de l'annuaire. (p52)
# Ce contexte est unique.
# En accord avec la RFC 2247, l'espace de nommage = le nom de domaine du serveur.
# ON NE PEUX PAS METTRE CE QUE L'ON VEUT
# "suffix" détermine la racine de la base.
suffix "dc=foo,dc=net"
# Ici on définit un utilisateur "administrateur" de cette base. C'est l'équivalent de l'utilisateur "root".
# Il a donc tous les droits.
rootdn "cn=xxxxx,dc=foo,dc=net"
#
# Puis on définit le mot de passe de cet administrateur.
# ATTENTION: ne JAMAIS inscrire içi le mot de passe en clair.
# Utiliser la commande "slappasswd -h '{SSHA}' -v" pour obtenir l'empreinte cryptée et salée du mot de passe.
rootpw {SSHA}BlT5B59z7cE0I31q9bb3YaJcVskiFbzn
# Ici on indique, au serveur LDAP, l'emplacement des bases de données.
# Ce répertoire doit avoir les droits suivants: 0700 pour root (p66) (droits par défaut: 0766)
# Valeur par défaut:
directory "/var/lib/ldap/"
# Ici on indique les droits qui doivent être appliqués à la base de données. (p53)
mode 0600
# Save the time that the entry gets modified, for database #1
# Garder cette valeur par defaut !!! (p52)
lastmod on
# Ici on permute le serveur en mode "readonly" mĂŞme pour l'administrateur.
# Ce mode doit être activé lorsqu'on a plus de mise à jour à faire. (p53)
readonly off
# Ici on définit quels index devront être pris en compte/gérés pour quels attributs.
# ATTENTION: les performances du serveur sont étroitement liées à la configuration des index !!! (p54)
# Les index SONT les critères de recherche auquels on aura accès par la suite !!!! (p66)
#
# Celui-ci est défini pour des raisons de performances:
index objectClass eq
# "sub" permet de chercher "tous les prénoms,noms et mail commençant par B".
index cn,sn,mail,uid pres,eq,sub
index departmentNumber eq
# Ici on indique le nombre d'entrées qui seront mises en mémoire (cachées)(p55)
# Ce paramètre est important pour les performances du serveur car il évite les accès disques pour chaque requête.
cachesize 1000
# Les ACL (Access Control List/Liste de Contrôle d'Accès) (p 55-59)
# Les ACL définissent les accès aux données du serveur LDAP en répondant à ces trois questions et dans cet ordre:
# 1°/ A quoi ?
# 2°/ Quel niveau d'accès: write, read, search, compare, auth, none ?
# 3°/ Qui: *, self, anonymous, users ?
# IMPORTANT: Les ACL sont appliquées selon la règle: la première correspondance l'emporte !
# ------------------
# Il résulte de ceci que les ACL les plus restrictives doivent être placées avant toutes les autres.
#
access to attribute=userPassword
by self write
by anonymous auth
by * none
# Ici, l'administrateur (by dn="cn=xxxx,dc=foo,dc=net") aura accès à tout (access to *) en écriture (write)
# puis tous les autres (by *) accèderont à tout (access to *) en lecture (read)
# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="cn=xxxxx,dc=foo,dc=net" write
by * read allow bind_v2
Si vous n’autorisez pas la version 2 du protocole LDAP, vous pourrez envoyer mais pas recevoir de mail car Postfix (jusque dans sa version 2.3.3-2 au moins) utilise cette version du protocole. D’ailleurs voici les logs obtenus si vous commentez la ligne allow bind_v2 :
postfix/smtpd[19689]: dict_ldap_lookup: In dict_ldap_lookup postfix/smtpd[19689]: dict_ldap_lookup: No existing connection for LDAP source /etc/postfix/ldap_local_recipient.cf, reopening postfix/smtpd[19689]: dict_ldap_connect: Connecting to server ldap://82.67.66.131:389 postfix/smtpd[19689]: dict_ldap_connect: Actual Protocol version used is 2. <============================== ICI !!!!! postfix/smtpd[19689]: dict_ldap_connect: Binding to server ldap://82.67.66.131:389 as dn postfix/smtpd[19689]: warning: dict_ldap_connect: Unable to bind to server ldap://82.67.66.131:389 as : 2 (Protocol error) <== ICI !!!!! postfix/smtpd[19689]: maps_find: local_recipient_maps: pascal@linuxorable.fr: search aborted <================== ICI !!!!! postfix/smtpd[19689]: mail_addr_find: pascal@linuxorable.fr -> (try again)
Par ailleurs, vous recevrez des mails vous avertissant d’un problème et dont le contenu ressemblera à ceci:
Transcript of session follows. Out: 220 euphorie.linuxorable.fr ESMTP Postfix (Debian/GNU) In: EHLO ug-out-1314.google.com Out: 250-euphorie.linuxorable.net Out: 250-PIPELINING Out: 250-SIZE 20480000 Out: 250-ETRN Out: 250-STARTTLS Out: 250-AUTH LOGIN PLAIN Out: 250-AUTH=LOGIN PLAIN Out: 250-ENHANCEDSTATUSCODES Out: 250-8BITMIME Out: 250 DSN In: MAIL FROM:<paul@gmail.com> Out: 250 2.1.0 Ok In: RCPT TO:<pascal@linuxorable.fr> Out: 451 4.3.0 <pascal@linuxorable.fr>: Temporary lookup failure <== ICI !!!!! In: QUIT Out: 221 2.0.0 Bye
4.2°/ Le fichier /etc/ldap/ldap.conf
############################################################# # # CE FICHIER EST LE FICHIER DE CONFIGURATION DU CLIENT LDAP !!! # ############################################################# HOST linuxorable.fr PORT 389 # Le client "ldapsearch" doit pouvoir accéder aux certificats de l'AC pour être en mesure de valider # le certificat du serveur. # # Ici on indique: # 1°/ que la base (pas la base de données !!!) de recherche est dc=foo,dc=fr, # 2°/ qu'il faut se connecter sur le serveur linuxorable.net par connexion cryptée, # 3°/ que le certificat de l'AC est disponible dans /etc/ldap/mon_AC/private/mon_AC.crt, # 4°/ et qu'il est obligé de s'en servir. BASE dc=foo,dc=fr URI ldap://foo.net:389/ #URI ldaps://foo.net:636/ #URI ldap://ldap.example.com ldap://ldap-master.example.com:666/ TLS_CACERT /usr/lib/ssl/mon_AC/private/mon_AC.crt TLS_REQCERT demand # La règle ci-dessous indique le répertoire où sont stockés les différents certificats nécessaires # à la validation du certificat du serveur LDAP. TLS_CACERTDIR /usr/lib/ssl/mon_AC/certs # Si on ajoute les deux règles ci-dessous, alors la passphrase du certificat client sera demandée #TLS_CERT /usr/local/ssl/certs/client.pem #TLS_KEY /usr/local/ssl/private/client.key #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never
5°/ Les fichiers .ldif
5.1°/ Exemple de fichier .ldif
Voici donc, ci-dessous, le contenu d’un fichier .ldif relatif à une utilisatrice nommée "Valérie BOYER". Oui, oui, c’est ma soeur. Et dire qu’elle ignore faire partie de MON annuaire LDAP. Quelle misère...!
Vous prendrez soin, bien sûr, de modifier les valeurs de ce fichier pour qu’elles soient en concordance avec votre annuaire LDAP.
# AJOUT D'UN UTILISATEUR DANS l'ANNUAIRE LDAP dn: cn=Valerie BOYER,ou=mail,dc=linuxorable,dc=fr cn: Valerie BOYER cn: valerie sn: BOYER mail: valerie@linuxorable.fr userPassword: xxxxxx objectClass: inetOrgPerson
ldapmodify -D "cn=admin,dc=linuxorable,dc=fr" -w "xxxxx" -x -a -f addvalerie.ldif
où xxxxx doit être remplacé par le mot de passe de l’administrateur de votre annuaire LDAP.
5.2°/ Autre exemple de fichier .ldif
Si dans le fichier /etc/ saslauthd.conf le filtre était ainsi défini:
LDAP_FILTER: uid=%u
...ce qui correspond au filtre par défaut, alors un fichier .ldif ressemblerait à ceci:
# AJOUT D'UN UTILISATEUR DANS l'ANNUAIRE LDAP
dn: uid=patrick,ou=mail,dc=linuxorable,dc=fr
uid: patrick
cn: Patrick CONTARDO
sn: CONTARDO
mail: patrick@linuxorable.fr
userPassword: {SSHA}rL2aA/N7wM2lso0h0ZsH/iFcm0rkiwEr
objectClass: inetOrgPerson où la valeur de "uid" (troisième ligne) est égale au nom de la Bà L !!!
5.3°/ A retenir
- 1°/ L’accès au serveur LDAP par imapd requiert des mots de passe en clair
- 2°/ La recherche est faite sur le dn des entrées de l’annuaire LDAP.
- 3°/ Le filtre détermine la valeur du dn dans le fichier .ldif .
Si le filtre indique une recherche de l’ uid alors le dn du fichier .ldif est:
dn: uid=patrick,ou=mail accounts,dc=linuxorable,dc=fr
Si le filtre indique une recherche sur le cn alors le dn du fichier .ldif est:
dn: cn=patrick,ou=mail,dc=linuxorable,dc=fr
- 4°/
En effet, et vous pouvez le contrôler en éditant la base de données /etc/sasldb2 avec un éditeur hexadécimal (e.g: khexedit), chaque fois que vous créerez une nouvelle entrée dans votre annuaire LDAP puis que l’utilisateur se loguera pour la première fois, alors le couple login/passwd sera inscrit dans la base de données.
Il découle de cela qu’il est important que le serveur imapd Cyrus IMAP puisse avoir accès à cette base de données. Et cela est rendu possible grâce à cette ligne du fichier de configuration /etc/ cyrus.conf :
# ICI J'ACTIVE IMAP UNIQUEMENT EN LOCAL (SUR 127.0.0.1, port 143) POUR POUVOIR CONTINUER À ADMINISTRER # MA BASE DE DONNÉES /etc/sasldb2. # VOIR MES COMMENTAIRES DANS 2/ Cyrus-IMAP : "cyrus.conf" imaplocal cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1 :imap" prefork=0
Cependant, en regardant les logs de /var/log/slapd.log , vous pouvez très facilement constater que l’authentification auprès du serveur imapd Cyrus IMAP se fait bien en utilisant LDAP.
Voici un exemple des logs que pour devez obtenir chaque fois que vous vous loguer (ici avec le webmail IMP et avec loglevel -1 ):
tail -f -n 50 /var/log/slapd.conf
[...] # Voici ce que l'on a au début des logs euphorie slapd[20913]: SRCH "ou=mail accounts,dc=linuxorable,dc=fr" 2 0 euphorie slapd[20913]: 1 10 0 euphorie slapd[20913]: begin get_filter euphorie slapd[20913]: EQUALITY euphorie slapd[20913]: end get_filter 0 euphorie slapd[20913]: filter: (uid=pascal) euphorie slapd[20913]: attrs: euphorie slapd[20913]: dn euphorie slapd[20913]: euphorie slapd[20913]: conn=402 op=206 SRCH base="ou=mail accounts,dc=linuxorable,dc=fr" scope=2 filter="(uid=pascal)" euphorie slapd[20913]: conn=402 op=206 SRCH attr=dn [...] # Puis en fin de log lorsque l'authentification résussi: euphorie slapd[20210]: => access_allowed: auth access granted by read(=rscx) euphorie slapd[20210]: ====> bdb_cache_return_entry_r( 30 ): returned (0) euphorie slapd[20210]: conn=403 op=207 BIND dn="uid=pascal,ou=mail accounts,dc=linuxorable,dc=net" mech=SIMPLE ssf=0 euphorie slapd[20210]: do_bind: v3 bind: "uid=pascal,ou=mail accounts,dc=linuxorable,dc=fr" to
En revanche, les logs produits par /var/log/mail.log ne produisent aucun message succeptibles de vous informer de l’utilisationde LDAP.
6°/ Configuration de Thunderbird
Pour que l’authentification LDAP fonctionne avec le client mail Thunderbird il faut impérativement désactiver l’option d’ authentification sécurisée ( Use secure authentication ).
Donc, sélectionnez les options de votre compte ainsi:
Fig 1: Sélection des options des comptes avec Thunderbird
Puis cochez les options Server Settings comme indiqué par la figure 2:
Fig 2: Configuration de Thunderbird pour LDAP
7°/ Conclusion
Et bien que dire de plus que si vous êtes "tombés" sur cet article vous avez beaucoup plus de chance que moi ;-) Pour arriver à faire fonctionner l’authentification LDAP il m’a fallu beaucoup de patience, de recherche sur internet et un peu d’aide.
L’administration d’un annuaire LDAP me semble assez ardue. Peu de docs (surtout en français) claires sont disponibles sur le net et peu de réponses sont obtenues en postant sur ldap-fr@cru.fr et encore moins sur debian-user-french@lists.debian.org .
Commentaires













