Printout Header

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.


Postfix Lookup Tables

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.


nach oben

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:


Postfix Lookup Vorgang

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:


postmap –q <Lookup String> <Bezeichnung der Lookup Table>

Dieser Befehl gibt den entsprechenden Result String aus:


Postfix: postmap Kommando

Sie können sich alle Key/Value-Paare aus einer Lookup Table anzeigen lassen und zwar mit folgendem Befehl:


postmap –s <Bezeichnung der Lookup Table>

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:


Postfix Table Lookup

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…).


Postfix Table Lookup

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.