Nach fast einem Jahr der Entwicklung wurde die neue stabile Version des Mailservers Postfix – 3.9.0 – veröffentlicht. Gleichzeitig wurde das Ende der Unterstützung der Version Postfix 3.5 angekündigt, die Anfang 2020 herausgegeben wurde. Postfix ist eines der wenigen Projekte, die gleichzeitig hohe Sicherheit, Zuverlässigkeit und Leistung kombinieren, was durch eine durchdachte Architektur und eine strenge Richtlinie zur Code-Qualität und Patch-Überprüfung erreicht wurde. Der Code des Projekts ist in C geschrieben und wird unter den Lizenzen EPL 2.0 (Eclipse Public License) und IPL 1.0 (IBM Public License) veröffentlicht.
Laut einer automatisierten Umfrage im Januar, an der etwa 400.000 Mailserver teilnahmen, Server, wird Postfix auf 36,81 % (vor einem Jahr 33,18 %) der Mailserver verwendet, während der Anteil von Exim 56,61 % (vor einem Jahr 60,27 %) beträgt, Sendmail – 3,60 % (3,62 %), MailEnable – 1,82 % (1,86 %), MDaemon – 0,40 % (0,39 %), Microsoft Exchange – 0,19 % (0,19 %), OpenSMTPD – 0,09 % (0,06 %).

Hauptneuheiten:
- Ein MongoDB-Client wurde hinzugefügt, der es ermöglicht, in dieser Datenbank virtuelle Benutzer, Pseudonyme, Adresszuordnungen und verschiedene Prüftabellen zu speichern. Für die Anbindung an MongoDB wurde der Tabellentyp „mongodb“ hinzugefügt. Zum Beispiel „alias_maps = proxy:mongodb:/etc/postfix/mongo.cf“, wobei mongo.cf die Konfigurationsdatei für die Verbindung zu MongoDB und die Abfragefilter ist.
- Im lokalen Lieferagenten wurde die Exportierung der während der SMTP-Sitzung über den Parameter ENVID (Envelope ID) in der ESMTP MAIL-Anweisung (RFC 3461) übermittelte Weiterleitungs-ID hinzugefügt. Die ID wird in der Umgebungsvariable ENVID gespeichert und über den Parameter „${envid}“ an den Pipe-Zustellagenten übergeben.
- Die Clients für die Speicherung von Daten in MySQL („mysql:“ ) und PostgreSQL („pgsql:“ ) haben Parameter erhalten: „idle_interval“ zur Bestimmung der Inaktivitätszeit vor dem Schließen der Verbindung und „retry_interval“ zur Festlegung eines Timers für die Wiederholung von Anfragen. Standardmäßig sind diese Parameter auf 60 Sekunden eingestellt. Der Wert von „retry_interval“ kann verringert werden, um beispielsweise die Wiederherstellungszeit nach Fehlern zu verkürzen, wenn nur ein Server im Attribut „hosts“ verwendet wird.
- Im MySQL-Client wurde die Einstellung „charset“ zur Angabe der Standard-Zeichencodierung hinzugefügt. Standardmäßig wird der Wert „utf8mb4“ verwendet, was den Standardeinstellungen in MySQL 8.0 entspricht (in früheren Versionen wurde der Wert „latin1“ verwendet). Die Unterstützung für Versionen älter als MySQL 4.0 (d. h. Versionen, die vor 2003 veröffentlicht wurden) wird eingestellt.
- Es wird die optionale Möglichkeit angeboten, einen selbstsignierten (raw) öffentlichen Schlüssel für TLS, der nicht an eine Zertifizierungsstelle gebunden ist, anstelle des X.509-Zertifikats zu verlangen. Die Verwendung von raw-Schlüsseln zur Authentifizierung von Clients und Servern kann über die Parameter „smtpd_tls_enable_rpk = yes“ und „smtp_tls_enable_rpk = yes“ aktiviert werden, jedoch hängt das Verhalten bei der Überprüfung stark vom Sicherheitsniveau und der Unterstützung von raw-Schlüsseln in der lokalen TLS-Implementierung ab (siehe Dokumentation).
- Die erste Unterstützung für OpenSSL-Konfigurationsdateien wurde hinzugefügt. Der Parameter tls_config_file wird vorgeschlagen, um auf eine Datei mit TLS-Einstellungen zu verweisen, und der Parameter „tls_config_name“ dient zum Festlegen des Abschnitts mit den Einstellungen aus der Konfigurationsdatei. Die Bindung an OpenSSL-Konfigurationsdateien kann zur Verringerung der Abhängigkeit von den Einstellungen der Distributionen verwendet werden, da eine Änderung des Sicherheitsniveaus zu einer höheren Anzahl von unverschlüsselten Nachrichten führen kann.
- In den Nachrichtenüberschriften wurde das Format der Tageszahlen in Daten geändert – Tage von 1 bis 9 werden nun mit einer Null ergänzt, anstelle eines Leerzeichens (d.h. „01“, „02“ usw.). Diese Änderung wurde vorgenommen, da RFC 5322 empfiehlt, als Trenner einfache Leerzeichen in Daten zu verwenden.
- Schutz gegen bestimmte Arten von „Blind“-Angriffen (SSRF-Angriffe auf Web-Clients, die auf den Server über SMTP abzielen) wurde hinzugefügt. Dieser Schutz wird angewendet, wenn die Einstellung „smtpd_forbid_unauth_pipelining = yes“ gesetzt ist (Standardwert).
- Standardmäßig ist die Einstellung „smtpd_forbid_bare_newline = normalize“ aktiviert, die den Server vor „SMTP smuggling“-Angriffen schützt. Diese Angriffe ermöglichen es, eine einzelne Nachricht in mehrere unterschiedliche Nachrichten zu unterteilen, indem eine nicht standardmäßige Sequenz zum Trennen von E-Mails verwendet wird. Darüber hinaus wurde auch ein Schutz gegen ausgehende „SMTP smuggling“-Angriffe hinzugefügt, bei denen ein Angreifer den auf Postfix basierenden Server nutzt, um einen anderen SMTP-Server anzugreifen. Standardmäßig ist die Einstellung „cleanup_replace_stray_cr_lf = yes“ aktiviert, die überflüssige Zeichen und durch Leerzeichen ersetzt.
- In der Implementierung des DNS-Clients ist die Größe der zurückgegebenen Ergebnisse von DNS-Abfragen jetzt auf 100 Einträge begrenzt, was das 20-fache der im SMTP-Client unterstützten maximalen Anzahl ist. IP-Adressen für einen Server.
- Die Parameter „disable_dns_lookup“ und „permit_mx_backup“ wurden als veraltet eingestuft, ebenso wie einige TLS-Konfigurationseinstellungen.
- Die Unterstützung für Konfigurationen, die vor etwa 20 Jahren als veraltet erklärt wurden, wurde eingestellt: „permit_naked_ip_address“, „check_relay_domains“ und „reject_maps_rbl“.
Quelle: opennet.ru
