Postfix Architektur: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | === Übersicht === | + | === Ü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. | 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 === | + | === Legende === |
| − | Postfix besteht aus verschiedenen Komponenten, die in | + | 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. | * '''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. | * '''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 === | + | === Hauptkomponenten === |
| − | ==== smtpd (Prozess) ==== | + | ==== smtpd (Prozess) ==== |
| − | * Empfängt eingehende Mails aus dem Internet oder von anderen Servern | + | * Empfängt eingehende Mails aus dem Internet oder von anderen Servern. |
| − | * Führt Authentifizierungs- und Zugriffskontrollen durch | + | * Führt Authentifizierungs- und Zugriffskontrollen durch. |
| − | * Prüft Mails gegen RBLs (Realtime Blackhole Lists) und Access-Listen | + | * Prüft Mails gegen RBLs (Realtime Blackhole Lists) und Access-Listen. |
| − | * Leitet Mails an den '''cleanup'''-Prozess weiter | + | * Leitet Mails an den '''cleanup'''-Prozess weiter. |
| − | ==== pickup (Prozess) ==== | + | ==== pickup (Prozess) ==== |
| − | * Holt lokal eingelieferte Mails aus der Maildrop-Warteschlange ab | + | * Holt lokal eingelieferte Mails aus der Maildrop-Warteschlange ab. |
| − | * Wird verwendet, wenn E-Mails über '''sendmail''' oder interne Prozesse gesendet werden | + | * Wird verwendet, wenn E-Mails über '''sendmail''' oder interne Prozesse gesendet werden. |
| − | * Leitet die Mails an den '''cleanup'''-Prozess weiter | + | * Leitet die Mails an den '''cleanup'''-Prozess weiter. |
| − | ==== cleanup (Prozess) ==== | + | ==== cleanup (Prozess) ==== |
| − | * Verantwortlich für die Aufbereitung der Mails | + | * Verantwortlich für die Aufbereitung der Mails. |
| − | * Wendet Rewrites und Adressübersetzungen an (z. B. via '''trivial-rewrite''') | + | * Wendet Rewrites und Adressübersetzungen an (z. B. via '''trivial-rewrite'''). |
| − | * Fügt fehlende Header hinzu und sorgt für eine normierte Mail-Struktur | + | * Fügt fehlende Header hinzu und sorgt für eine normierte Mail-Struktur. |
| − | * Leitet Mails in die '''incoming'''-Queue weiter | + | * Leitet Mails in die '''incoming'''-Queue weiter. |
| − | ==== trivial-rewrite (Prozess) ==== | + | ==== trivial-rewrite (Prozess) ==== |
| − | * Führt einfache Adressumwandlungen durch | + | * Führt einfache Adressumwandlungen durch. |
| − | * Bestimmt, ob eine Mail lokal oder extern zugestellt wird | + | * Bestimmt, ob eine Mail lokal oder extern zugestellt wird. |
| − | * Arbeitet mit '''canonical''' und '''transport'''-Tabellen | + | * Arbeitet mit '''canonical''' und '''transport'''-Tabellen. |
| − | ==== maildrop (Warteschlange) ==== | + | ==== maildrop (Warteschlange) ==== |
| − | * Zwischenpuffer für lokal eingelieferte Mails | + | * Zwischenpuffer für lokal eingelieferte Mails. |
| − | * Beinhaltet Mails, die von internen Prozessen oder via '''sendmail''' eingehen | + | * Beinhaltet Mails, die von internen Prozessen oder via '''sendmail''' eingehen. |
| − | * Wird vom '''pickup'''-Prozess verarbeitet | + | * Wird vom '''pickup'''-Prozess verarbeitet. |
| − | ==== incoming (Warteschlange) ==== | + | ==== incoming (Warteschlange) ==== |
| − | * Warteschlange für neue Mails, die gerade von '''cleanup''' verarbeitet wurden | + | * 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 | + | * Bevor die Mails an die '''active'''-Queue weitergegeben werden, wird geprüft, ob Kapazitäten verfügbar sind. |
| − | ==== active (Warteschlange) ==== | + | ==== active (Warteschlange) ==== |
| − | * Hauptwarteschlange für Mails, die zur Zustellung bereit sind | + | * Hauptwarteschlange für Mails, die zur Zustellung bereit sind. |
| − | * Enthält nur eine begrenzte Anzahl an Mails zur gleichzeitigen Verarbeitung | + | * Enthält nur eine begrenzte Anzahl an Mails zur gleichzeitigen Verarbeitung. |
| − | * Leitet Mails an die jeweiligen Transportmechanismen weiter ('''smtp''', '''local''', '''pipe''') | + | * Leitet Mails an die jeweiligen Transportmechanismen weiter ('''smtp''', '''local''', '''pipe'''). |
| − | ==== deferred (Warteschlange) ==== | + | ==== deferred (Warteschlange) ==== |
| − | * Warteschlange für nicht zustellbare Mails | + | * Warteschlange für nicht zustellbare Mails. |
| − | * Enthält Mails, die temporäre Probleme hatten (z. B. Zielserver nicht erreichbar) | + | * Enthält Mails, die temporäre Probleme hatten (z. B. Zielserver nicht erreichbar). |
| − | * Postfix versucht die Zustellung nach einer bestimmten Zeit erneut | + | * Postfix versucht die Zustellung nach einer bestimmten Zeit erneut. |
| − | ==== smtp (Prozess) ==== | + | ==== smtp (Prozess) ==== |
| − | * Versendet Mails an externe SMTP-Server | + | * Versendet Mails an externe SMTP-Server. |
| − | * Verwendet '''transport'''-Tabellen zur Bestimmung der Zustellwege | + | * Verwendet '''transport'''-Tabellen zur Bestimmung der Zustellwege. |
| − | * Unterstützt Authentifizierung und TLS-Verschlüsselung | + | * Unterstützt Authentifizierung und TLS-Verschlüsselung. |
| − | ==== local (Prozess) ==== | + | ==== local (Prozess) ==== |
| − | * Zustellung von Mails an lokale Nutzer | + | * Zustellung von Mails an lokale Nutzer. |
| − | * Nutzt '''aliases'''- und '''.forward'''-Dateien zur Weiterleitung oder Umleitung | + | * Nutzt '''aliases'''- und '''.forward'''-Dateien zur Weiterleitung oder Umleitung. |
| − | * Speichert Mails in lokalen Postfächern | + | * Speichert Mails in lokalen Postfächern. |
| − | ==== pipe (Prozess) ==== | + | ==== pipe (Prozess) ==== |
| − | * Übergibt Mails an externe Programme zur weiteren Verarbeitung | + | * Übergibt Mails an externe Programme zur weiteren Verarbeitung. |
| − | * Kann für spezielle Mail-Filter oder Verarbeitungsskripte genutzt werden | + | * 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 | + | * Enthält Zuordnungen für virtuelle Benutzer und Domains. |
| − | * | + | * Wird genutzt, um E-Mails an virtuelle Mailkonten weiterzuleiten. |
| − | ==== | + | ==== relocated ==== |
| − | * Liste von | + | * 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. |
| − | ==== RBL (Realtime Blackhole List) ( | + | ==== 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 === | ||
| + | #Eine eingehende Mail erreicht '''smtpd''', der sie auf Spam prüft und weiterleitet. | ||
| + | #Der '''cleanup'''-Prozess bereitet die Mail auf und leitet sie an die '''incoming'''-Queue weiter. | ||
| + | #Wenn Kapazität vorhanden ist, wird die Mail in die '''active'''-Queue verschoben. | ||
| + | #Je nach Zieladresse wird die Mail über '''smtp''', '''local''' oder '''pipe''' zugestellt. | ||
| + | #Falls die Zustellung fehlschlägt, landet die Mail in der '''deferred'''-Queue und wird später erneut versucht. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=== Schaubild === | === Schaubild === | ||
{{#drawio:postfix-101}} | {{#drawio:postfix-101}} | ||
Aktuelle Version vom 16. März 2025, 08:45 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 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
- Eine eingehende Mail erreicht smtpd, der sie auf Spam prüft und weiterleitet.
- Der cleanup-Prozess bereitet die Mail auf und leitet sie an die incoming-Queue weiter.
- Wenn Kapazität vorhanden ist, wird die Mail in die active-Queue verschoben.
- Je nach Zieladresse wird die Mail über smtp, local oder pipe zugestellt.
- Falls die Zustellung fehlschlägt, landet die Mail in der deferred-Queue und wird später erneut versucht.
