17.16    Verwaltung von Weiterleitungen für den Mailserver Postfix

Wenn Sie Ihren Mailserver so eingerichtet haben, wie in Kapitel 10, »Mailserver«, gezeigt wird und Ihre User-Accounts im LDAP verwalten, können Sie Ihren Postfix mit wenigen Handgriffen auch an Ihren LDAP-Server anbinden. Am Ende kann Postfix seine Weiterleitungen und Aliasse auch direkt aus LDAP beziehen, sodass Sie keine lokalen Dateien direkt auf dem Server mehr pflegen müssen.

Bei SUSE ist eine LDAP-Unterstützung bereits im Hauptpaket enthalten, bei Debian/Ubuntu müssen Sie das Paket postfix-ldap separat nachinstallieren.

Grundsätzlich können Sie alles, was Sie in Postfix als Map-Datei im Format hash oder btree anlegen können, auch direkt aus LDAP abfragen lassen. Diese Tabellen haben immer einen zweispaltigen Aufbau: Spalte eins ist die Query, also das Suchkriterium, Spalte zwei ist Result/Action, also das Suchergebnis. Bei der Abfrage von Map-Dateien liest Postfix also nie wie bei einer Konfigurationsdatei den Inhalt der Datei ein, sondern »fragt« jedes Mal erneut die jeweilige Datei oder Datenbank – die auch ein LDAP-Server sein kann.

Wenn Ihre User im LDAP zusätzliche Mailadressen im LDAP-Eintrag mailAliases gespeichert haben, benötigen Sie eine Weiterleitung von mailAiases (=Query) auf die Haupt-Mailadresse mail (=Result). Definieren Sie diese Abfrage zunächst in einer Datei /etc/postfix/virtual.ldap, so wie Sie es in Listing 17.84 sehen:

server_host = adminbuch.example.net
#server_port = 389
#start_tls = yes
#version = 3
bind = yes
bind_dn = uid=postfix,ou=users,dc=example,dc=net
bind_pw = geheim

search_base = dc=example,dc=net
scope = sub

query_filter = (mailAliases=%s)
result_attribute = mail

### Diese Variante schreibt Mailadressen auf die User-ID der Nutzer um.
### Der Result-Filter ergänzt die Domain für ein sauberes Mail-Routing!
# query_filter = (|(mailAliases=%s)(mail=%s))
# result_attribute = uid
# result_filter = %s@example.com

Listing 17.84    Die Definition der LDAP-Abfrage für »virtual_alias_maps«

Die einzelnen Parameter haben dabei folgende Bedeutung:

In der Manpage man 5 ldap_table finden Sie weitere Details und Parameter für LDAP-Abfragen durch Postfix.

[+]  Wenn der DIT über ACLs abgesichert ist, müssen Sie über eine ACL sicherstellen, dass der bind_dn die Leseberechtigung an dem Attribut mail hat.

Nun müssen Sie Postfix noch anweisen, die LDAP-Suche aus der Datei virtual.ldap als Abfrage für virtual_alias_maps zu verwenden. Lassen Sie dabei virtual_alias_maps weiterhin als Erstes auf eine echte lokale Textdatei zeigen. Auch wenn diese (hoffentlich) fast immer leer ist, können Sie so im Notfall auch weiterhin schnell und unkompliziert Weiterleitungen per Hand eintragen, ohne immer gleich tatsächlich Einträge im LDAP ändern zu müssen (siehe Listing 17.85):

virtual_alias_maps = hash:/etc/postfix/virtual, proxy:ldap:/etc/postfix/virtual.ldap

Listing 17.85    Definition der »virtual_alias_maps«-Tabelle mit LDAP

Mit dem zusätzlichen Präfix proxy: veranlassen Sie, dass das smtpd-Modul von Postfix die Verbindung zum LDAP-Server nicht selbst aufbaut, sondern diese über das Proxy-Modul von Postfix führt. Auf diese Art und Weise können bestehende Verbindungen mehrfach genutzt werden, und es werden weniger zeitgleich bestehende Verbindungen zu Ihrem LDAP-Server aufgebaut.

Mit dem postmap-Kommando können Sie schnell und einfach prüfen, ob und welches Ergebnis Ihre definierte LDAP-Abfrage liefert. Suchen Sie sich einen Nutzer mit Aliassen/Weiterleitungen, und prüfen Sie auf dem Mailserver, ob diese auch gefunden werden (siehe Listing 17.86):

mail:~ # postmap -q aliasadresse@example.com  ldap:/etc/postfix/virtual.ldap
zieluser@example.common

Listing 17.86    Überprüfung der LDAP-Abfrage mit »postmap«