Postfix: ldapGruppen zu Alias

Ich benutze die V7-Mail-Dockerlösung unter 6.2. Ziel: Übergang von 6.2 auf 7 ermöglichen.
Das geht auch ganz gut. Es fehlen noch die Email-Gruppen wie teachers@schule.tld und p-englisch@schule.tld.
Ich kann sie manuell per alias-datei pflegen, aber das ist fehlerträchtig. Besser wäre die Daten aus dem LDAP zu ziehen.

Im LDAP sieht es so aus:

dn: cn=teachers,ou=schule,ou=tld
structuralObjectClass: posixGroup
...
cn: teachers
memberUid: administrator
memberUid: ..

Das müsste in Postfix so gehen: Suche im Sub-Baum „groups“ nach dem cn=.
Erhalte die memberUID und suche danach nach Ihnen. Erhalte das Attribut mail.

server_host = ldap
version = 3
bind = no
search_base = dc=schule,dc=tld
query_filter = (&(objectClass=posixGroup)(cn=%u))
result_attribute = mail
special_result_attribute = memberUid
leaf_result_attribute = mail

Das Ergebnis ist aber:

#postmap -v -q teachers@schule.tld ldap:/etc/postfix/group-test.cf
...

postmap: dict_ldap_lookup: /etc/postfix/group-test.cf: Searching with filter (&(objectClass=posixGroup)(cn=teachers))
postmap: dict_ldap_get_values[1]: Search found 1 match(es)
postmap: dict_ldap_get_values[1]: looking up DN administrator
postmap: warning: dict_ldap_get_values[1]: search error 34: Invalid DN syntax 

postmap findet also die Gruppe und schlägt den ersten memberUID administrator nach. Dabei wird davon ausgegangen, das memberUID ein DN ist. Der müsste so aus sehen: uid=administrator,ou=accounts, dc=schule,dc=tld.

Ich sehe aber keine Möglichkeit den zweite LDAPabfrage innerhalb von Postfix zu ändern. Hat jemand eine Idee?

Idee: Ich könnte die Einträge im LDAP auf das von Postfix erwartete Format bringen. Es ist aber für mich nicht abzusehen, wo mir das auf die Füße fällt. Hat dazu jemand Überblick?

Hallo frithjof!

Hast du diesen Thread vor kurzem mitgelesen?

Wir haben das gleiche Problem.
VG,
Michael

@Michael
Wenn ich das richtig überblicke, ist das Problem doch leicht anders:

Hier kann postmap ja die Gruppe testklasse in einzelne emails wie user1@ auflösen.

Hallo Frithjof,

genau:

Bei der LMN 6 verwaltet Sophomorix die Mailverteiler über die /etc/aliases. Bei der LMN 7 geht das über den LDAP.

Die Frage ist nun, ob es sich rentiert, das für die LMN 6 nachzubilden. Nach dem Umstieg sind die Gruppen ja nach wie vor (oder besser: wieder, ist ja ein ganz neues Feature) nutzbar, nur eben über einen anderen Mechanismus.

Beste Grüße

Jörg

Jörg, du hast recht. Es ist entweder eine „low-hanging-fruit“ oder ich lasse es. Es rechnet sich dann, wenn ich es brauche. Ich brauche es dann, wenn die Migration nicht so läuft, wie geplant: schnell und gut. Und da sich der LDAP bei uns überall hineingefressen hat, halte ich es für möglich das ich nicht einfach „umschalten und fertig“ machen kann.

idee: Ich benutze ein unbenutztes Attribut für die Mailadresse. Da muss ich nur durch die memberUIDs gehen und z.B. in das Attribut description (scheint für posixGroup erlaubt und unbenutzt) die Mailadresse schreiben. Dann passe ich meine LDAP-Abfrage entsprechend an. Wenn ich das per Cron-script einmal am Tag mache, bin ich tagesaktuell und vermeide Übertragungsfehler in meiner /etc/alias.
Spricht was dagegen?

Ich habe mich an Jörg gehalten und es so gelöst:

  1. auf dem LML 6.2 Server erstellt ein Script alias-dateien für Schulklassen und das Kollegium. Der Rest ändert sich so wenig, dass ich den per Hand pflegen kann.
  2. Das Script lädt die Alias-Dateien hoch. Sie werden in den Dockercontainer weiter gereicht.
  3. Das Script lässt den Postfix im Dockercontainer die Aliase neu einlesen.

So sehen die Scripte auf dem LML-Server aus:

 server1 ~ # cat /etc/cron.daily/maillists 
#!/bin/bash
/usr/local/bin/maillist-schueler.sh > /tmp/schueler.cf
/usr/local/bin/maillist-kollegium.sh > /tmp/kollegium.cf
scp /tmp/schueler.cf /tmp/kollegium.cf root@mail.carlbosch.de:/srv/docker/linuxmuster-mail/config/
ssh root@mail.carlbosch.de /usr/bin/docker exec mail postfix reload
#-----------------------------------------------------------------------------------------------------
server1 ~ # cat /usr/local/bin/maillist-schueler.sh
#!/bin/bash
emaildomain="@unseremail.de"
studentsDir="/home/students"
for klasse in $(find "$studentsDir" -maxdepth 1 -mindepth 1 -type d -printf '%f\n')
do

	echo ""
	echo -e "$klasse$emaildomain"
		for student in  $(find "$studentsDir/$klasse" -maxdepth 1 -mindepth 1 -type d -printf '%f\n')
		do
			echo -e "   $student$emaildomain"
		done
done

#-----------------------------------------------------------------------------------------------------------
server1 ~ # cat /usr/local/bin/maillist-kollegium.sh
#!/bin/bash
emaildomain="@unseremail.de"

echo "kollegium$emaildomain"
for lehrer in $(cat /etc/sophomorix/user/lehrer.txt | awk -F";" '{print $5}')
do
        echo "   $lehrer$emaildomain"
done

Die Konfiguration auf dem Mailserver sieht so aus:

mail:~# cat /srv/docker/linuxmuster-mail/config/postfix-main.cf 
virtual_alias_maps = texthash:/tmp/docker-mailserver/postfix-virtual.cf, ldap:/etc/postfix/ldap-aliases.cf, ldap:/etc/postfix/ldap-groups.cf, texthash:/tmp/docker-mailserver/schueler.cf, texthash:/tmp/docker-mailserver/kollegium.cf

Hallo frithjof,
hast du einen Hinweis, ob das ganze auf einer v7-Installation genauso ablaufen könnte?
VG,
Michael

Hallo Michael,

das geht quasi genauso.

Allerdings ist die Frage, ob man das braucht: Bei der LMN 7 gibt es im
LDAP Gruppen für Klassen und Projekte, die man direkt als Mailverteiler
verwenden kann.

Beste Grüße

Jörg

Hallo Jörg.

Ja, die gibt es schon – aber der Versand der eMail an diese Adressen kommt nicht an. Genau das war das Problem in dem anderen Thread.

Und vor allem:

Eine Lösung ist weiterhin nicht in Sicht, oder?
VG,
Michael

Ich gehe davon aus. Ich lasse zwei Dateien mit Aliasen durch cron-job erstellen. Dazu wird die Ordnerstruktur von /home/students bzw. die lehrer.txt von sophomorix missbraucht. Ich vermute, dass die Ordnerstruktur in LML7 gleich geblieben ist. Die Kollegiumsliste kann man ebenso aus den /home-Ordnerstrukturen entnehmen, sollte es die lehrer.txt nicht mehr geben.

Wie Jörg schon angemerkt hat: Mehr als ein Hack ist es nicht.

nicht ganz … die home-Verzeichnisse liegen jetzt unter
/srv/samba/schools/default-school/teachers/

Und die lehrer.txt heißt jetzt /etc/linuxmuster/sophomorix/default-school/teachers.csv

Aber du schreibst ja selbst: Es ist ein Hack … daher müsste es auch einen eleganteren Weg geben (den bisher nur niemand kennt/nutzt??)

VG,
Michael