Authentification de Cyrus Imap/eGroupware sur Active Directory
Cette page décrit la procédure permettant la configuration de Cyrus pour valider les utilisateurs sur Active Directory. L'installation et la configuration se font sur Linux (Debian / Sid). L'active directory étant installé sur une machine Windows 2000.
- Enfin, la configuration laisse aussi la possibilité de valider les utilisateurs présents sur le système local (login) ce qui ne coûte rien et permet de ne pas encombrer l'active directory.
- Pour la petite histoire, cette page a été rédigée lors de la mise en place de eGroupware et Cyrus dans un environnement Windows et surtout suite à plusieurs postes sur le forum egroupware-french. Si cette procédure vous a rendu service, n'hésitez à m'envoyer un mail (ça flattera mon ego ;-)).
Contents
1. Fonctionnement de l'authentification
1.1. Description
Lorsqu'un utilisateur se connecte au serveur de messagerie(Cyrus), celui-ci transmet le login et le password correspondants au process SASLAUTHD. Le process SASL est configuré pour utiliser PAM (Pluggable Authentification Module). Ce module est capable d'utiliser plusieurs méthodes de validation du mot de passe. Dans l'exemple suivant, les modules utilisés sont LDAP(c'est l'annuaire Active Directory qui sert de serveur LDAP) et Unix Auth(les fichiers /etc/passwd et /etc/shadow).
1.2. Schéma descriptif
-------- -->|PAM LDAP|-> AD ----------- ----- ---- --- | -------- |Client Mail| ==> |Cyrus| => |SASL| => |PAM|-->| ----------- ----- ---- --- | | --> Unix Auth
2. Les packages à installer
- Avant de commencer la configuration, il faut installer les packages suivants et leur dépendances (par apt-get):
cyrus-pop3d et cyrus-imapd: Ces packages permettant de disposer les services Imap et Pop3
sasl2-bin et libpam-ldap: Seront configurés pour fournir l'authentification à Cyrus.
cyrus-clients: ce packages contient les outils pop3test imaptest pour tester l'authentification!
cyrus-admin: Outils d'administration
3. Configuration de SASLAUTHD
- SASLAUTHD est daemon permettant à cyrus d'identifier les utilisateurs sur une ou plusieurs bases de données. Il sera configuré pour déléguer authentification des utilisateurs à PAM.
- Éditer le fichier /etc/default/saslauthd et effectuer les modifications suivantes:
Passer START=no START=yes
Vérifier que MECHANISMS est bien pam
Enregistrer le fichier et redémarrer le service par /etc/init.d/saslauthd restart
4. Configuration de libpam-ldap
Étrangement, le fichier de configuration libpam-ldap sur Debian se trouve à 2 endroits /etc/libpam-ldap/ldap.conf et /etc/pam_ldap.conf, mais uniquement le fichier /etc/pam_ldap.conf semble être pris en compte! Il faut éditer, donc, le fichier /etc/pam_ldap.conf et effectuer les modifications suivantes:
La ligne host définie le serveur Active Directory. On peut indiquer plusieurs serveurs. Après modification, cette ligne doit ressembler à host 192.168.0.1 192.168.0.2
La ligne base définie le schéma de la base LDAP. Pour utiliser AD, il faut indiquer cn=users,dc=intranet,dc=glennie,dc=fr
Décommenter la ligne #ldap_version 3. Ce qui indique à PAM-LDAP d'utiliser la version 3 du protocol LDAP pour dialoguer avec AD.
La ligne binddn indique le login à utiliser pour rechercher l'utilisateur à authentifier. Il faut que cet utilisateur existe dans l'AD et puisse lister les objets présents dans le DN "cn=users,dc=intranet,dc=glennie,dc=fr". Au final, la ligne doit ressembler à cn=MyUser,cn=users,dc=intranet,dc=glennie,dc=fr.
bindpw défini le mot de l'utiliser précédent. Il faut utiliser un mot de passe relativement complexe.
pam_filter permet de définir le filtre devant être utilisé pour rechercher l'utilisateur à valider. Afin de garder l'AD propre, il est judicieux de créer un groupe dédié à CYRUS et authentifier uniquement les utilisateurs de ce groupe. Ce qui donne pam_filter MemberOf=CN=GP_CYRUS,CN=Users,DC=intranet,DC=glennie,DC=DC=fr
pam_login_attribute est l'attribut LDAP permettant d'identifier l'utilisateur. Pour Active Directory, il faut utiliser pam_login_attribute sAMAccountName.
pam_password défini le type du serveur LDAP pour le changement de mot de passe. Il faut utiliser pam_password ad pour active directory.
Après les modifications, sauvegarder le fichier et relancer saslauth.
5. Configuration de pam
- Dans cette partie, nous allons configurer PAM pour que la demande de recherche d'un utilisateur par les services POP ou IMAP soit délégué à LDAP. Pour cela, il faut:
Éditer les fichiers /etc/pam.d/imap et /etc/pam.d/pop et ajouter les lignes
auth sufficient /lib/security/pam_ldap.so auth required /lib/security/pam_unix_auth.so try_first_pass account sufficient /lib/security/pam_ldap.so account required /lib/security/pam_unix_acct.so @include common-auth @include common-account
6. Configuration de Cyrus Imap
- Les fichiers de configuration de Cyrus sont relativement complexes. Ce qui suit ne défini que le paramétrage nécessaire permettant l'activation de l'authentification de Cyrus(pop et Imap) vers AD.
- Éditer le fichier /etc/cyrus.conf et vérifier les services pop3 et imap sont activés.
- Éditer le fichier /etc/imapd.conf et modifier/vérifier les paramètres suivants:
allowplaintext doit être à yes
sasl_mech_list doit être à LOGIN PLAIN
sasl_pwcheck_method doit être saslauthd
Enregistrer le fichier et relancer le serveur CYRUS.
7. Vérification
Pour vérifier les logins/passwords, il suffit d'utiliser les pop3test ou imaptest fournit pas cyrus-clients.
Vérification de connexion POP: pop3test -m user -a LOGIN HOST (LOGIN étant le login de la personne et le HOST est la machine sur laquelle tourne le process pop3). Si l'authentification se termine correctement, on obtiendra:
Authenticated.
Vérification de la connexion IMAP: imtest -m login -a LOGIN HOST (LOGIN étant le login de la personne et le HOST est la machine sur laquelle tourne le process imap). Si authentification se termine correctement, on obtiendra:
S: L01 OK User logged in Authenticated
Validation de la connexion par sasluthd: testsaslauthd -u LOGIN -p PASSWORD'. Si validation se passe correctement, saslauthd devrait répondre
0: OK "Success.
8. Configuration de eGroupware
- Pour que l'authentification sur AD fonctionne eGroupware, il suffit d'indiquer à eGroupware d'utiliser un server Imap pour valider les utilisateurs!