Postfix Architektur

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Ü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 mehrere 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.
  • Lookup-Tabellen (blau): Diese Komponenten enthalten Konfigurationsinformationen oder Regeln, die Postfix zur Verarbeitung von E-Mails verwendet.
  • Ort (weiß): Diese Symbole repräsentieren externe Systeme oder physische Speicherorte, an denen E-Mails eintreffen 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.

Lookup-Tabellen (blaue Kästen)

aliases

  • Enthält eine Liste von Aliasnamen für lokale Benutzer.
  • Wird verwendet, um E-Mails an andere Nutzer oder Gruppen weiterzuleiten.
  • Wird vom local-Prozess genutzt.

transport

  • Definiert, welche Transportmethode für die Zustellung von E-Mails verwendet wird.
  • Kann genutzt werden, um E-Mails für bestimmte Domains an andere SMTP-Server weiterzuleiten.

virtual

  • Enthält Zuordnungen für virtuelle Benutzer und Domains.
  • Wird genutzt, um E-Mails an virtuelle Mailkonten weiterzuleiten.

relocated

  • Liste von umgezogenen Benutzern oder Domains.
  • Wenn ein Benutzer seine E-Mail-Adresse ändert, wird hier eine Information hinterlegt, um Absender über die neue Adresse zu informieren.

access

  • Definiert Regeln zur Kontrolle des E-Mail-Verkehrs.
  • Kann verwendet werden, um bestimmte Absender oder Empfänger zuzulassen oder zu blockieren.

canonical

  • Enthält Regeln für die Adressumschreibung (Canonical Mapping).
  • Kann genutzt werden, um E-Mail-Adressen in ein anderes Format zu konvertieren.

RBL (Realtime Blackhole List)

  • Enthält eine Liste blockierter Absender oder IP-Adressen.
  • Wird von smtpd verwendet, um eingehende Verbindungen gegen bekannte Spamquellen zu prüfen.

Erklärung der weißen Kästen (Ort)

local

  • Lokale Systeme, die E-Mails direkt an Postfix übergeben.
  • Beispielsweise ein Mailclient, der eine E-Mail an den lokalen Postfix-Server sendet.

internet

  • Externe Systeme oder Mailserver im Internet.
  • Hierher werden Mails versendet oder von externen SMTP-Servern empfangen.

mailbox

  • Physischer Speicherort für empfangene E-Mails.
  • Kann sich unter /var/mail oder in individuellen Mailboxen befinden.

UUCP, LMTP, etc.

  • Alternative Protokolle zur Zustellung von E-Mails an andere Systeme.
  • Wird z. B. für die Zustellung an externe Mailserver oder Mail-Cluster verwendet.

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