Postfix/Nachschlagetabellen: Unterschied zwischen den Versionen
K Textersetzung - „Kategorie:(.*):(.*)“ durch „Kategorie:/$1/$2“ |
K Textersetzung - „[[Postfix:“ durch „[[Postfix/“ |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 53: | Zeile 53: | ||
== Berkeley DB-Dateien sicher aktualisieren == | == Berkeley DB-Dateien sicher aktualisieren == | ||
siehe '''[[Postfix | siehe '''[[Postfix/BerkeleyDB]]''' | ||
== Lookup-Tabellentypen == | == Lookup-Tabellentypen == | ||
Zeile 253: | Zeile 253: | ||
* Bei einigen Postfix-Distributionen ist die Liste dynamisch erweiterbar, da die Unterstützung für Nachschlagetabellen dynamisch ist in Postfix eingebunden. | * Bei einigen Postfix-Distributionen ist die Liste dynamisch erweiterbar, da die Unterstützung für Nachschlagetabellen dynamisch ist in Postfix eingebunden. | ||
[[Kategorie: | [[Kategorie:Postfix/Konfiguration]] | ||
[[Kategorie: | [[Kategorie:Postfix/Architektur]] |
Aktuelle Version vom 2. April 2023, 12:47 Uhr
Beschreibung
- Postfix Nachschlagetabellen
Informationen speichern und nachschlagen
- Zugriffskontrolle
- Umschreiben von Adressen
- Filtern von Inhalten
- Nachschlagetabellen werden als "type:table" angegeben
- "Typ" ist einer der Datenbanktypen
- "table" der Name Nachschlagetabelle
- Die Postfix Dokumentation verwendet die Begriffe "Datenbank" und "Nachschlagetabelle" synonym.
- Beispiele für Nachschlagetabellen
/etc/postfix/main.cf
alias_maps = hash :/etc/postfix/aliases (lokales Aliasing) header_checks = regexp :/etc/postfix/header_checks (Inhaltsfilterung) transport_maps = hash :/etc/postfix/transport (Routing-Tabelle) virtual_alias_maps = hash :/etc/postfix/virtual (Adressumschreibung)
- Nachschlagetabellen speichern Informationen als (Schlüssel, Wert) Paare
- Einfache, aber mächtige Schnittstelle
- Die (Schlüssel, Wert)-Abfrageschnittstelle verbirgt vollständig die Komplexität von LDAP oder SQL vor Postfix
- Beispiel für die Anbindung komplexer Systeme mit einfachen Schnittstellen
- Vorteile der Postfix-Abfrageschnittstelle (Schlüssel, Wert)
- Sie können Postfix-Nachschlagetabellen zuerst mit local implementieren Berkeley DB-Dateien und wechseln Sie dann ohne irgendwelche zu LDAP oder MySQL Auswirkungen auf die Postfix-Konfiguration selbst, wie unter " Vorbereiten von Postfix für LDAP- oder SQL-Lookups " unter.
- Sie können Berkeley-DB-Dateien mit festen Lookup-Strings für verwenden einfache Adressumschreibungsoperationen und Sie können reguläre Ausdrücke verwenden Tabellen für die komplizierteren Arbeiten.
- Mit anderen Worten, Sie tun es nicht müssen alles in die gleiche Tabelle stellen.
- Postfix-Listen versus Tabellen
Die meisten Postfix-Nachschlagetabellen werden zum Nachschlagen von Informationen verwendet.
- Beispiele sind das Umschreiben von Adressen (der Lookup-String ist die alte Adresse, und das Ergebnis ist die neue Adresse) oder Zugriffskontrolle (die lookup string ist der Client, Absender oder Empfänger, und das Ergebnis ist eine Aktion wie "Ablehnen").
Bei manchen Tabellen muss Postfix jedoch nur wissen, ob die Nachschlageschlüssel existiert.
- Jeder nicht leere Nachschlageergebniswert kann verwendet werden hier: das Lookup-Ergebnis wird nicht verwendet.
- Beispiele sind die local_recipient_maps , die bestimmen, welche lokalen Empfänger Postfix akzeptiert in Mail aus dem Netzwerk den mydestination- Parameter das spezifiziert, für welche Domains Postfix lokal liefert, oder die mynetworks- Parameter, der die IP-Adressen von vertrauenswürdigen angibt Kunden oder Kundennetzwerke.
- Technisch gesehen sind dies keine Listen Tische.
- Trotz des Unterschieds werden Postfix-Listen hier beschrieben weil sie dieselbe zugrunde liegende Infrastruktur wie Postfix verwenden Nachschlagetabellen.
Pflege von Postfix-Nachschlagetabellendateien
Wenn Sie Änderungen an einer Datenbank vornehmen, während das Mailsystem aktiv ist läuft, wäre es wünschenswert, wenn Postfix das Lesen von Informationen vermeidet während diese Informationen geändert werden.
- Schön wäre es auch, wenn Sie können eine Datenbank ändern, ohne "postfix reload" ausführen zu müssen, um Postfix zu zwingen, die neuen Informationen zu verwenden.
- Jedes Mal Sie tun "postfix reload" Postfix verliert viel Leistung.
- Wenn Sie eine Netzwerkdatenbank wie LDAP, NIS oder SQL, muss "postfix reload" nicht ausgeführt werden.
- Das LDAP, NIS oder SQL-Server kümmert sich um Lese-/Schreibzugriffskonflikte und gibt die neuen Daten an Postfix, sobald diese Daten verfügbar sind.
- Wenn Sie eine regexp :, pcre :, cidr : oder texthash : Datei dann Postfix kann die Dateiänderungen nicht sofort übernehmen.
- Dies liegt daran, dass a Der Postfix-Prozess liest die gesamte Datei einmal und nie in den Speicher untersucht die Datei erneut.
- Wenn die Datei von einem kurz laufenden Prozess wie z smtpd(8) , cleanup(8) oder local(8) , muss nicht ausgeführt werden "postfix reload" nach einer Änderung.
- Wenn die Datei von einem lang andauernden Prozess wie z wie trivial-rewrite(8) auf einem ausgelasteten Server erforderlich sein kann Führen Sie "postfix reload" aus.
- Wenn Sie eine lokale dateibasierte Datenbank wie DBM oder ändern Berkeley DB, muss "postfix reload" nicht ausgeführt werden.
- Postfix verwendet Dateisperren, um Konflikte beim Lese-/Schreibzugriff zu vermeiden, und wann immer Ein Postfix-Daemon-Prozess bemerkt, dass sich eine Datei geändert hat beenden, bevor die nächste Client-Anforderung bearbeitet wird, sodass eine neue Der Prozess kann mit der neuen Datenbank initialisiert werden.
Berkeley DB-Dateien sicher aktualisieren
siehe Postfix/BerkeleyDB
Lookup-Tabellentypen
- Unterstützt Datenbanktypen
# postconf -m
- Oft unterstützte Datenbanktypen
bbaum
Eine sortierte, ausgewogene Baumstruktur.
- Dies ist nur auf verfügbar Systeme mit Unterstützung für Berkeley DB-Datenbanken.
- Datenbankdateien sind erstellt mit dem postmap(1) oder postalias(1) Befehl.
- Die Suche Tabellenname, wie er in " btree :table" verwendet wird, ist der Name der Datenbankdatei ohne die Endung ".db".
CDB
Eine leseoptimierte Struktur ohne Unterstützung für inkrementelle Updates.
- Datenbankdateien werden mit dem Befehl postmap(1) oder postalias(1) erstellt .
- Der Name der Nachschlagetabelle, wie er in " cdb :table" verwendet wird, ist der Name der Datenbankdatei ohne die Endung ".cdb".
- Diese Funktion ist mit Postfix 2.2 verfügbar und später.
cidr
Eine Tabelle, die Werte mit Classless Inter-Domain verknüpft Routing (CIDR)-Muster.
- Das Tabellenformat ist in cidr_table(5) .
dbm
Ein indizierter Dateityp, der auf Hashing basiert.
- Dies ist nur verfügbar auf Systemen mit Unterstützung für DBM-Datenbanken. Öffentliche Datenbankdateien werden mit dem Befehl postmap(1) oder postalias(1) erstellt und sind privat Datenbanken werden von Postfix-Daemons verwaltet.
- Der Name der Nachschlagetabelle wie in " dbm :table" verwendet, ist der Name der Datenbankdatei ohne das ".dir" oder ".pag"-Suffix.
um
Das Array der UNIX-Prozessumgebung.
- Der Nachschlageschlüssel ist die Variablennamen.
- Der Nachschlagetabellenname in " environ :table" wird ignoriert.
scheitern
Eine Tabelle, die zuverlässig alle Anforderungen fehlschlägt.
- Die Nachschlagetabelle Der Name wird nur für die Protokollierung verwendet.
- Diese Tabelle dient der Vereinfachung von Postfix Fehlertests.
Hasch
Ein indizierter Dateityp, der auf Hashing basiert.
- Dies ist nur verfügbar auf Systemen mit Unterstützung für Berkeley DB-Datenbanken. Öffentliche Datenbank Dateien werden mit dem Befehl postmap(1) oder postalias(1) erstellt , und Private Datenbanken werden von Postfix-Daemons verwaltet.
- Die Datenbank name, wie er in " hash :table" verwendet wird, ist der Name der Datenbankdatei ohne die „.db“-Suffix.
Inline (schreibgeschützt)
Eine nicht freigegebene Nachschlagetabelle im Arbeitsspeicher.
- Beispiel: " inline :{ key=value , { key = text with whitespace or comma }}".
- Schlüssel-Wert-Paare werden durch Leerzeichen oder Komma getrennt; mit einem Schlüsselwert Paar innerhalb von "{}", Leerzeichen werden nach dem öffnenden "{" ignoriert, um das "=" zwischen Schlüssel und Wert und vor dem schließenden "}".
- Inline-Tabellen eliminieren die müssen eine Datenbankdatei für nur wenige feste Elemente erstellen.
- Sehen auch der static : Kartentyp.
intern
Eine nicht freigegebene Hash-Tabelle im Arbeitsspeicher.
- Sein Inhalt geht verloren, wenn ein Prozess endet.
lmdb
OpenLDAP LMDB-Datenbank.
- Dies ist nur auf Systemen verfügbar mit Unterstützung für LMDB-Datenbanken. Öffentliche Datenbankdateien werden erstellt mit dem postmap(1) oder postalias(1) -Befehl und private Datenbanken werden von Postfix-Daemons verwaltet.
- Der Datenbankname, wie er in verwendet wird " lmdb :table" ist der Name der Datenbankdatei ohne das Suffix ".lmdb".
- Siehe lmdb_table(5) für Details.
ldap (schreibgeschützt)
LDAP-Datenbankclient.
- Einzelheiten zur Konfiguration finden Sie in der ldap_table(5) .
Speicher
Memcache-Datenbankclient.
- Konfigurationsdetails sind in angegeben memcache_table(5) .
MySQL (schreibgeschützt)
MySQL-Datenbank-Client.
- Konfigurationsdetails sind in angegeben mysql_table(5) .
netinfo (schreibgeschützt)
Netinfo-Datenbankclient.
nis (schreibgeschützt)
NIS-Datenbankclient.
nisplus (schreibgeschützt)
NIS+-Datenbankclient.
- Konfigurationsdetails sind in angegeben nisplus_table(5) .
pcre (schreibgeschützt)
Eine Nachschlagetabelle basierend auf Perl-kompatiblen regulären Ausdrücken.
- Das Dateiformat ist in pcre_table(5) .
- Die Nachschlagetabelle name, wie er in " pcre :table" verwendet wird, ist der Name des regulären Ausdrucks Datei.
Pipemap (schreibgeschützt)
Eine Pipeline von Nachschlagetabellen.
- Beispiel: " Pipemap :{ Typ 1 :Name 1 , ..., type n :name n }".
- Jede " pipemap :" Abfrage ist an den ersten Tisch gegeben.
- Jedes Suchergebnis wird zur Abfrage für die nächste Tabelle in der Pipeline, und die letzte Tabelle erzeugt die Endergebnis.
- Wenn eine Tabellensuche kein Ergebnis liefert, wird die Pipeline ergibt kein Ergebnis.
- Die ersten und letzten Zeichen der " pipemap :" Tabellenname muss "{" und "}" sein.
- Innerhalb dieser befinden sich einzelne Karten durch Komma oder Leerzeichen getrennt.
pgsql (schreibgeschützt)
PostgreSQL-Datenbankclient.
- Konfigurationsdetails werden angegeben in pgsql_table(5) .
Proxy
Postfix -Proxymap(8) -Client für gemeinsamen Zugriff auf Postfix Datenbanken.
- Die Namenssyntax für Nachschlagetabellen lautet " Proxy : Typ:Tabelle ".
Randkarte (schreibgeschützt)
Eine In-Memory-Tabelle, die eine zufällige Auswahl durchführt.
- Beispiel: " randmap :{ result 1 . ..., result n }".
- Jede Tabellenabfrage gibt eine zufällige Auswahl aus den angegebenen Ergebnissen zurück.
- Die ersten und letzten Zeichen des Tabellennamens " randmap :" müssen sein "{" und "}".
- Innerhalb dieser werden einzelne Maps mit Komma getrennt oder Leerzeichen.
- Um einem bestimmten Ergebnis mehr Gewicht zu verleihen, geben Sie es an mehrmals.
regulärer Ausdruck (schreibgeschützt)
Eine Nachschlagetabelle, die auf regulären Ausdrücken basiert.
- Das Dateiformat ist in regexp_table(5) .
- Der Name der Nachschlagetabelle, wie er in verwendet wird " regexp :table" ist der Name der Datei mit regulären Ausdrücken.
sdbm
Ein indizierter Dateityp, der auf Hashing basiert.
- Dies ist nur verfügbar auf Systemen mit Unterstützung für SDBM-Datenbanken. Öffentliche Datenbankdateien werden mit dem Befehl postmap(1) oder postalias(1) erstellt und sind privat Datenbanken werden von Postfix-Daemons verwaltet.
- Der Name der Nachschlagetabelle wie in " sdbm :table" verwendet, ist der Name der Datenbankdatei ohne das ".dir" oder ".pag"-Suffix.
Socketmap (schreibgeschützt)
Socketmap-Client im Sendmail-Stil.
- Der Name der Tabelle ist entweder inet : host : port : Name für ein TCP/IP Server oder Unix : Pfadname : Name für eine UNIX-Domäne Server.
- Siehe socketmap_table(5) für Details.
sqlite (schreibgeschützt)
SQLite-Datenbank.
- Konfigurationsdetails sind in sqlite_table(5) .
statisch (schreibgeschützt)
Eine Tabelle, die immer ihren Namen als Suchergebnis zurückgibt.
- Beispielsweise gibt " static :foobar" immer die Zeichenfolge "foobar" als zurück Suchergebnis.
- Geben Sie „ static :{ text with whitespace }“ wenn das Ergebnis Leerzeichen enthält; Dieses Formular ignoriert Leerzeichen nach dem öffnenden "{" und vor dem schließenden "}".
- Siehe auch die inline : Kartentyp.
TCP
TCP/IP-Client.
- Das Protokoll ist in tcp_table(5) .
- Das Der Name der Nachschlagetabelle ist " tcp :host:port", wobei "host" a angibt symbolischer Hostname oder eine numerische IP-Adresse und "Port" spezifiziert a symbolischer Dienstname oder eine numerische Portnummer.
Texthash (schreibgeschützt)
Eine Tabelle, die ähnliche Ergebnisse wie hash : files erzeugt, außer nicht ausführen müssen, postmap(1) bevor Sie es können Verwenden Sie die Datei, und dass texthash : keine Änderungen nach dem erkennt Datei wird gelesen.
- Der Name der Nachschlagetabelle ist " texthash :filename", wobei der Dateiname wird wörtlich genommen; es wird kein Suffix angehängt.
Gewerkschaftskarte (schreibgeschützt)
Eine Tabelle, die jede Abfrage an mehrere Nachschlagetabellen sendet und die alle gefundenen Ergebnisse verkettet, durch Komma getrennt.
- Die Tabelle Namenssyntax ist dieselbe wie für Pipemap-Tabellen.
Unix (schreibgeschützt)
Eine eingeschränkte Ansicht der UNIX-Authentifizierungsdatenbank.
- Folgende Tabellen implementiert:
unix:passwd.byname
Die Tabelle ist die UNIX-Kennwortdatenbank.
- Der Schlüssel ist ein Login Name.
- Das Ergebnis ist ein Kennwortdateieintrag im passwd(5)-Format.
unix: group.byname
Die Tabelle ist die UNIX-Gruppendatenbank.
- Der Schlüssel ist ein Gruppenname.
- Das Ergebnis ist ein Gruppendateieintrag im Format group(5).
Andere Nachschlagetabellentypen können je nach Art verfügbar sein Postfix wurde gebaut.
- Bei einigen Postfix-Distributionen ist die Liste dynamisch erweiterbar, da die Unterstützung für Nachschlagetabellen dynamisch ist in Postfix eingebunden.