Postfix/Interna

Aus Foxwiki
(Weitergeleitet von Postfix/Architektur/Interna)

topic - Kurzbeschreibung

Beschreibung

Installation

Aufruf

Parameter

Optionen

Umgebung

Rückgabewert

Konfiguration

Dateien

Anwendung

Sicherheit

Dokumentation

RFC

Man-Page

Info-Pages

Siehe auch

Links

Projekt

Weblinks

TMP

Postfix hinter den Kulissen

Die Artikel Postfix/Empfang und Postfix/Zustellung geben einen Überblick, wie Postfix-Server verarbeitet das Senden und Empfangen von E-Mails.

  • Diese Serverprozesse verlassen sich auf andere Serverprozesse, die Dinge hinter den Kulissen tun.
  • Der Text Im Folgenden wird versucht, jeden Dienst in seinem eigenen Kontext zu visualisieren.
  • Wie Davor sind Namen gefolgt von einer Zahl Postfix-Befehle oder Server Programme, während nicht nummerierte Namen innerhalb schattierter Bereiche darstellen Postfix-Warteschlangen.
  • Der residente Master(8) -Server ist der Supervisor, der behält ein Auge auf das Wohlergehen des Mailsystems Postfix.
  • Es ist typisch beim Systemstart mit dem Befehl "postfix start" gestartet und läuft weiter, bis das System ausfällt.
  • Der Master(8) -Server ist verantwortlich für das Starten von Postfix-Serverprozessen zum Empfangen und E-Mail-Zustellung und für den Neustart von Servern, die vorzeitig beendet werden wegen irgendwelchen problemen.
  • Der Master(8) -Server ist ebenfalls verantwortlich zum Durchsetzen der Serverprozess-Zählerlimits, wie in der angegeben master.cf Konfigurationsdatei
  • Das Bild unten gibt die Programmhierarchie beim Start von Postfix.
  • Nur ein Teil der Post Verarbeitung von Daemon-Prozessen werden angezeigt.
postfix(1)
| |
Postfix-Skript(1)
/
/
| |


\
\
postsuper(1) Meister(8) Postlog(1)
/
/
| |


\
\
smtpd(8) qmgr (8) lokal(8)
  • Der anvil(8) -Server implementiert die Client-Verbindung und Anforderungsrate Begrenzung für alle smtpd(8) -Server. Das TUNING_README Dokument bietet Anleitungen zum Umgang mit fehlerhaften SMTP-Clients. Das anvil(8) ist in Postfix Version 2.2 und höher verfügbar.
Netzwerk -> smtpd(8) <-> Amboss(8)
  • Die bounce(8) , defer(8) und trace(8) werden jeweils verwaltet ihre eigenen Warteschlangen-Verzeichnisbäume mit Protokolldateien pro Nachricht. Postfix verwendet diese Informationen beim Senden von „fehlgeschlagen“, „verzögert“ oder „erfolgreich“ Benachrichtigungen über den Zustellstatus an den Absender.
    Der Trace(8) -Dienst implementiert auch die Unterstützung für Postfix "Mail senden -bv" und "sendmail -v" Befehle, die Berichte darüber erzeugen, wie Postfix liefert Mail und ist mit Postfix Version 2.1 verfügbar und später. Siehe DEBUG_README zum Beispiel.
aufräumen(8) -> qmgr (8) Postfix Warteschlange -> Lieferung Agenten
^ | | in | in
(Nicht-) Lieferung Notiz <- prall(8) aufschieben(8) Spur(8) <- Warteschlange Ich würde, Empfänger, Status
^ | | in
Pro- Botschaft logfiles
  • Die flush(8) -Server führen Protokolle pro Ziel und Implementieren Sie sowohl ETRN als auch "sendmail -qRdestination", wie beschrieben im ETRN_README . Dies verschiebt ausgewählte Warteschlangendateien aus die Warteschlange zurück zur eingehenden Warteschlange und fordert deren Lieferung. Der flush(8) -Dienst ist mit der Postfix-Version verfügbar 1.0 und höher.
eingehend ^ aufgeschoben
^ |
smtpd(8) sendmail(1) nach(1) - Ziel spülen -> bündig(8) <- Aufgeschoben Ziel, Warteschlange Ich würde - Lieferung Agenten, qmgr (8)
^ | | in
Pro Ziel- nation Protokolle
  • Die Proxymap(8) -Server bieten Read-Only und Read-Write Tabellensuche Dienst für Postfix-Prozesse. Dies überwindet Chroot-Einschränkungen, reduziert die Anzahl der offenen Nachschlagetabellen, indem eine geöffnete gemeinsam genutzt wird Tabelle zwischen mehreren Prozessen und implementiert Single-Updater Tische.
  • Der scache(8) -Server verwaltet den Verbindungs-Cache für der Postfix smtp(8) -Client. Wenn Verbindungscaching aktiviert ist für ausgewählten Zielen, trennt der SMTP(8) -Client die Verbindung nicht unmittelbar nach einer Mail-Transaktion, sondern gibt die Verbindung zu der Verbindungs-Cache-Server, der die Verbindung offen hält für a begrenzte Zeit. Der smtp(8) -Client fährt mit einigen fort andere E-Mail-Zustellungsanforderung. Inzwischen kann das jeder smtp(8) -Prozess Fragen Sie den scache(8) -Server nach dieser zwischengespeicherten Verbindung und verwenden Sie sie für die Postzustellung. Als Sicherheitsmaßnahme begrenzt Postfix die Anzahl wie oft eine Verbindung wiederverwendet werden kann.
    Beim Zustellen von E-Mails an ein Ziel mit mehreren E-Mail-Servern Verbindungs-Caching kann helfen, einen nicht antwortenden Server zu überspringen, und damit die Lieferung drastisch beschleunigen. Zwischenspeichern von SMTP-Verbindungen ist in Postfix-Version 2.2 und höher verfügbar. Mehr Informationen zu dieser Funktion finden Sie im CONNECTION_CACHE_README .
/-- SMTP(8) --> Internet
qmgr (8) | | | | v
\-- SMTP(8)
^ |
schach(8)

Ein Postfix smtp(8) -Client kann eine TLS-verschlüsselte Verbindung wiederverwenden (mit " smtp_tls_connection_reuse = yes"). Dies kann stark reduzieren den Overhead des Verbindungsaufbaus und verbessert die Nachrichtenübermittlung Preise. Nachdem ein Postfix smtp(8) -Client eine Verbindung zu einem entfernten SMTP herstellt server und sendet Klartext-EHLO- und STARTTLS-Befehle, die smtp(8) Client fügt wie gezeigt einen tlsproxy(8) -Prozess in die Verbindung ein unter.

Nachdem die E-Mail-Transaktion abgeschlossen ist, wird der Postfix- smtp(8) -Client gibt die smtp(8) -to -tlsproxy(8) -Verbindung zum scache(8) Server, der die Verbindung für eine begrenzte Anzahl offen hält Zeit. Der smtp(8) -Client fährt mit einer anderen Mail-Zustellung fort Anfrage. Inzwischen kann jeder Postfix smtp(8) -Client den scache(8) Server für diese zwischengespeicherte Verbindung und verwenden Sie sie für die E-Mail-Zustellung erneut.

/-- SMTP(8) --> tlsproxy(8) --> Internet
qmgr (8) | | | | v
\-- SMTP(8)
^ |
schach(8)
Ausgabe <- mailq (1) Post- Warteschlange(1) <- showq(8) <- Postfix Warteschlange
  • Die spawn(8) -Server führen auf Anfrage Nicht-Postfix-Befehle aus, mit dem Client, der über Socket oder FIFO mit dem Befehl verbunden ist Standard-Eingabe-, Ausgabe- und Fehlerströme. Sie finden Beispiele für seine Verwendung im SMTPD_POLICY_README .
  • Der tlsmgr(8) -Server wird ausgeführt, wenn TLS (Transport Layer Sicherheit, früher bekannt als SSL) ist in Postfix smtp(8) aktiviert Client oder smtpd(8) -Server. Dieser Prozess hat zwei Aufgaben:
    • Pflegen Sie den Pseudo-Zufallszahlengenerator (PRNG). wird verwendet, um die TLS-Engines im Postfix smtp(8) -Client oder smtpd(8) Serverprozesse. Der Zustand dieses PRNG wird periodisch gespeichert eine Datei und wird gelesen, wenn tlsmgr(8) startet.
    • Pflegen Sie den optionalen Postfix smtp(8) -Client oder smtpd(8) Server-Caches mit TLS-Sitzungsschlüsseln. Gespeicherte Schlüssel können sich verbessern Leistung durch Reduzierung der Berechnungsmenge zu Beginn von eine TLS-Sitzung.

TLS-Unterstützung ist in Postfix Version 2.2 und höher verfügbar. Informationen zur Postfix-TLS-Implementierung finden Sie in TLS_README dokumentieren.

Netzwerk -> smtpd(8) <---Samen--- <-Sitzung-> tlsmgr(8) ---Samen---> <-Sitzung-> SMTP(8) -> Netzwerk
/
/
| |


\
\
smtpd Sitzung Zwischenspeicher PRNG Zustand Datei smtp Sitzung Zwischenspeicher
  • Der verify(8) -Server überprüft, ob es sich um einen Absender oder Empfänger handelt Adresse zustellbar ist, bevor der smtpd(8) -Server sie akzeptiert. Das Der verify(8) -Server fragt einen Cache mit den Ergebnissen der Adressüberprüfung ab. Wenn kein Ergebnis gefunden wird, fügt der verify(8) -Server eine Sonde ein Nachricht in die Postfix-Queue und verarbeitet die Statusaktualisierung ab ein Zustellungsagent oder Warteschlangenmanager. Dieser Vorgang ist in der ADDRESS_VERIFICATION_README dokumentieren. Der Verify(8) -Dienst ist mit der Postfix-Version verfügbar 2.1 und höher.
-> Sonde Botschaft -> Postfix Post Warteschlange
Netzwerk -> smtpd(8) <-> verifizieren(8)
| in
<- Sonde Status <- Postfix Lieferung Agenten -> Lokal -> Netzwerk
^ | in
Adresse Überprüfung Zwischenspeicher
  • Der postscreen(8) -Server kann Postfix "vor" gestellt werden smtpd(8) -Prozesse. Sein Zweck ist es, Verbindungen von der zu akzeptieren Netzwerk und um zu entscheiden, mit welchen SMTP-Clients kommuniziert werden darf Postfix. Laut dem Jahresbericht 2008 von MessageLabs sind 81 % der alle E-Mails waren Spam und 90 % davon wurden von Botnets gesendet; bis 2010, diese Zahlen waren 92 % bzw. 95 %. Während Postscreen(8) hält die Zombies fern, es bleiben mehr smtpd(8) -Prozesse verfügbar für seriöse Kunden.
    postscreen(8) verwaltet eine temporäre Zulassungsliste für Clients, die seine Tests bestehen; indem zugelassenen Clients erlaubt wird, Tests zu überspringen, postscreen(8) minimiert seine Auswirkungen auf den legitimen E-Mail-Verkehr.
    Der postscreen(8) -Server ist mit Postfix 2.8 und verfügbar später. Um die Implementierung einfach zu halten, postscreen(8) -Delegates DNS Allow/Denylist-Lookups für dnsblog(8)-Serverprozesse und delegiert die TLS-Kryptografie/Entschlüsselung an tlsproxy(8)-Serverprozesse . Diese Delegierung ist für den Remote-SMTP-Client unsichtbar.
Zombie
\
Zombie - tlsproxy(8) - - smtpd(8)
\ /
Sonstiges --- Postscreen(8)
/ \
Sonstiges - - smtpd(8)
/
Zombie
  • Der postlogd(8) -Server bietet eine Alternative zu Syslog Protokollierung, die die Standardeinstellung bleibt. Diese Funktion ist verfügbar mit Postfix Version 3.4 oder höher und unterstützt die folgenden Modi:
    • Protokollierung in Datei, die ein Usability-Problem mit adressiert MacOS und eliminiert Informationsverluste, die durch systemd-Ratenbegrenzungen verursacht werden.
Befehle oder Dämonen
-> postlogd(8) -> /Pfad/zur/Datei
  • Protokollierung auf stdout, wodurch eine Syslog-Abhängigkeit beseitigt wird wenn Postfix in einem Container läuft.
Befehle oder Dämonen stdout geerbt von "postfix start-fg"
-> postlogd(8) ->

Siehe MAILLOG_README für Details und Einschränkungen.