saslauthd mit Ldap anbindung + suchkriterien

Milla

Registered User
Hallo,
nachdem ich mien Mailserver fast fertig habe, hängt es mittlerweile nur noch an Kleinigkeiten.
Mein nächstes Problem:

Ich authentifiziere mich am Mailserver über saslauthd an unserem Ldap - Server.
Das Problem ist das ich im Ldap Verzeichnis verschiedene Gruppen eingerichtet habe.
Ich möchte nun nur denjenigen Benutzern die Authentifizierung erlauben, die in der richtigen Gruppen sind.
Sprich eine Einschränkung des Ldap - Verzeichnis für den saslauthd
Ich denke man muss in der saslauthd.conf diesen Gruppenparameter angeben, aber ich habe bisher nicht rausgefunden wie ich das anstellen soll.
Das Problem ist das ich mehrere Gruppen angeben will, in denen sich die Benutzer befinden können.
Sprich er soll z.b in der Gruppe "lehrer" und Gruppe "verwaltung" nach dem sich anmeldenden Benutzer suchen und das Login nur dann erlauben,wenn der Benutzer auch in dieser Gruppe ist.

meine saslauthd.conf sieht im moment noch ziemlich einfach aus:
Code:
ldap_servers: ldap://10.2.70.9/
ldap_search_base: ou=users,o=bbsi,c=de

Wäre also nett, wenn mir jemand helfen könnte,mehrere Suchgruppen anzugeben.

Danke
Milla
 
Also eigentlich hab ich von saslauthd wenig bis keine Ahnung :) ich selber löse die Authentifizierung zwar mit saslauthd, habe aber in der /etc/sasl2/smtpd.conf die Zeilen
Code:
pwcheck_method: authdaemond
authdaemond_path: /var/lib/courier/authdaemon/socket
so dass der saslauthd direkt den courier-authdaemond (ich benütze Courier eh als IMAP-Server) fragt und ich nur bei dem alles LDAP-relevante einstellen muss.

Schau aber mal auf deinem Server in /usr/share/doc/cyrus-sasl* oder so, dort sollte ein Dokument liegen mit allen Optionen für die conf-Datei. Hier ein Ausschnitt, der dir vielleicht schon hilft?

Code:
ldap_filter: <uid=%u>
        Specify a filter.  The following tokens can be used in the filter string:

        %%   = %
        %u   = user
        %U   = user portion of %u (%U = test when %u = test@domain.tld)
        %d   = domain portion of %u if available (%d = domain.tld when %u =
               %test@domain.tld), otherwise same as %r
        %1-9 = domain tokens (%1 = tld, %2 = domain when %d = domain.tld)
        %s   = service
        %r   = realm
        %D   = user DN (available for group checks)

        The %u token has to be used at minimum for the filter to be useful.  If
        ldap_auth_method is 'bind', the filter will search for the DN
        (distinguished name) attribute.  Otherwise, the search will look for
        the 'ldap_password_attr' (see below) attribute.

ldap_group_attr: <uniqueMember>
    Specify what attribute to compare the user DN against in the group. If
    ldap_group_dn is not specified, this parameter is ignored.  If
    ldap_group_match_method is not attr, this parameter is ignored.

ldap_group_dn: <none>
    If specified, the user has to be part of the group in order to authenticate
    successfully.  Tokens described in 'ldap_filter' (see above) can be used
    for substitution.

ldap_group_filter: <none>
    Specify a filter. If a filter match is found then the user is in the group.
    Tokens described in 'ldap_filter' (see above) can be used for for
    substitution. If ldap_group_dn is not specified, this parameter is ignored.
    If ldap_group_match_method is not filter, this parameter is ignored.

ldap_group_match_method: <attr> <attr|filter>
    Specify whether the group match method uses ldap_group_attr or
    ldap_group_search.  If ldap_group_dn is not specified, this parameter is
    ignored.

ldap_group_search_base: <if not specified, it defaults to ldap_search_base>
    Specify a starting point for the group search: e.g. dc=foo,dc=com.  Tokens
    described in 'ldap_filter' (see below) can be used for substitution.

ldap_group_scope: <sub> <sub|one|base>
        Group search scope.
 
Code:
Schau aber mal auf deinem Server in /usr/share/doc/cyrus-sasl* oder so, dort sollte ein Dokument liegen mit allen Optionen für die conf-Datei. Hier ein Ausschnitt, der dir vielleicht schon hilft?

ja dieses config-Datei hatte ich auch schon gefunden, mir is halt nur net klar, wie ich diese Filter verwenden kann...wäre cool,wenn einer schonmal damit gearbeitet hat, und mir das mal ein bißchen erklären könnte.
Nochma das Szenario:
Habe saslauthd als Authentifizierungsmechanismus an ldap:
In Ldap gibts es mehrere gruppen (users,lehrer,verwaltung,...)
Wie kann ich es jetzt realisieren, das sich nur bestimmte Gruppenmitglieder (z.b nur aus Gruppe Lehrer und Verwaltung) über saslauthd authentifizieren können?
Das Geheimnis liegt wohl in saslauthd.conf in diesen oben schon genannten Filtern...
please help ;)

Milla
 
Hallo,

hast du die Sache inzwischen gelöst?

Ich möchte gerne Cyrus über saslauthd Benutzer- und Gruppen abfragen lassen, um die eigene Mailbox per uid und Shared Folder anhand der Mitgliedschaft in einer Gruppe zur Verfügung zu stellen.

Hier meine Konfigurationsdatei mit der das nicht funktioniert. Lasse ich die Gruppen-Einträge weg, geht es.

# /etc/saslauthd.conf
ldap_servers: ldaps://ldapserv.domain.de:636/
ldap_search_base: dc=domain,dc=de
ldap_bind_dn: uid=cyrus,ou=user,dc=domain,dc=de
ldap_bind_pw: geheim
ldap_filter: (uid=%U)
ldap_scope: sub
ldap_group_attr: memberUid
ldap_group_match_method: filter
ldap_group_filter: (memberUid=%u)
ldap_group_search_base: ou=group,dc=domain,dc=de
ldap_size_limit: 0
ldap_tls_check_peer: no
ldap_tls_cacert_file: /etc/ssl/certs/CAcert.pem
ldap_tls_cacert_dir: /etc/ssl/certs/
ldap_time_limit: 15
ldap_timeout: 15
ldap_version: 3

McAldo
 
Back
Top