Variablen und Domänen

Variablen und Domänen

mein System ist so aufgebaut.

smtp --> Postfix --> Dovecot (über LMTP) --> Mailbox

Der schwierige Teil ist, dass die Authentifizierung gegenüber LDAP erfolgt.

Ein typischer LDAP-Eintrag sieht folgendermaßen aus:

CN=Jon Doe
uid=jond
[email protected]

Was nun passiert, ist, dass Postfix die E-Mail an Dovecot weiterleitet. Dovecot führt eine Userdb-Suche durch, aber basierend auf der Ziel-E-Mail-Adresse, die lautet:[email geschützt]".

LDAP sucht also nach (uid=%u), was dann ([email geschützt]).

Postfix sendet dies über den virtuellen Stapel, daher ist der virtuelle Teil folgendermaßen eingerichtet:

virtual_alias_maps = ldap:/etc/postfix/ldap/ldap-aliases.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /
virtual_mailbox_domains = ldap:/etc/postfix/ldap/virtual_domains.cf

virtual_mailbox_maps = ldap:/etc/postfix/ldap/ldap-accounts.cf
virtual_minimum_uid = 5000
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = static:5000

Ich hatte erwartet, dass Postfix die virtual_mailbox_maps verwendet, um den Benutzer zu suchen und diesen Benutzer an LMTP weiterzuleiten, damit Dovecot eine Benutzerdatenbanksuche durchführen kann. Da Postfix nicht weiß, wie das geht, und ich keinen virtual_map*-Parameter finde, der das könnte, weiß ich nicht, was das richtige Verfahren wäre.

Soll Postfix den Benutzer über LDAP suchen und an LMTP senden? Oder soll LMTP eine Suche auf Basis der E-Mail-Adresse des Empfängers durchführen?

EDIT: Ich sollte hinzufügen, dass der IMAP-Teil von Dovecot einwandfrei funktioniert, wenn ich mich mit einem Mail-Client verbinde, um die Mail zu empfangen. Es sucht alles korrekt anhand meines Anmeldenamens, der die UID ist. Das ist natürlich möglich, da ich beim Anmelden bei IMAP meine UID übergebe, sodass es einfach ist, sie für Dovecot zu verwenden.

Ich muss Dovecot irgendwie sagen, es anders zu machen, wenn Postfix es verwendet ...

/etc/dovecot/dovecot-ldap.conf.ext

hosts = localhost
dn = cn=linagent,ou=people,dc=example,dc=org
dnpass = SECRET
tls = no
auth_bind = yes
base = dc=example,dc=org
deref = never
scope = subtree
user_attrs = \
  =home=%{ldap:homeDirectory}, \
  =uid=5000, \
  =gid=5000, \
  =mail=maildir:%{ldap:mailMessageStore}
user_filter = (&(objectClass=inetOrgPerson)(uid=%u))
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectClass=inetOrgPerson)(uid=%u))

Antwort1

Ich weiß nicht, ob das so sein soll, aber ich habe die LDAP-Konfiguration in Dovecot wie folgt geändert:

user_filter = (&(objectClass=inetOrgPerson)(|(uid=%u)(mail=%u)))
pass_filter = (&(objectClass=inetOrgPerson)(|(uid=%u)(mail=%u)))

Den Teil mit uid=%u benötige ich zur Authentifizierung gegenüber einem Mail-Client, da sich der Mail-Client per UID (Benutzername) anmeldet.

Den Teil, wo mail=%u ist, brauche ich für den LMTP-Empfang von Postfix, und Postfix kennt nur die Empfänger-E-Mail.

Da die UID nie eine E-Mail-Adresse ist, gehe ich davon aus, dass diese Lösung funktioniert und keine Konflikte verursacht. Für mich macht sie auch Sinn, aber ich frage mich, warum Courier damit nicht eleganter umgehen kann.

Ich werde die Frage allerdings nicht beantworten, da ich glaube, dass dies nicht der vorgesehene Weg ist.

Antwort2

Sollten Sie nicht die Variable %n anstelle von %u verwenden?
Überprüfen Sie Folgendes:https://wiki.dovecot.org/Variables

Und dies ist ein Auszug aushttps://wiki2.dovecot.org/AuthDatabase/LDAP/Userdb

Variablen und Domänen

Benutzernamen und Domänen können mit den Variablen %n und %d unterschieden werden. Sie trennen den vorherigen Benutzernamen beim "@"-Zeichen. Der vorherige Benutzername lautet:
- Für LMTP lautet er Benutzer@Hostname, wobei der Hostname beispielsweise von der Postfix-Konfiguration abhängt. -Bei IMAP ist es das, was die Passwortdatenbank als Benutzernamen festgelegt hat. Wenn die (LDAP-)Passwortdatenbank "user_attrs = =user=%n" hat, wird der Domänenteil des Anmeldenamens von der Passwortdatenbank entfernt. Die UserDB sieht keinen Domänenteil, d. h. %n und %u sind für die UserDB dasselbe.

Thomas

verwandte Informationen