Openldap concat output

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Openldap concat output

Beitrag von scientific » 19.02.2019 11:13:25

Hi Leute!

Ich habe das Problem, dass dovecot zwar LDAP-Abfragen machen kann, aber es verlangt bei den Gruppen eine kommagetrennte Liste der Gruppen, in denen ein User Mitglied ist. Wenn dovecot in einem IMAP-Login-Prozess läuft, dann kann ich das mit einem imap-postlogin-Skript zum IMAP-Service erledigen. Sprich ich hab ein kleines Pythonprogramm, welches die Gruppen des Users abfrägt, diese in einen kommaseparierten String umwandelt und als Environment-Variable setzt, bevor der IMAP-Prozess weiterläuft. Damit kann ich dann über ACLs verschiedene Berechtigungen auf einzelne Unterordner des Postfaches vergeben.

Das Problem dabei ist, wenn ein globales Sieve-Script läuft, findet kein Postlogin-Prozess statt, weil gar kein Login-Prozess stattfindet. Damit können auch die Gruppen nicht abgefragt werden, und Sieve sieht teilweise die Postfächer nicht.

Ich kann nun in LDAP ein Attribut beim User setzen, wo ich die gewünschten Gruppen als String kommasepariert eintrage. Dann funktioniert Sieve auch tadellos.
Das ist das Grundproblem.

Jetzt suche ich eine Möglichkeit, wie ich openldap mit einem Overlay dazu bringe, diesen String automatisch als dynamisches Attribut konfiguriere. Also jedesmal wenn ich eine LDAP-Abfrage nach dem Feld mache, erzeugt OpenLDAP einen String mit all den cn der Gruppen, wo der User member ist. Und ich hab keine Ahnung, ob und wie das geht.

Um es kurz zu machen:
Der User "username" ist memberof
cn=group1,ou=groups,dc=example,dc=com
cn=group2,ou=groups,dc=example,dc=com
cn=group3,ou=groups,dc=example,dc=com
cn=group4,ou=groups,dc=example,dc=com

Das dynamische Attribut von username soll dann den string
"group1,group2,group3,group4"
ausgeben.

Kann mir hier jemand helfen?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten