Postfix (Software) - Postfix (software)

Postfix
Das Postfix-Logo
Originalautor(en) Wietse Venema am IBM Thomas J. Watson Research Center
Entwickler Venema und viele andere
Erstveröffentlichung 14. Dezember 1998 ; Vor 22 Jahren ( 1998-12-14 )
Stabile Version
3.6.2 / 24. Juli 2021 ; Vor 2 Monaten ( 2021-07-24 )
Vorschauversion
3.7-20211002 / 2. Oktober 2021 ; Vor 16 Tagen ( 2021-10-02 )
Repository
Geschrieben in C
Betriebssystem Plattformübergreifend
Typ Mail-Übergabe-Agent
Lizenz IBM Public License oder Eclipse Public License
Webseite www .postfix .org

Postfix ist ein kostenloser und quelloffener Mail Transfer Agent (MTA), der elektronische Post weiterleitet und zustellt .

Es wird unter der IBM Public License 1.0 veröffentlicht, einer freien Softwarelizenz . Alternativ steht es ab Version 3.2.5 nach Wahl des Benutzers unter der Eclipse Public License 2.0 zur Verfügung.

Ursprünglich 1997 von Wietse Venema am IBM Thomas J. Watson Research Center in New York geschrieben und im Dezember 1998 erstmals veröffentlicht, wird Postfix ab 2021 von seinem Schöpfer und anderen Mitwirkenden aktiv weiterentwickelt. Die Software ist auch unter den früheren Namen VMailer und IBM Secure Mailer bekannt .

Im März 2021 liefen laut einer Studie von E-Soft, Inc. rund 32 % der öffentlich erreichbaren Mailserver im Internet mit Postfix und ist damit der zweitbeliebteste Mailserver hinter Exim .

Typische Bereitstellung

Als SMTP- Server implementiert Postfix eine erste Verteidigungsschicht gegen Spambots und Malware . Administratoren können Postfix mit anderer Software kombinieren, die Spam-/Virenfilterung (z. B. Amavisd-new ), Zugriff auf Nachrichtenspeicher (z. B. Dovecot ) oder komplexe Zugriffsrichtlinien auf SMTP - Ebene (z. B. postfwd , milter- regex , policyd- Gewicht oder Greylisting ).

Als SMTP- Client implementiert Postfix eine leistungsstarke parallelisierte Mail-Zustellungs-Engine. Postfix wird oft mit Mailinglisten- Software (wie Mailman ) kombiniert .

Betriebssysteme

Postfix läuft (oder ist gelaufen) auf AIX , BSD , HP-UX , Linux , macOS , Solaris und im Allgemeinen auf jedem Unix-ähnlichen Betriebssystem, das mit einem C- Compiler ausgeliefert wird und eine Standard- POSIX- Entwicklungsumgebung liefert . Es ist der Standard- MTA für die Betriebssysteme macOS , NetBSD , RedHat / CentOS und Ubuntu .

Die Architektur

Postfix besteht aus einer Kombination von Serverprogrammen, die im Hintergrund ausgeführt werden, und Clientprogrammen, die von Benutzerprogrammen oder Systemadministratoren aufgerufen werden .

Der Postfix-Kern besteht aus mehreren Dutzend Serverprogrammen , die im Hintergrund laufen und jeweils einen bestimmten Aspekt der E-Mail-Zustellung behandeln. Beispiele sind der SMTP- Server, der Scheduler , der Adressumschreiber und der lokale Zustellungsserver. Aus Schadensbegrenzungsgründen laufen die meisten Serverprogramme mit festen eingeschränkten Rechten und werden nach der Verarbeitung einer begrenzten Anzahl von Anfragen freiwillig beendet. Um Systemressourcen zu schonen, werden die meisten Serverprogramme beendet, wenn sie inaktiv werden.

Clientprogramme werden außerhalb des Postfix-Kerns ausgeführt. Sie interagieren mit Postfix-Serverprogrammen durch Mail-Zustellungsanweisungen in der ~/.forward- Datei des Benutzers und durch kleine "Gate"-Programme, um Mail zu senden oder Warteschlangenstatusinformationen anzufordern.

Andere Programme bieten administrative Unterstützung, um Postfix zu starten oder zu stoppen, Statusinformationen abzufragen, die Warteschlange zu bearbeiten oder ihre Konfigurationsdateien zu überprüfen oder zu aktualisieren.

Postfix-Architektur.svg
Gelbe Ellipsen
Einer der vielen Daemons von Postfix, der genau einem Zweck dient. Diese Aufteilung in viele kleinere Softwareteile gilt als einer der Gründe, warum Postfix sicher und stabil ist.
Blaue Kästen
Die blauen Kästchen stellen sogenannte Lookup-Tabellen dar . Eine Nachschlagetabelle besteht aus zwei Spalten (Schlüssel und Wert), die Informationen enthalten, die für die Zugriffskontrolle, das E-Mail-Routing usw. verwendet werden.
Gelbe Kästen
Die gelben Kästchen sind entweder Mail-Warteschlangen oder Dateien. In beiden Fällen werden E-Mails auf persistenten Medien (zB einer Festplatte) gespeichert.
weiße Wolken
Die Wolken stehen für Punkte, an denen E-Mails Postfix betreten oder verlassen. Zum Beispiel smtpd empfängt E - Mails von anderen E - Mail - Server oder Benutzer während SMTP - Relais Mail an andere MTAs.

Implementierung

Die Postfix-Implementierung verwendet sichere Teilmengen der Sprache C und der POSIX- System- API . Diese Teilmengen sind unter einer Abstraktionsschicht verborgen, die etwa 50 % des gesamten Postfix-Quellcodes enthält und die die Grundlage bildet, auf der alle Postfix-Programme aufgebaut sind. Das Primitiv "vstring" macht beispielsweise Postfix-Code resistent gegen Pufferüberlaufangriffe , und das Primitiv "safe open" macht Postfix-Code resistent gegen Race-Condition-Angriffe auf Systemen, die die POSIX- Dateisystem-API implementieren . Diese Abstraktionsschicht hat keinen Einfluss auf die Angriffsresistenz von Nicht-Postfix-Code, wie z. B. Code in Systembibliotheken oder in Bibliotheken von Drittanbietern.

Robustheit

Konzeptionell verwaltet Postfix Pipelines von Prozessen, die die Verantwortung für die Nachrichtenübermittlung und Fehlerbenachrichtigung von einem Prozess zum nächsten weitergeben. Alle Nachrichten- und Benachrichtigungs-"Status"-Informationen werden im Dateisystem gespeichert. Die Prozesse in einer Pipeline laufen meist ohne zentrale Kontrolle ab; diese relative Autonomie vereinfacht die Fehlerbehebung. Wenn ein Prozess fehlschlägt, bevor er seinen Teil einer Datei- oder Protokolltransaktion abgeschlossen hat, zieht sich sein Vorgänger in der Pipeline zurück und versucht die Anforderung später erneut, und sein Nachfolger in der Pipeline verwirft nicht abgeschlossene Arbeiten. Viele Postfix-Daemons können einfach "sterben", wenn sie auf ein Problem stoßen; sie werden automatisch neu gestartet, wenn die nächste Serviceanfrage eintrifft. Dieser Ansatz macht Postfix sehr widerstandsfähig, solange das Betriebssystem oder die Hardware nicht katastrophal ausfallen.

Leistung

Eine einzelne Postfix-Instanz wurde mit ~300 Nachrichtenübermittlungen/Sekunde über das Internet getaktet und läuft auf handelsüblicher Hardware (ein Dell 1850-System aus dem Jahr 2003 mit batteriegepuffertem MegaRAID-Controller und zwei SCSI- Festplatten). Diese Zustellrate liegt eine Größenordnung unter der "intrinsischen" Grenze von 2500 Nachrichtenzustellungen/Sekunde, die mit der Mail-Warteschlange auf einer RAM-Disk bei der Zustellung an den " Discard "-Transport erreicht wurde (mit einem Dual-Core- Opteron- System im Jahr 2007). .

Mailsysteme wie Postfix und Qmail erreichen eine hohe Leistung durch die Zustellung von Mail in parallelen Sitzungen. Bei Mail-Systemen wie Sendmail und Exim , die jeweils eine Verbindung herstellen, kann eine hohe Leistung durch die parallele Übermittlung begrenzter Mail-Stapel erreicht werden, sodass jeder Stapel durch einen anderen Prozess zugestellt wird. Postfix und Qmail erfordern eine parallele Übermittlung an verschiedene MTA-Instanzen, sobald sie ihre intrinsische Leistungsgrenze oder die Leistungsgrenzen der Hardware oder des Betriebssystems erreichen.

Die oben genannten Förderraten sind weitgehend theoretisch. Bei der Massenzustellung von E-Mails wird die tatsächliche Zustellrate hauptsächlich durch die E-Mail-Empfangsrichtlinien des Empfängers und die Reputation des Absenders bestimmt.

Basiskonfiguration

Die Datei main.cf speichert standortspezifische Postfix-Konfigurationsparameter, während master.cf Daemonprozesse definiert. Die Postfix Grundkonfiguration Tutorial deckt die Kern Einstellungen , dass jede Website Bedürfnisse zu berücksichtigen und die Postfix Standard - Konfigurationsbeispiele dokumentiert Konfiguration bespricht Einstellungen für ein paar gemeinsamen Umgebungen. Das Dokument Postfix Address Rewriting behandelt die Adressumschreibung und das Mail-Routing. Die vollständige Dokumentationssammlung finden Sie unter Postfix Documentation

Komplexere Postfix-Implementierungen können umfassen: Integration mit anderen Anwendungen wie SpamAssassin ; Unterstützung für mehrere virtuelle Domänennamen - und verwenden Sie Datenbanken wie MySQL , um komplexe Konfigurationen zu steuern.

Veröffentlichungsverlauf

Ausführung Veröffentlichungsdatum Bedeutsame Änderungen
Haupt Unerheblich
Alte Version, nicht mehr gepflegt: 2.0
Alte Version, nicht mehr gepflegt: 2.1
Alte Version, nicht mehr gepflegt: 2.2
Alte Version, nicht mehr gepflegt: 2.3
Alte Version, nicht mehr gepflegt: 2.4
Alte Version, nicht mehr gepflegt: 2.5 2.5.0 24. Januar 2008
2.5.8 28. August 2009 Zurückgezogene Freigabe.
2.5.17 6. Februar 2012 EOL 2.5
Alte Version, nicht mehr gepflegt: 2.6 2.6.0 12. Mai 2009
2.6.3 2. August 2009 Unangekündigte Veröffentlichung.
2.6.4 26. August 2009 Zurückgezogene Freigabe.
2.6.19 4. Februar 2013 EOL 2.6
Alte Version, nicht mehr gepflegt: 2.7 2.7.0 13. Februar 2010
2.7.16 16. Januar 2014 EOL 2.7
Alte Version, nicht mehr gepflegt: 2,8 2.8.0 20. Januar 2011 Einführung eines Postscreen-Daemons, der vor dem Hauptpostfix sitzt und als Zombie-Blocker fungiert. Außerdem: DNS-Whitelisting, SQLite-Unterstützung
2.8.1 22. Februar 2011
2.8.2 21. März 2011
2.8.3 9. Mai 2011
2.8.4 7. Juli 2011
2.8.5 3. September 2011
2.8.6 24. Oktober 2011
2.8.7 7. November 2011
2.8.8 1. Februar 2012
2.8.9 5. März 2012
2.8.10 24. April 2012
2.8.11 20. Mai 2012
2.8.12 1. August 2012
2.8.13 13. Dezember 2012
2.8.14 4. Februar 2013
2.8.15 22. Juni 2013
2.8.16 5. September 2013
2.8.17 16. Januar 2014
2.8.18 13. Oktober 2014
2.8.19 19. Oktober 2014
2.8.20 8. Februar 2015 EOL 2.8
Alte Version, nicht mehr gepflegt: 2.9 2.9.0 1. Februar 2012 Memcache-Unterstützung, allmählicher Abbau
2.9.1 18. Februar 2012
2.9.2 24. April 2012
2.9.3 20. Mai 2012
2.9.4 1. August 2012
2.9.5 13. Dezember 2012
2.9.6 4. Februar 2013
2.9.7 22. Juni 2013
2.9.8 5. September 2013
2.9.9 16. Januar 2014
2.9.10 13. Oktober 2014
2.9.11 19. Oktober 2014
2.9.12 8. Februar 2015
2.9.13 12. April 2015
2.9.14 20. Juli 2015
2.9.15 10. Oktober 2015 EOL 2.9
Alte Version, nicht mehr gepflegt: 2.10 2.10.0 11. Februar 2013 Unterstützung für TLSv1.1 und TLSv1.2
2.10.1 22. Juni 2013
2.10.2 5. September 2013
2.10.3 16. Januar 2014
2.10.4 13. Oktober 2014
2.10.5 19. Oktober 2014
2.10.6 8. Februar 2015
2.10.7 12. April 2015
2.10.8 20. Juli 2015
2.10.9 10. Oktober 2015
2.10.10 15. Mai 2016 EOL 2.10
Alte Version, nicht mehr gepflegt: 2.11 2.11.0 15. Januar 2014 Unterstützung für DANE
2.11.1 7. Mai 2014
2.11.2 13. Oktober 2014
2.11.3 19. Oktober 2014
2.11.4 8. Februar 2015
2.11.5 12. April 2015
2.11.6 20. Juli 2015
2.11.7 10. Oktober 2015
2.11.8 15. Mai 2016
2.11.9 1. Januar 2017
2.11.10 13. Juni 2017
2.11.11 27. Januar 2018
Alte Version, nicht mehr gepflegt: 3.0 3.0.0 8. Februar 2015 Unterstützung für internationalisierte Domänennamen und Adress-Localparts, wie in RFC 6530 und verwandten Dokumenten definiert, dynamisch verknüpfte Postfix-Bibliotheken und Datenbank-Plugins, Operationen mit mehreren Nachschlagetabellen, Pseudotabellen, die die Implementierung einfacher Dinge erleichtern, und mehr.
3.0.1 12. April 2015
3.0.2 20. Juli 2015
3.0.3 10. Oktober 2015
3.0.4 21. Februar 2016
3.0.5 15. Mai 2016
3.0.6 28. August 2016
3.0.7 1. Oktober 2016
3.0.8 1. Januar 2017
3.0.10 13. Juni 2017
3.0.11 28. Oktober 2017
3.0.12 27. Januar 2018
3.0.13 20. Mai 2018
3.0.14 24. November 2018
3.0.15 26. Februar 2019
Alte Version, nicht mehr gepflegt: 3.1 3.1.0 24. Februar 2016 Vereinfachte Einrichtung von opportunistischem TLS- und SMTP-Server-Schlüssel-/Zertifikatsmanagement, positive und negative DNS-Antwort-TTL-Unterstützung im Postscreen, SASL AUTH-Ratenlimit im SMTP-Server, Sicherheitslimit für die Anzahl der Adressverifizierungsanfragen, JSON-Queue-Listing, zielunabhängige Zustellung Tarifverzögerung, unter anderem.
3.1.1 15. Mai 2016
3.1.2 28. August 2016
3.1.3 1. Oktober 2016
3.1.4 1. Januar 2017
3.1.6 13. Juni 2017
3.1.7 28. Oktober 2017
3.1.8 27. Januar 2018
3.1.9 20. Mai 2018
3.1.10 24. November 2018
3.1.11 26. Februar 2019
3.1.12 30. März 2019
3.1.13 29. Juni 2019
3.1.14 22. September 2019
3.1.15 3. Februar 2020
Ältere Version, aber noch gepflegt: 3.2 3.2.0 28. Februar 2017 Aushandlung von elliptischen Kurven mit OpenSSL ≥ 1.0.2 , Unterstützung für gespeicherte Prozeduren für MySQL-Datenbanken, cidr: Tabellenunterstützung für if/endif und Negation, Unterstützung für Client- Milter- Konfiguration, "PASS"- und "STRIP"-Aktionen in header/body_checks, und mehr.
3.2.2 13. Juni 2017
3.2.3 24. September 2017
3.2.4 28. Oktober 2017
3.2.5 27. Januar 2018
3.2.6 20. Mai 2018
3.2.7 24. November 2018
3.2.8 26. Februar 2019
3.2.9 30. März 2019
3.2.10 29. Juni 2019
3.2.11 22. September 2019
3.2.12 3. Februar 2020
3.2.13 12. März 2020
3.2.14 18. April 2020
Ältere Version, aber noch gepflegt: 3.3 3.3.0 21. Februar 2018 Unterstützung für Legacy-Release Postfix 2.11 beendet
3.3.1 20. Mai 2018
3.3.2 24. November 2018
3.3.3 26. Februar 2019
3.3.4 30. März 2019
3.3.5 29. Juni 2019
3.3.6 22. September 2019
3.3.7 3. Februar 2020
3.3.8 12. März 2020
3.3.9 18. April 2020
Ältere Version, aber noch gepflegt: 3.4 3.4.0 27. Februar 2019 Unterstützung für die Legacy-Version Postfix 3.0 beendet
3.4.1 7. März 2019
3.4.2 10. März 2019
3.4.3 10. März 2019 Eine der Postfix 3.4.2-Änderungen (LINUX5) fehlte.
3.4.4 14. März 2019
3.4.5 30. März 2019
3.4.6 29. Juni 2019
3.4.7 22. September 2019
3.4.8 24. November 2019
3.4.9 3. Februar 2020
3.4.10 12. März 2020
3.4.11 18. April 2020
Aktuelle stabile Version: 3.5 3.5.0 16. März 2020 Unterstützung für die ältere Version Postfix 3.1 beendet
3.5.1 18. April 2020
Neueste Vorschauversion einer zukünftigen Version: 3.6 19. April 2020
Legende:
Alte Version
Ältere Version, noch gepflegt
Letzte Version
Neueste Vorschauversion
Zukünftige Veröffentlichung

Siehe auch

Verweise

Weiterlesen

Externe Links