FAQ: |
Was sind Postfix Lookup Tables und wie werden sie verwendet? |
Postfix als moderner Mail Transfer Agent kann die Adressierung von Nachrichten innerhalb des Mailflusses umändern,
um z.B. eine Mail-Umleitung zu realisieren. Oder Postfix blockt bestimmte Mails ab, weil der Absender
oder Inhalt der Mail auf unerwünschte Spam-Nachrichten schließen lässt.
Diese Fähigkeiten von Postfix beruhen darauf, dass es Tabellen gibt, in denen z.B. Umadressierungen,
Umleitungen, Adressen von Postfach-Umzügen, verbotene Absender-Adressen, Filterregeln und
vieles mehr aufgeführt werden. Die beiden Anlässe, bei denen Postfix derartige Tabellen
benötigt, sind tatsächlich die Umadressierung (siehe dazu auch das Postfix-FAQ "Adress
Rewrite") und das Filtern von Mails (siehe dazu auch das Postfix-FAQ "Filter").
In der Postfix-Welt werden derartige Tabellen auch Lookup Tables oder auch einfach Maps genannt – die
verschiedenen Postfix-Module schauen bei den oben genannten Anlässen in diesen Tabellen nach
ob und wie etwas zu tun ist. Dies passiert an vielen Stellen im Postfix-System.
Teilweise werden in solchen Tabellen viele tausend Einträge vermerkt, z.B. wenn Postfix als
Mailsystem am Rand eines Firmennetzes Mails aus dem Internet empfängt und dann an interne
Postfächer auf anderen Mail-Servern weiterleitet. Eine der Hauptaufgaben eines Postfix-Administrators
wird also die Erstellung und Pflege dieser Lookup Tables sein.
Stellen Sie sich vor, wenn Benutzer in die Umgebung hinzukommen, dort verschwinden oder mit ihrem
Postfach von einem Mail-Server auf einen anderen umziehen: Dadurch ändert sich ja nicht die
Konfiguration des Postfix-Servers an sich. Es werden aber sehr wohl Änderungen an den Lookup
Tables notwendig sein, da z.B. neue Umleitungen erzeugt werden oder Zugangssperrlisten angepasst
werden müssen. Dies rechtfertigt einen näheren Blick auf die Lookup Tables.
Lookup Strings und Result Strings
Die Bezeichnung „Lookup Table“ kommt nicht von ungefähr. In
den allermeisten Fällen möchte ein Postfix Modul nicht nur prüfen, ob ein Eintrag
in einer dieser Tabellen vorhanden ist. Vielmehr wird eine Art Anfrage an die Tabelle gestellt.
Dabei wird nach einer bestimmten Zeichenkette (z.B. einer Mail-Adresse) gesucht, wobei aus der
Tabelle dann eine Antwort herauskommt (z.B. die Umleitungsadresse).
Es findet also ein klassischer Lookup mit einem Ergebnis statt. Verdeutlichen Sie sich dies am
Beispiel einer Lookup Table zur Umleitung von Mails auf andere Zieladressen. Die ursprüngliche
Empfängeradresse „sandra.biermann@cerrotorre.de“ wird in der Tabelle
gesucht, als Ergebnis stellt sich dann die neue Zieladresse „sun@cerro-intern.net“ heraus:
So entstehen die Bezeichnungen Lookup String für die Zeichenkette, die das
Postfix-Modul in der Tabelle sucht, und Result String für das Ergebnis. Die
Zeichenkette des Lookup Strings wird dann in der Tabelle oft auch Key genannt,
die Result Strings dagegen sind die Values.
Zum Überprüfen der Funktion einer Lookup Table können Sie diesen technischen Vorgang
auch mit dem Kommando postmap auslösen:
Dieser Befehl gibt den entsprechenden Result String aus:
Sie können sich alle Key/Value-Paare aus einer Lookup Table anzeigen lassen und zwar mit folgendem Befehl:
Näheres zur Bezeichnung einer Lookup Table (im Screenshot hash:/etc/postfix/virtual)
lesen Sie im FAQ-Abschnitt „Lookup Table Typen und Datenquellen“.
Im hier gezeigten Beispiel war der Result String eine Mail-Adresse. Das muss nicht immer so sein.
Im Zuge der Zugangskontrolle für Mails könnte der Result String z.B. eine Anweisung zum
Zurückweisen bzw. Annehmen der Mail sein:
Hier ist der Lookup String das Subject-Attribut des SMTP-Headers (der Betreff), der Result String
ergibt dann eine Abweisung oder ein Weiterverarbeitung der Mail.
Ein weiteres Beispiel: Es geht um Adressen von Verteilerlisten, bei denen Postfix herausfinden
muß, in welche einzelnen Postfächer ein Mail gesendet werden muß, die an eine
Verteilerliste adressiert ist. Der Lookup String ist hier die Zieladresse der Verteilerliste, der
Result String besteht aus mehreren Einzeladressen von Postfächern (oder anderen Verteilerlisten…).
Bei manchen Lookup-Vorgängen muß Postfix lediglich prüfen, ob ein bestimmter Key in der Tabelle vorhanden ist: Der Value des Result Strings ist dabei völlig unerheblich. Dies ist z.B. beim Systemparameter local_recipient_maps der Fall.