Postfix Architektur: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „{{#drawio:postfix-101}}“)
 
Zeile 1: Zeile 1:
 +
 +
=== Übersicht ===
 +
Postfix ist ein modular aufgebauter Mailserver, der aus mehreren Prozessen besteht. Diese Prozesse arbeiten zusammen, um E-Mails zu empfangen, zu verarbeiten, in Warteschlangen zu speichern und weiterzuleiten. Das folgende Diagramm stellt den Ablauf in Postfix dar.
 +
 +
=== Legende ===
 +
Postfix besteht aus verschiedenen Komponenten, die in zwei Hauptkategorien unterteilt werden:
 +
 +
* '''Prozesse (gelb)''': Diese Komponenten sind aktive Dienste, die Postfix-Funktionen ausführen. Sie verarbeiten Mails und kommunizieren mit anderen Prozessen.
 +
* '''Warteschlangen (orange)''': Diese Komponenten speichern Mails vorübergehend, bevor sie weiterverarbeitet oder zugestellt werden.
 +
 +
=== Hauptkomponenten ===
 +
 +
==== smtpd (Prozess) ====
 +
* Empfängt eingehende Mails aus dem Internet oder von anderen Servern
 +
* Führt Authentifizierungs- und Zugriffskontrollen durch
 +
* Prüft Mails gegen RBLs (Realtime Blackhole Lists) und Access-Listen
 +
* Leitet Mails an den '''cleanup'''-Prozess weiter
 +
 +
==== pickup (Prozess) ====
 +
* Holt lokal eingelieferte Mails aus der Maildrop-Warteschlange ab
 +
* Wird verwendet, wenn E-Mails über '''sendmail''' oder interne Prozesse gesendet werden
 +
* Leitet die Mails an den '''cleanup'''-Prozess weiter
 +
 +
==== cleanup (Prozess) ====
 +
* Verantwortlich für die Aufbereitung der Mails
 +
* Wendet Rewrites und Adressübersetzungen an (z. B. via '''trivial-rewrite''')
 +
* Fügt fehlende Header hinzu und sorgt für eine normierte Mail-Struktur
 +
* Leitet Mails in die '''incoming'''-Queue weiter
 +
 +
==== trivial-rewrite (Prozess) ====
 +
* Führt einfache Adressumwandlungen durch
 +
* Bestimmt, ob eine Mail lokal oder extern zugestellt wird
 +
* Arbeitet mit '''canonical''' und '''transport'''-Tabellen
 +
 +
==== maildrop (Warteschlange) ====
 +
* Zwischenpuffer für lokal eingelieferte Mails
 +
* Beinhaltet Mails, die von internen Prozessen oder via '''sendmail''' eingehen
 +
* Wird vom '''pickup'''-Prozess verarbeitet
 +
 +
==== incoming (Warteschlange) ====
 +
* Warteschlange für neue Mails, die gerade von '''cleanup''' verarbeitet wurden
 +
* Bevor die Mails an die '''active'''-Queue weitergegeben werden, wird geprüft, ob Kapazitäten verfügbar sind
 +
 +
==== active (Warteschlange) ====
 +
* Hauptwarteschlange für Mails, die zur Zustellung bereit sind
 +
* Enthält nur eine begrenzte Anzahl an Mails zur gleichzeitigen Verarbeitung
 +
* Leitet Mails an die jeweiligen Transportmechanismen weiter ('''smtp''', '''local''', '''pipe''')
 +
 +
==== deferred (Warteschlange) ====
 +
* Warteschlange für nicht zustellbare Mails
 +
* Enthält Mails, die temporäre Probleme hatten (z. B. Zielserver nicht erreichbar)
 +
* Postfix versucht die Zustellung nach einer bestimmten Zeit erneut
 +
 +
==== smtp (Prozess) ====
 +
* Versendet Mails an externe SMTP-Server
 +
* Verwendet '''transport'''-Tabellen zur Bestimmung der Zustellwege
 +
* Unterstützt Authentifizierung und TLS-Verschlüsselung
 +
 +
==== local (Prozess) ====
 +
* Zustellung von Mails an lokale Nutzer
 +
* Nutzt '''aliases'''- und '''.forward'''-Dateien zur Weiterleitung oder Umleitung
 +
* Speichert Mails in lokalen Postfächern
 +
 +
==== pipe (Prozess) ====
 +
* Übergibt Mails an externe Programme zur weiteren Verarbeitung
 +
* Kann für spezielle Mail-Filter oder Verarbeitungsskripte genutzt werden
 +
 +
==== aliases (Tabelle) ====
 +
* Definiert Weiterleitungen oder Gruppenadressen für lokale Nutzer
 +
* Wird vom '''local'''-Prozess genutzt
 +
 +
==== transport (Tabelle) ====
 +
* Legt fest, wie E-Mails zugestellt werden
 +
* Ermöglicht das Weiterleiten bestimmter Domains oder Adressen über spezielle SMTP-Server
 +
 +
==== virtual (Tabelle) ====
 +
* Enthält Informationen zur virtuellen Nutzer- und Domain-Zustellung
 +
* Wird für E-Mail-Hosting mehrerer Domains verwendet
 +
 +
==== relocated (Tabelle) ====
 +
* Enthält Informationen über umgezogene Benutzer oder Domains
 +
* Informiert Absender über geänderte E-Mail-Adressen
 +
 +
==== access (Tabelle) ====
 +
* Liste von Regeln für den Zugriff auf Postfix-Dienste
 +
* Definiert erlaubte oder blockierte Absender und IP-Adressen
 +
 +
==== RBL (Realtime Blackhole List) (Tabelle) ====
 +
* Prüft eingehende Mails gegen öffentliche Blacklists
 +
* Blockiert Mails von bekannten Spam-Quellen
 +
 +
=== Mail-Fluss in Postfix ===
 +
1. Eine eingehende Mail erreicht '''smtpd''', der sie auf Spam prüft und weiterleitet.
 +
2. Der '''cleanup'''-Prozess bereitet die Mail auf und leitet sie an die '''incoming'''-Queue weiter.
 +
3. Wenn Kapazität vorhanden ist, wird die Mail in die '''active'''-Queue verschoben.
 +
4. Je nach Zieladresse wird die Mail über '''smtp''', '''local''' oder '''pipe''' zugestellt.
 +
5. Falls die Zustellung fehlschlägt, landet die Mail in der '''deferred'''-Queue und wird später erneut versucht.
 +
=== Schaubild ===
 
{{#drawio:postfix-101}}
 
{{#drawio:postfix-101}}

Version vom 16. März 2025, 08:40 Uhr

Übersicht

Postfix ist ein modular aufgebauter Mailserver, der aus mehreren Prozessen besteht. Diese Prozesse arbeiten zusammen, um E-Mails zu empfangen, zu verarbeiten, in Warteschlangen zu speichern und weiterzuleiten. Das folgende Diagramm stellt den Ablauf in Postfix dar.

Legende

Postfix besteht aus verschiedenen Komponenten, die in zwei Hauptkategorien unterteilt werden:

  • Prozesse (gelb): Diese Komponenten sind aktive Dienste, die Postfix-Funktionen ausführen. Sie verarbeiten Mails und kommunizieren mit anderen Prozessen.
  • Warteschlangen (orange): Diese Komponenten speichern Mails vorübergehend, bevor sie weiterverarbeitet oder zugestellt werden.

Hauptkomponenten

smtpd (Prozess)

  • Empfängt eingehende Mails aus dem Internet oder von anderen Servern
  • Führt Authentifizierungs- und Zugriffskontrollen durch
  • Prüft Mails gegen RBLs (Realtime Blackhole Lists) und Access-Listen
  • Leitet Mails an den cleanup-Prozess weiter

pickup (Prozess)

  • Holt lokal eingelieferte Mails aus der Maildrop-Warteschlange ab
  • Wird verwendet, wenn E-Mails über sendmail oder interne Prozesse gesendet werden
  • Leitet die Mails an den cleanup-Prozess weiter

cleanup (Prozess)

  • Verantwortlich für die Aufbereitung der Mails
  • Wendet Rewrites und Adressübersetzungen an (z. B. via trivial-rewrite)
  • Fügt fehlende Header hinzu und sorgt für eine normierte Mail-Struktur
  • Leitet Mails in die incoming-Queue weiter

trivial-rewrite (Prozess)

  • Führt einfache Adressumwandlungen durch
  • Bestimmt, ob eine Mail lokal oder extern zugestellt wird
  • Arbeitet mit canonical und transport-Tabellen

maildrop (Warteschlange)

  • Zwischenpuffer für lokal eingelieferte Mails
  • Beinhaltet Mails, die von internen Prozessen oder via sendmail eingehen
  • Wird vom pickup-Prozess verarbeitet

incoming (Warteschlange)

  • Warteschlange für neue Mails, die gerade von cleanup verarbeitet wurden
  • Bevor die Mails an die active-Queue weitergegeben werden, wird geprüft, ob Kapazitäten verfügbar sind

active (Warteschlange)

  • Hauptwarteschlange für Mails, die zur Zustellung bereit sind
  • Enthält nur eine begrenzte Anzahl an Mails zur gleichzeitigen Verarbeitung
  • Leitet Mails an die jeweiligen Transportmechanismen weiter (smtp, local, pipe)

deferred (Warteschlange)

  • Warteschlange für nicht zustellbare Mails
  • Enthält Mails, die temporäre Probleme hatten (z. B. Zielserver nicht erreichbar)
  • Postfix versucht die Zustellung nach einer bestimmten Zeit erneut

smtp (Prozess)

  • Versendet Mails an externe SMTP-Server
  • Verwendet transport-Tabellen zur Bestimmung der Zustellwege
  • Unterstützt Authentifizierung und TLS-Verschlüsselung

local (Prozess)

  • Zustellung von Mails an lokale Nutzer
  • Nutzt aliases- und .forward-Dateien zur Weiterleitung oder Umleitung
  • Speichert Mails in lokalen Postfächern

pipe (Prozess)

  • Übergibt Mails an externe Programme zur weiteren Verarbeitung
  • Kann für spezielle Mail-Filter oder Verarbeitungsskripte genutzt werden

aliases (Tabelle)

  • Definiert Weiterleitungen oder Gruppenadressen für lokale Nutzer
  • Wird vom local-Prozess genutzt

transport (Tabelle)

  • Legt fest, wie E-Mails zugestellt werden
  • Ermöglicht das Weiterleiten bestimmter Domains oder Adressen über spezielle SMTP-Server

virtual (Tabelle)

  • Enthält Informationen zur virtuellen Nutzer- und Domain-Zustellung
  • Wird für E-Mail-Hosting mehrerer Domains verwendet

relocated (Tabelle)

  • Enthält Informationen über umgezogene Benutzer oder Domains
  • Informiert Absender über geänderte E-Mail-Adressen

access (Tabelle)

  • Liste von Regeln für den Zugriff auf Postfix-Dienste
  • Definiert erlaubte oder blockierte Absender und IP-Adressen

RBL (Realtime Blackhole List) (Tabelle)

  • Prüft eingehende Mails gegen öffentliche Blacklists
  • Blockiert Mails von bekannten Spam-Quellen

Mail-Fluss in Postfix

1. Eine eingehende Mail erreicht smtpd, der sie auf Spam prüft und weiterleitet. 2. Der cleanup-Prozess bereitet die Mail auf und leitet sie an die incoming-Queue weiter. 3. Wenn Kapazität vorhanden ist, wird die Mail in die active-Queue verschoben. 4. Je nach Zieladresse wird die Mail über smtp, local oder pipe zugestellt. 5. Falls die Zustellung fehlschlägt, landet die Mail in der deferred-Queue und wird später erneut versucht.

Schaubild