Linuxmuster-mail und relay-host

Ich habe den Befehl ausprobiert – der liefert interessante Anhaltspunkte:

postmap: cfg_get_str: /etc/postfix/ldap-users.cf: server_host = ldaps://server.linuxmuster.meine-domain.de:636
postmap: cfg_get_int: /etc/postfix/ldap-users.cf: server_port = 389

Das passt ja was nicht zusammen! Evtl muss auch hier der Eintrag
server_port=636 getrennt aufgeführt werden.

Weiter unten dann

postmap: cfg_get_str: /etc/postfix/ldap-users.cf: domain =  <<< LEER!!

und noch weiter unten dann:
postmap: dict_ldap_lookup: No existing connection for LDAP source /etc/postfix/ldap-users.cf, reopening

Liest hier ein Entwickler mit?

Hallo Michael,

vergleiche doch mal bitte den Inhalt der Datei /srv/docker/linuxmuster-mail/config/postfix/ldap-users.cf auf dem Docker-Server bzw. /etc/postfix/ldap-users.cf auf dem mail-container (sollte die identische Datei sein, da sie „durchgereicht“ wird) mit dem Inhalt von meiner Datei:

bind = yes
bind_dn = CN=global-binduser,OU=Management,OU=GLOBAL,DC=wg,DC=lan
bind_pw = ****
query_filter = (samaccountname=%s)
result_attribute = samaccountname
search_base = OU=SCHOOLS,DC=wg,DC=lan
server_host = ldaps://lms.wg.lan:636
version = 3

Viele Grüße,
Tom

Ja, der Aufbau ist identisch. Port-Angaben stimmen ebenfalls überein. Ich meine aber irgendwo gelesen zu haben, dass die Angabe ldaps://...:636 für OpenLDAP ist – während man es bei AD mit einer Extra-Zeile server_port = 636 machen muss – aber alles ohne Gewähr.
Gefunden: Hier stand das: http://www.postfix.org/ldap_table.5.html

Hi Michael,

bei der Syntax geht es m.E. um die OpenLDAP-Client-Lib die Postfix nutzt. Diese versteht auch die host:port Syntax.
Wie gesagt funktioniert die obige User-Abfrage bei mir auch. Wenn ich den User „ba“ über obige Postfix-Config suche, kommt erfolgreich „ba“ zurück. Wenn ich einen nicht existierenden User suche, kommt ein Fehler zurück.
Postfix hat trotzdem ein Problem damit. Ich vermute dass er vielleicht nicht nur den Username prüft, sondern die ganze eMail-Adresse. Und die steht ja nicht im AD.

Viele Grüße
Tom

Hallo Tom.

Warum das nicht? Hast du intern keinen FQDN gewählt?

Ja, das ist hier auch so. Die Verbindung zum AD funktioniert – der Fehler steckt woanders.
Hast du schon versucht, das Debug-Level hoch zu drehen?
https://doc.dovecot.org/admin_manual/dovecot_logging/

Hallo Michael,

Ich hatte die Ausgangssituation nicht genau beschrieben, sorry. Der FQDN hat eine lokale Fantasie-Domain „wg.lan“, die kann für eMails natürlich nicht genutzt werden. Die eMail-Domain ist eine echte Internet-Domain inkl MX-Eintrag, genauer eine Sub-Domain unserer Internet-Hauptdomain (schule.hauptdomain).
Ich habe in der WebGUI diese eMail-Domain zwar für die Gruppen Lehrer, Schüler etc. eingetragen, habe aber Zweifel ob diese dann wirklich für jeden Benutzer im AD-Eintrag gespeichert ist.

Jedenfalls bringt ein

postmap -vq ba@wg.lan ldap:/etc/postfix/ldap-users.cf

die Bestätigung, dass der User ba existiert.
Ein Query nach ba@wg.lan antwortet mit „Search returned nothing“, ein Query nach ba@schule.hauptdomain bringt ebenfalls „nothing“. Macht auch Sinn, da ja nach „samaccountname“ im LDAP gesucht wird, und der ist wohl immer nur der Username, ohne Domain. Vielleicht ist das auch die Ursache des Postfix-Problems, dass in der ldap-users.cf nicht nach dem samaccountname gesucht werden dürfte?
Ich muss nochmal nachschauen, wie ich von einem AD-Benutzer den kompletten LDAP-Eintrag ausgeben lassen kann, um zu prüfen welche Felder existieren und ob irgendwo die eMail mit FQDN drin steht. Dann könnte ich dies in der ldap-users.cf abändern und testen ob Postfix dann die lokalen Mailboxen/Benutzer erlaubt.

das bekommst du doch mit ldapsearch?!?

ldapsearch  -b "ou=default-school,ou=SCHOOLS,dc=linuxmuster,dc=meine-schule,dc=de" -H ldaps://server.linuxmuster.meine-schule.de:636 -x -D global-binduser@linuxmuster.meine-schule.de -w geheimesPasswort givenName=Michael 

Danke Michael!
Hatte mir zwischenzeitlich mit dem samba-tool beholfen.

Die korrekte eMail-Adresse steht tatsächlich im Feld „mail“ im AD.
Wenn ich also nach samaccountname=ba suche und mir als return_attribute die Mail zurück geben lasse, bekomme ich vom postmap den richtigen Eintrag:

postmap: dict_ldap_connect: Successful bind to server ldaps://lms.wg.lan:636 with dn CN=global-binduser,OU=Management,OU=GLOBAL,DC=wg,DC=lan
postmap: dict_ldap_connect: Cached connection handle for LDAP source /etc/postfix/ldap-mail.cf
postmap: dict_ldap_lookup: /etc/postfix/ldap-mail.cf: Searching with filter (samaccountname=ba)
postmap: dict_ldap_get_values[1]: Search found 1 match(es)
postmap: dict_ldap_get_values[1]: search returned 1 value(s) for requested result attribute mail
postmap: dict_ldap_get_values[1]: Leaving dict_ldap_get_values
postmap: dict_ldap_lookup: Search returned ba@schule.hauptdomain

Ich habe in der ldap-users.cf nun den query_filter auf (mail=%s) und das return_attribut auf mail geändert und nun funktioniert die Abfrage mit kompletten Mailadressen. Ich habe keine Idee warum dort ursprünglich nach samaccountname statt mail abgefragt wurde.

@Michael, könntest Du mir bitte den Eintrag deiner ldap-user.cf zum Vergleichen schicken? Ich vermute ich sollte den query_filter in meiner Datei noch etwas stärker einschränken als nur „mail=%s“.

@Michael das Problem mit der ldap-domains.cf konnte ich inzwischen lösen. Dann geht auch der Versand nach extern:
in der docker-compose.yml folgende Einstellungen ändern:
- LDAP_SERVER_HOST=ldaps://lms.wg.lan:636
- LDAP_SEARCH_BASE=OU=SCHOOLS,DC=wg,DC=lan
- LDAP_BIND_DN=CN=global-binduser,OU=Management,OU=GLOBAL,DC=wg,DC=lan
- LDAP_BIND_PW=*****
- LDAP_QUERY_FILTER_USER=(mail=%s)
- LDAP_QUERY_FILTER_DOMAIN=(mail=*@%s)

Dann docker-compose down und docker-compose up -d mail
Anschließend sollten eine funktionierende ldap-domains.cf existieren und man kann die main.cf unangetastet lassen.

Hallo Tom.
Das klingt gut! Super!
Hast du die Datei ldap-domains.cf mit in die docker-compose.yml aufgenommen oder kommt die Datei direkt aus dem Container? Ich hatte mich gewundert, dass die anderen ldap-configs alle an den Container durchgereicht werden – aber die ldap-domains nicht!?

Hat sich deine Anfrage der ldap-users.cf damit erledigt oder willst du trotzdem noch einen Blick darauf werfen?
Die Einträge in der Datei lauten hier derzeit jedenfalls auch noch so:

query_filter = (samaccountname=%s)
result_attribute = samaccountname

Scheint falsch zu sein – wird nun durch den neuen QUERY_FILTER ersetzt…

Michael

Hi Michael,

ja, ist merkwürdig, dass nur die ldap-domains.cf nicht aus dem config-Ordner kommt. Ich habe dies so gelassen. Sie wird beim docker-compose aus der .yml-Datei neu erzeugt.
Deine ldap-users.cf schaut so aus, wie meine vor den Änderungen. Das samaccountname hatte für den postfix nicht funktioniert. Mit (mail=%s) ging es. Könnte man noch etwas verfeinern und deaktivierte Accounts oder Maschinen-Accouts oder Gruppen-Accounts irgendwie herausfiltern. Aber fürs erste lasse ich es so.
Den Relay-Host konnte ich nach wie vor nicht setzen. Die SASL-Passwort-Datei wird zwar erzeugt, aber in der main.cf bleibt der Eintrag leer. Da der Mailversand aktuell auch ohne relayhost funktioniert, lass ich den Versand erstmal direkt laufen.

    - DEFAULT_RELAY_HOST=[smtp.1und1.de]:25
    - RELAY_HOST=smtp.1und1.de
    - RELAY_PORT=25
    - RELAY_USER=mailversanduser@domain
    - RELAY_PASSWORD=****
    - AWS_SES_HOST=smtp.1und1.de

ich trage das auch so ein und melde mich dann, ob es funktioniert. Wäre super! Kannst du deine Beobachtungen evlt auch direkt als github-issue an die Entwickler melden?

Hallo Tom.
Auch hier konnte die ausgehende eMail jetzt versandt werden :slight_smile:

cd /var/log/mail/
cat mail.log 
....
Anonymous TLS connection established to mail-tester.com[...]:25: TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)

Ich bekomme lediglich eine Warnung bgzl doppelter Einträge:

Feb 28 12:01:36 mail postfix/smtp[1624]: error: /etc/postfix/sasl_passwd, line 2: duplicate entry: "[mail.meine-domaine.de]:25"

Hast du eine gute Erklärung, warum der Eintrag da nun doppelt auftaucht?
Hast du den Eintrag DEFAULT_RELAY_HOST nun aktiviert oder nicht — bzw ist die eckige Klammer, die du oben gesetzt hast, notwendig?

Nachtrag: Jetzt konnte ich auch das erschütternde Ergebnis vom mail-tester.com sehen: nur 2.1 von 10 Punkten :scream: Da wird natürlich nur sehr wenig überkommen und das meiste von den großen Anbietern gefiltert werden.

Dies wird alles bemängelt:

## Sie sind nicht vollständig berechtigt

Wir prüfen, ob der Server von dem Sie senden, authentifiziert ist

-1

### [SPF] linuxmuster.meine-domain.de gestattet Ihrem Server 9x.xxx.xxx.xxx nicht, <login>@linuxmuster.meine-domain.de zu nutzen

-1

### Ihre Nachricht ist nicht durch DKIM signiert

### Sie haben keinen DMARC-Datensatz

### Ihr Reverse-DNS-Eintrag stimmt nicht mit der Sendenden Domain überein

-3

### Wir haben nicht einen Mail-Server (MX Record) hinter Ihrem Domain-Namen **linuxmuster.meine-domain.de** gefunden.

### Ihr Hostname **mail.linuxmuster.meine-domain.de** ist einem Server zugewiesen. --> OK!

und auch noch was vom SpamAssassin:
-2.5		NO_FM_NAME_IP_HOSTN		NO_FM_NAME_IP_HOSTN

Schönen Gruß – wir kommen der Sache immerhin näher!
Michael

Da man 3 „Strafpunkte“ für den fehlenden MX-Record bekommt, habe ich mal danach gesucht: Ist es richtig, dass der Eintrag auf die OPNSense-FW gehört? Evtl so:

1 „Gefällt mir“

Hallo Michael,

Ich habe in der Docker-Datei den Relayhost gesetzt, allerdings kommt er in der main.cf nicht an. Aktuell versenden wir unsere eMails daher zwangsweise direkt.
Die eckige Klammer ist dann nötig, wenn Du einen Port mit angibst. Der daraus erzeugte Eintrag in der main.cf sollte mit dem erzeugten Eintrag in der SASL-Passwort-Datei übereinstimmen.

Die Ergebnisse von mail-tester.com kann linuxmuster m.E. kaum beeinflussen. Da hängt ja auch viel von den Provider-Einstellungen ab. Ob z.B. SPF wichtig ist kann man m.E. streiten - manche meinen, dass das Konzept „broken by design“ ist.

Als MX-Record solltest Du deine externe IP-Adresse angeben, über die letztlich dein Mailserver erreicht wird. In den meisten Fällen dürfte das die OPNSense sein.

Leider bin ich nächste Woche verhindert, versuche das aber noch nach zutragen. Vielleicht habe ich dann auch Zeit nochmal mit Testsystemen das Problem genauer einzukreisen. Kann aber nichts versprechen.

Viele Grüße,
Tom

Hallo Tom, hast du gesehen, dass Thomas das Paket aktualisiert hat? Ein paar Fehler sind behoben. Ich weiß noch nicht, wie ich damit umgehen soll … zB: neu anfangen oder nicht?

Hallo Tom.
Bist du an dem Thema noch dran? Gibt’s Neuigkeiten?
Ich bin nicht sicher, wo der MX-Eintrag hingehört – evtl aber sogar auf die OPNSense-FW zur WAN-Schnittstelle?? Ich habe eine entsprechende Einstellungsmöglichkeit bei den dynamischen DNS-Diensten gefunden. Dort sieht das ganze dann so aus:


Gehört der Eintrag da hin (so dass der Score höher als 2.1 wird)?

Schöne Grüße,
Michael

… und noch eine Frage hinterher: Ich hätte es eigentlich lieber so, dass für alle User eine eMail-Adresse der Form:
vorname.nachname@meine-domain.de
und nicht
login@linuxmuster.meine-domain.de
erzeugt wird. Sehe ich das richtig, dass das unter
ldap-aliases.cf eingestellt werden kann?
Unter lmn-6.x wurde ja direkt auf dem Server die Datei /etc/aliases erzeugt. Das ist unter v7 aber nicht mehr der Fall, oder?? Hier steht jedenfalls ein einziger Eintrag im Container des mail-Servers für root unter /etc/aliases … mehr nicht.

Beim kürzeren Domain-Namen müsste man die main.cf bemühen, wie es hier geschildert wird, oder?
https://www.unixwitch.de/de/sysadmin/tools/postfix

Ist da jemand schon einen Schritt weiter?
Michael

Nachtrag 1:
Ich antworte hier mal munter weiter … liest hier noch jemand mit?

So wie hier stelle ich mir das vor:
https://warden.github.io/articles/2010-01/postfix-sasl-ldap-auth

bzw steht es auch ganz offiziell auf der postfix-Seite selbst:
http://www.postfix.org/LDAP_README.html#other

Hallo.
Gibt es irgendwelche Neuigkeiten bzgl des Mail-Servers und dessen Anbindung an den lmn-v7-Server? Das scheinen hier nicht viele zu nutzen; ich nehme an, weil Belwü ähnliches bietet?

Ich habe mich jedenfalls gefragt, ob die eMail-Adressen-Konstruktion in Form von:
vorname.nachname@meine-domain.de überhaupt funktionieren kann. Es könnte ja doppelte Namen geben – und das dürfte bei so einer einfachen alias-Defintion zu Problemen führen, oder!??

Viele Grüße,
Michael

Hallo zusammen,

da hänge ich mich doch gleich mal dran: Funktionieren denn inzwischen
die Mailverteiler wie 10a@meineschule.de? Wir nutzen das für Klassen und
Projektgruppen recht intensiv. Vor allem das Mailsystem (und der wohl
noch langsame Klassenarbeitsmodus) halten uns derzeit noch vom Umstieg
ab, und es würde mich sehr freuen, wenn es da Neuigkeiten gäbe.

Beste Grüße

Jörg

1 „Gefällt mir“