Neue Version des POP3- und IMAP4-Servers Dovecot 2.3.21

Eine neue Version des plattformübergreifenden Hochleistungs-POP3/IMAP4-Servers Dovecot 2.3.21 wurde veröffentlicht und unterstützt die Protokolle POP3 und IMAP4rev1 mit beliebten Erweiterungen wie SORT, THREAD und IDLE sowie Authentifizierungs- und Verschlüsselungsmechanismen (SASL, TLS, SCRAM). Dovecot bleibt vollständig kompatibel mit klassischem Mbox und Maildir und verwendet externe Indizes, um die Leistung zu verbessern. Plugins können zur Erweiterung der Funktionalität verwendet werden (z. B. werden Kontingente und ACLs über Plugins implementiert). Der Projektcode wird unter LGPL- und MIT-Lizenzen vertrieben.

Wichtigste Änderungen:

  • lib-oauth2: Validierung von JWT-Tokens mit fehlendem „typ“-Feld zulassen. Das Feld „typ“ wird von einigen wichtigen Emittenten nicht verwendet, um Platz zu sparen, insbesondere von Kubernetes. Nun ist das Fehlen von „typ“ akzeptabel, aber wenn es vorhanden ist, muss es immer noch „jwt“ sein.
  • auth: Die „Auth“-Antwort von passdb und userdb kann den Wert „event_“ enthalten. =Wert“, der dem Anmeldeereignis bzw. dem E-Mail-Benutzerereignis hinzugefügt wird.
  • lib-master: Legt den Prozesstitel in verschiedenen Phasen der Initialisierung fest, um zu verdeutlichen, worauf der Prozess wartet.
  • lib-storage: Das mail_temp_scan_interval wird jetzt basierend auf dem Benutzernamen-Hash um 0 bis 30 % erhöht, um die Wahrscheinlichkeit von Lastspitzen zu verringern.
  • lib-storage: Das Scannen temporärer Dateien wurde vom Moment des Öffnens des Postfachs auf den Moment des Schließens verschoben, um die Verzögerung für Benutzer zu verringern.
  • Statistiken: Wenn Felder in der Metrik angegeben sind, werden alle diese Felder als Zähler an Prometheus im Expositionsformat exportiert.
  • „*-login“: Prozesse könnten abstürzen, wenn die SSL-Verbindung versehentlich beendet wurde. - acl: Beim Laden des Plugins wurden die Flags \\HasChildren und \\HasNoChildren für Postfächer falsch berechnet, deren Namen „*“ und „%“ enthalten.
  • auth: Es kam zu einem Absturz, als die Verbindung zum PostgreSQL-DBMS während des Startvorgangs fehlschlug.
  • auth: Beim Anmelden mit ungültigen Passwörtern (z. B. mit einem unbekannten Schema) gab passdb den Fehler „Passwort stimmt nicht überein“ anstelle eines „internen Fehlers“ aus.
  • auth: Die Mechanismen XOAUTH2 und OAUTHBEARER haben bei Fehlern keine protokollspezifische Fehlermeldung ausgegeben. Dies erschwerte insbesondere den Nachweis von OIDC.
  • dbox: Wenn der Header last_temp_file_scan nicht gesetzt war (insbesondere nach einer Dsync-Migration), wurde beim nächsten Öffnen des Postfachs immer ein Scan temporärer Dateien gestartet. Dies könnte nach Migrationen zu einer Lastspitze führen. Problem behoben, bei dem das Postfachverzeichnis zur Zeit verwendet wurde, wenn kein Header vorhanden war, wodurch sich die Scanzeit normalerweise in die Zukunft verschiebt.
  • dict-redis: Transaktions-Rollback fehlgeschlagen.
  • dsync: Wenn beim Löschen eines Postfachs auf der Gegenseite die Hierarchiebegrenzer nicht übereinstimmten, kam es zu einer Endlosschleife, die zu einem Nicht-Speicher-Ereignis führte.
  • dsync: Inkrementelles Dsync wurde nicht für Ordnernamen durchgeführt, die auf „%“ enden, es sei denn, BROKENCHAR wurde festgelegt. Außerdem führten Ordnernamen mit „%“ an anderen Stellen dazu, dass der Ordner bei jedem inkrementellen Dsync unnötigerweise in einen temporären Namen und wieder zurück umbenannt wurde. Regression v2.3.19.
  • imap-hibernate: Wenn ein IMAP-Client beim Entsperren eine Zeitüberschreitung mit der Meldung „(Version erhalten)“ erlitt, konnte die Entsperrung später erfolgreich abgeschlossen werden und der normale Betrieb fortgesetzt werden. Dies war verwirrend, da imap-hibernate bereits erkannt hatte, dass der Client die Verbindung getrennt hatte. Sie können dies vermeiden, indem Sie die Beendigung der Verbindung mit einem Ruhezustands-Timeout erzwingen.
  • imapc: Absturz, wenn ein über ein virtuelles Plugin angezeigter Ordner aus dem Speicher verschwindet.
  • imapc: EXPUNGE-, EXISTS- oder FETCH-Antworten vom Server für ein zuvor ausgewähltes Postfach könnten so behandelt werden, als gehörten sie zum neuen, aktuell ausgewählten Postfach. Dies könnte zu Warnungen führen.
  • lib-http: Der Dovecot-HTTP-Server (doveadm, stats/openmetrics) konnte HTTP-Clients trennen, bevor die Antwort vollständig gesendet wurde. Dies geschah nur auf ausgelasteten Servern, bei denen die Kernel-Socket-Puffer sehr voll waren.
  • lib-http: Ein möglicher Absturz des http-Servers behoben, wenn der Client die Verbindung zu früh trennt. Regression in 2.3.18.
  • lib-index: Eine Beschädigung der Indexdatei könnte zu einem Absturz führen. Behoben: Panik: Datei mail-transaction-log-view.c: Zeile 165 (mail_transaction_log_view_set): Behauptung fehlgeschlagen: (min_file_seq <= max_file_seq).
  • lib-index: Das Löschen einer vorhandenen Cache-Datei, die größer als 1 GB ist, könnte zu einem Absturz führen. Nach dem Löschen werden nun Cache-Dateien gelöscht, die noch größer als 1 GB sind. Behoben: Panik: Datei mail-index-util.c: Zeile 10 (mail_index_uint32_to_offset): Assertion fehlgeschlagen: (Offset < 0x40000000).
  • lib-lua: Der HTTP-Client konnte DNS-Namen in Mail-Prozessen nicht auflösen, da er erwartete, dass sich der „dns-client“-Socket im aktuellen Verzeichnis befindet.
  • lib-oauth2: Dovecot hat client_id und client_secret als POST-Parameter an den Introspection-Server gesendet. Bei der Basic-Authentifizierung ist ihre Verwendung jedoch optional.
  • lib-oauth2: Die Validierung von JWT „aud“ wurde nicht durchgeführt, wenn „aud“ nicht im Token enthalten war, aber in Dovecot konfiguriert wurde.
  • lib-oauth2: Die Prüfung des JWT-Schlüsseltyps ist zu streng.
  • lib-oauth2: Die JWT-Token-Zielgruppe wurde nicht gemäß der Spezifikation gegen client_id geprüft.
  • lib-ssl-iostream: Die Verwendung der Option ssl_require_crl=yes konnte dazu führen, dass die CRL-Prüfung für ausgehende SSL/TLS-Verbindungen fehlschlug, obwohl sie sich nur auf die CRL-Prüfung für Client-SSL-Zertifikate auswirken sollte. v2.3.17 Regression.
  • lib-sql: Der MySQL-Treiber verlor Speicher, als die Verbindung fehlschlug.
  • lib-storage: Verschiedene Korrekturen für wenig Speicherplatz.
  • Master: Das Einstellen des Dienstes „idle_kill“ funktionierte auf ausgelasteten Servern nicht ordnungsgemäß. Es war sehr unwahrscheinlich, dass ein Prozess lange genug inaktiv war, um abgebrochen zu werden. Darüber hinaus verbrauchte der Verarbeitungscode „idle_kill“ bei einer großen Anzahl von Prozessen (z. B. imap) ziemlich viel CPU im Hauptprozess. Jetzt überwacht jedes Zeitintervall von „idle_kill“ die kleinste Anzahl inaktiver Prozesse und beendet diese Anzahl dann.
  • mdbox: Die Überprüfung temporärer Dateien wurde für immer leere Verzeichnisse durchgeführt.
  • mdbox: Beim Schreiben von E-Mails wurde der fdatasync()-Aufruf im falschen übergeordneten Verzeichnis ausgeführt. Außerdem stürzte es ab, als es abstürzte, anstatt einen Fehler in das Protokoll zu schreiben.
  • notify_status: Das Plugin stürzt ab, wenn die Benutzerinitialisierung fehlschlägt. - pop3: Das Senden eines Befehls mit einem „:“ führte zu einem „Assert-Absturz“. Regression in Version 2.3.18.
  • Statistiken: Es wurde eine Panik behoben, die beim Zugriff auf einen nicht vorhandenen Ereignisexporter beim dynamischen Hinzufügen einer neuen Metrik mit dem Befehl „doveadm stats add“ auftrat. Jetzt wird der richtige Fehler angegeben.
  • Statistiken: Wenn ein Prozess viele Ereignisse exportiert und dann beendet hat, sind möglicherweise einige der neuesten Ereignisse verloren gegangen.
  • Statistiken: Bei bestimmten Histogramm-Gruppenkonfigurationen wurden falsche Prometheus-Labelnamen erstellt. Prometheus lehnte diese Tags ab.
  • Willkommen: Das Plugin schlug in einigen Situationen fehl, in denen ein Posteingang erstellt, aber nicht geöffnet wurde, beispielsweise wenn GETMETADATA vor dem Öffnen des Posteingangs verwendet wurde.

Source: opennet.ru

Kommentar hinzufügen