[Postfixbuch-users] Relay Domains und Transport Maps mit LDAP

Mathias Jeschke postfixbuch-users at gmj.cjb.net
Do Jan 5 23:24:32 CET 2012


Am 05.01.12 17:59, schrieb Jogie at quantentunnel.de:

>> Wie oft fügst Du denn bitte Domains zu Deinen Exchange-Servern hinzu?

> Das ist unterschiedlich und kann über ein Webinterface erfolgen,
> was ich dann nicht mitbekomme.
> Somit müsste ich dann ständig die relay_domains neu aufbauen.

Es ist aber sehr gefährlich solche heikle Entscheidungen, wie:
"Für welche Domains fühlt sich Postfix zuständig?" zu abstrahieren.
Ich hoffe Die Leute mit Zugriff wissen, was sie da tun ...

> Außerdem,finde ich, ist so ein Script ja wieder so ein
> Single-Point-of-Failure Ding...

Software an sich (so wie das Skript, Postfix, Exchange, ...)
stellt aus meiner Sicht erst einmal kein SPoF dar.
Die Frage ist doch viel mehr, auf wie vielen Instanzen wird sie ausgeführt?

Da Du aber Dir Gedanken um die Ausfallsicherheit machst, wirst
Du ja sicher auch mehrere Postfix-Instanzen parallel haben.
Da kann dann auch pro Instanz ein "Cache-Skript" laufen.

> Es stehen 3 LDAP Server bereit, die befragt werden können,
> und da würde ich das halt gern nutzen.

Ich bin mir nicht sicher, ob die OpenLDAP-Lib die bei Postfix'
LDAP-Modul benutzt wird, eine Lastverteilung macht.
Sonst würden die anderen Server (zumindest für LDAP) nur im
Fehlerfall benuzt werden.

> Im prinzip kann ich doch LDAP wie mySQL betrachten, oder? 

Kommt darauf an, was Du mit "im Prinzip" meinst.
LDAP ist ein Verzeichnisdienst, MySQL ein DBMS - das ist schon
etwas grundlegend anderes.

> In "CN=Accepted Domains,CN=Transport Settings,CN=firma,CN=Microsoft Exchange,
> CN=Services,CN=Configuration,DC=firma,DC=com" sind alle Domains,
> für die sich dann der Exchange zuständig fühlt enthalten.
> Und in msExchAcceptedDomainName steht die Domain example.com drin.

> Leider gelingt mir die Abfrage nicht so ganz. Ich erhalte immer die
> Meldung Search base 'CN=Accepted Domains,CN=Transport Settings,CN=firma,
> CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=firma,DC=com'
> not found: 32: No such object

Dann hast Du evtl. einen Tippfehler drin, oder etwas stimmt mit dem
Zugriff auf den LDAP-Server (obwohl dann die Fehlermeldung IIRC
anders lautet).

Versuche doch erstmal das mittels ldapsearch zu prüfen:

$ ldapsearch -x -b "CN=Accepted Domains,CN=Transport
Settings,CN=firma,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=firma,DC=com" \
-D $bind_dn_user -W


> Meine Abfrage sieht folgendermaßen aus:
> [...]

Bei einem kurzen Test hat bei mir folgendes funktioniert:
("search_base" und "query_filter" habe ich natürlich an Deine Werte
angepasst, "server_host" nicht.)

----- /etc/postfix/relay_domains.ldap -----
# Grundeinstellungen
version = 3
server_host = ldap://ldapserver1 ldap://ldapserver2 ldap://ldapserver3

# Anmeldung
bind = yes
bind_dn = -- user ---
bind_pw = -- secret --

search_base = CN=Accepted Domains,CN=Transport
Settings,CN=firma,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=firma,DC=com
query_filter = (msExchAcceptedDomainName=%s)
#                                        ^^
# Bitte beachten: Eingabe ist ein Domainname, keine E-Mailadresse
# ("%d" expandiert sonst zu "") - siehe: man ldap_table

# Antwort
result_attribute = msExchAcceptedDomainName
-------------------------------------------

*Bevor* Du das per:

  relay_domains = ldap:/etc/postfix/relay_domains.ldap

einbindest, prüfe bitte ob Du folgende Ausgabe für Deine Domains erhälst
(hier "example.com"):

$ postmap -q example.com ldap:/etc/postfix/relay_domains.ldap
example.com

(Bei nicht gefundenen Domains bleibt die Ausgabe leer.)


Gruß,
Mathias



Mehr Informationen über die Mailingliste Postfixbuch-users