Forum Linux.général Pb login Dovecot/AD

Posté par .
-1
23
avr.
2012

Bonjour à tous !

J'ai mis en place un serveur AD sous Win2008 R2, dans lequel j'ai créé des utilisateurs.
Pour le serveur de mails, je fais confiance à cette bonne vielle Debian 6, avec Postfix et Dovecot.

Mais voila, j'ai un problème d'authentification sous Dovecot.

Je précise que j'ai "dédié" un utilisateur (vmail) pour la connection à l'annuaire AD.

En premier lieu, voilà mon fichier dovecot-ldap.conf :

hosts           = dc.domaineinterne.lan:389
ldap_version    = 3
auth_bind       = yes
dn              = DOMAINEINTERNE\vmail
dnpass          = mdp_vmail
base            = dc=domaineinterne,dc=lan
scope           = subtree
deref           = never
user_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
user_attrs      = =home=/home/mail/%Ld/%Ln/Maildir/,=mail=maildir:/home/mail/%Ld/%Ln/Maildir/
pass_attrs      = userPassword=password
default_pass_scheme = CRYPT'''

Que l'utilisateur AD soit dans le groupe Users ou dans une Unité d'Organisation (UO), lors d'une tentative de login à Dovecot en Telnet, cela ne passe pas.

Alors que, lorsque je fais la même tentative sur un utilisateur qui se trouve dans le groupe Users, cela fonctionne, si, et seulement si, dans le dovecot-ldap.conf, la base est remplacée par base = cn=users,domaineinterne,dc=lan. Lors d'une telle configuration de Dovecot, la recherche de l'utilisateur se trouvant dans une UO est un echec.

En revanche, si je met base = cn=nomdemaUO,dc=domaineinterne,dc=lan, il ne trouvera, évidemment que l'utilisateur se trouvant dans l'UO.

Ce que je recherche ici, c'est la "possibilité" pour Dovecot de faire une recherche "récursive" à partir de la racine de mon domaine interne en ne mettant que base= dc=domaineinterne,dc=lan et de ce fait, qu'il aille rechercher les utilisateurs dans l'arborescence, quelque soit le dossier où il puisse se trouver.

A noter que la recherche dans l'annuaire avec cette commande fonctionne parfaitement, quelque soit l'emplacement de mon utilisateur :

    ldapsearch -x -b 'dc=domaineinterne,dc=lan' -D 'DOMAINEINTERNE\vmail' -h dc.domaineinterne.lan -p 389 -W "(&(userPrincipalName=user@domainepublique.fr)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"

Merci de m'avoir lu jusqu'ici :)

Et merci par avance de vos réponses.

Nicolas

  • # OU n'existe pas, cn=Users si

    Posté par . Évalué à 2.

    je dis peut-etre une betise mais
    une OU (Organizational Unit) est une pseudo branche.
    les utilisateurs sont reellement dans cn=Users

    de plus dans la config dovecot-ldap.conf

    user_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
    pass_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

    tu filtres l'utilisateur, soit, mais tu filtres sont mot de passe avec le meme filtre
    du coup, c'est peut-etre ca qui ne marche pas et qui refuse du coup la connexion.

    • [^] # Re: OU n'existe pas, cn=Users si

      Posté par . Évalué à 1. Dernière modification le 23/04/12 à 16:20.

      Tu m'as fait penser à je ne sais pas quoi, du coup, j'ai testé un truc :

      A la racine de mon domaine, j'ai une OU (OU1), dans cette OU, j'ai fait une seconde OU (OU2), j'ai placé mon utilisateur vmail dans cette OU, et un autre utilisateur dans chaqune des OU. Un schéma vaut mieux qu'un long discours :

      domaineinterne.lan
       |
       |-OU1
          |-vmail
          |-user1
          |-OU2
             |-user2
      
      

      Je configure Dovecot comme ceci : base = ou=OU1,dc=domaineinterne,dc=lan .
      Tous les utilisateurs passent l'authentification. Cela voudrait dire que, si base est configuré à la racine du domaine, aucune recherche n'est faite.. Y aurait-il une restriction de ce côté ?
      Faut-il que je mette mon domaine dans une OU pour commencer à travailler ? genre :

      domaineinterne.lan
        |
        |OU_domaineinterne
          |-OU1
             |-vmail
             |-user1
             |-OU2
                |-user2
      
      

      Merci :)

      • [^] # Re: OU n'existe pas, cn=Users si

        Posté par . Évalué à 2.

        une histoire de scope (de portée de la recherche)

        d'apres : http://www.zytrax.com/books/ldap/apd/

        search scope may be :
        - base in which case only the supplied DN is used,
        - one in which case the search descends one level from the supplied DN
        - or sub in which case descends the hierarchy from the DN to the lowest level in the tree (DIT).

        toi apparemment dans ton dovecot-ldap tu utilise le scope "subtree"

        peut-etre une piste à suivre…

  • # Ca ne fonctionne pas :/

    Posté par . Évalué à 1.

    J'ai modifié le paramètre scope avec ce que tu donnes ou même avec ce que le site donne, et Dovecot ne les reconnait pas.
    Après recherches, il semblerait que l'option du paramètre adaptée à ce que je recherche est en fait bel et bien subtree.

    J'ai fait un test, et créé une OU qui a un nom "général" (le nom de ma boite) et derrière, j'ai glissé/déposé mes OU que j'avais à la racine de mon domaine dedans : cela fonctionne…

    Il doit commencer sa recherche subtree à partir du moment où dans base, je précise une OU, comme ceci : base = ou=monentreprise,dc=domaineinterne,dc=lan. Je ne trouve pas cette solution très propre…

    N'y a-t-il pas possibilité de commencer le subtree avec une base comme base=domaineinterne,dc=lan ??

    Voila, je pleure :)

    Merci à vous :)

    • [^] # Re: Ca ne fonctionne pas :/

      Posté par . Évalué à 0.

      Enfin, c'est pas un test que j'ai fait, vu que c'était ma piste précédente, juste que pour le moment, il n'y à que cela qui fonctionne…

      Problème de concentration ^

  • # Debian Lenny avec PAM

    Posté par . Évalué à 1.

    J'utilise ce type de script avec Dovecot :

    uri  ldaps://ad1.domaine.ext ldaps://ad2.domaine.ext
    port 636
    ldap_version 3
    base OU=EMail,DC=domaine,DC=ext
    
    binddn user
    bindpw mdp
    
    pam_filter &(objectClass=user)(|(memberOf=CN=Mail_Interne,OU=EMail,DC=domaine,DC=ext)(memberOf=CN=Mail_Externe,OU=EMail,DC=domaine,DC=ext))
    
    scope sub
    timelimit 30
    pam_password ad
    
    pam_login_attribute sAMAccountName
    pam_lookup_policy yes
    
    

    J'en ai créé un second pour Postfix, formaté différemment, pour chercher les alias dans les groupes AD d'une OU définie.

    server_host = ldaps://ad1.domaine.ext ldaps://ad2.domaine.ext
    server_port = 636
    search_base = OU=Alias,DC=domaine,DC=ext
    version = 3
    
    query_filter = (&(objectClass=group)(groupType=8)(sAMAccountName=%u)(mail=*@*.*))
    
    leaf_result_attribute = sAMAccountName
    special_result_attribute = memberbind = yes
    
    bind_dn = user
    bind_pw = mdp
    
    tls_random_file = /var/spool/postfix/dev/random
    
    
    • [^] # Re: Debian Lenny avec PAM

      Posté par . Évalué à 2.

      c'est vrai qu'utiliser PAM peut aussi simplifier la vie de ce coté là.

      configurer PAM_LDAP pour aller chercher les utilisateurs/passe dans le ldap
      configurer (ou laisser par defaut) dovecot pour lui dire d'utiliser PAM

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.