Neue Version des POP3- und IMAP4-Servers Dovecot 2.3.21

Die neue Version des plattformübergreifenden, leistungsstarken POP3/IMAP4-Servers Dovecot 2.3.21 wurde veröffentlicht. Er 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 klassischen mbox und Maildir, indem externe Indizes verwendet werden, um die Leistung zu steigern. Zur Erweiterung der Funktionalität können Plugins verwendet werden (z. B. werden über Plugins Quoten und ACL implementiert). Der Projektcode wird unter den Lizenzen LGPL und MIT verbreitet.

Hauptänderungen:

  • lib-oauth2: Die Überprüfung von JWT-Token ohne das Feld „typ“ ist erlaubt. Das Feld „typ“ wird von einigen Schlüssel-Emittern zur Einsparung von Platz nicht verwendet, insbesondere von Kubernetes. Nun ist das Fehlen von „typ“ zulässig, aber falls es vorhanden ist, muss es dennoch „jwt“ sein.
  • auth: Die „Auth“-Antwort von passdb und userdb kann den Wert „event_<name>=value“ enthalten, der dem Systemanmeldeereignis und dem Ereignis des Mailbenutzers entsprechend hinzugefügt wird.
  • lib-master: Setzt den Prozess-Header in verschiedenen Phasen der Initialisierung, um zu klären, was der Prozess erwartet.
  • lib-storage: Das Intervall mail_temp_scan_interval wird jetzt um 0…30% abhängig vom Hash des Benutzernamens erhöht, um die Wahrscheinlichkeit von Lastspitzen zu verringern.
  • lib-storage: Der Scan der temporären Datei wurde vom Öffnen des Postfachs auf dessen Schließung verlegt, um die vom Benutzer wahrgenommene Verzögerung zu reduzieren.
  • stats: Wenn in der Metrik Felder angegeben sind, werden alle diese Felder als Zähler für Prometheus im Expositionsformat exportiert.
  • „*-login“: Prozesse konnten bei unsachgemäßer Schließung der SSL-Verbindung abstürzen. — acl: Beim Laden des Plugins wurden die Flags \\HasChildren und \\HasNoChildren für Postfächer, die in ihrem Namen ‘*’ und ‘%’ enthalten, falsch berechnet.
  • auth: Ein Fehler trat auf, wenn die Verbindung zur PostgreSQL-Datenbank während des Starts fehlschlug.
  • auth: Bei der Anmeldung mit falschen Passwörtern (z. B. mit unbekanntem Schema) wurde in passdb anstelle von „interner Fehler“ der Fehler „password mismatch“ ausgegeben.
  • auth: Die Mechanismen XOAUTH2 und OAUTHBEARER gaben bei allen Fehlern keine protokollspezifische Fehlermeldung aus. Dies hatte insbesondere negative Auswirkungen auf die Erkennung von OIDC.
  • dbox: Wenn der Titel last_temp_file_scan nicht gesetzt war (insbesondere nach der dsync-Migration), wurde bei jedem nächsten Öffnen des Postfachs immer der Scan der temporären Dateien gestartet. Dies konnte nach Migrationen zu einer erhöhten Last führen. Behebt das durch die Verwendung von atime des Postfachverzeichnisses, falls der Titel nicht gesetzt ist, was normalerweise die Scan-Zeit in die Zukunft verschiebt.
  • dict-redis: Beim Zurücksetzen von Transaktionen trat ein Fehler auf.
  • dsync: Beim Löschen eines Postfachs am entfernten Ende, wenn die Hierarchie-Trennzeichen nicht übereinstimmten, trat eine Endlosschleife auf, die zu einem Gedächtnisausfall führte.
  • dsync: Inkrementelles dsync wurde nicht für Ordnernamen ausgeführt, die mit '%' endeten, wenn der Wert BROKENCHAR nicht gesetzt war. Auch führten Ordnernamen mit '%' an anderen Stellen dazu, dass bei jedem inkrementellen dsync eine unnötige Umbenennung des Ordners in einen temporären Namen und zurück stattfand. Regression v2.3.19.
  • imap-hibernate: Wenn beim Entsperren des IMAP-Clients ein Timeout mit der Nachricht „(version received)“ auftrat, konnte das Entsperren später erfolgreich abgeschlossen werden und normal weiterarbeiten. Dies führte zu Verwirrung, da imap-hibernate bereits feststellte, dass sich der Client getrennt hatte. Dies kann vermieden werden, indem die Verbindung durch ein Timeout am Ende des Hibernate abgeschaltet wird.
  • imapc: Absturz beim Verschwinden eines aus dem Speicher stammenden Ordners, der über ein virtuelles Plugin angezeigt wurde.
  • imapc: Antworten EXPUNGE, EXISTS oder FETCH mit Server für ein zuvor ausgewähltes Postfach konnten so verarbeitet werden, als ob sie zu einem neuen Postfach gehörten, das derzeit ausgewählt wurde. Dies konnte zu Warnmeldungen führen.
  • lib-http: Der HTTP-Server Dovecot (doveadm, stats/openmetrics) konnte HTTP-Kunden vor vollständigem Senden der Antwort abmelden. Dies geschah nur auf stark ausgelasteten Servern, wo die Kernel-Socket-Puffer stark überfüllt waren.
  • lib-http: Möglicher Absturz des http-Servers bei früherer Abmeldung des Clients behoben. Regression in 2.3.18.
  • lib-index: Eine Beschädigung der Indexdatei konnte zu einem Absturz führen. Behebt: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
  • lib-index: Das Löschen einer bestehenden Cache-Datei mit einer Größe von über 1 GB konnte zu einem Fehler führen. Jetzt werden nach dem Löschen Cache-Dateien, deren Größe immer noch 1 GB überschreitet, entfernt. Behebung: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): Assertion fehlgeschlagen: (offset < 0x40000000).
  • lib-lua: Der HTTP-Client konnte DNS-Namen in den Mail-Prozessen nicht auflösen, da erwartet wurde, dass der Socket „dns-client“ sich im aktuellen Verzeichnis befindet.
  • lib-oauth2: Dovecot sendete client_id und client_secret als POST-Parameter an den Inspektionsserver. Bei der Basis-Authentifizierung ist deren Verwendung jedoch optional.
  • lib-oauth2: Die JWT Validierung von „aud“ wurde nicht durchgeführt, wenn „aud“ im Token fehlte, aber in Dovecot konfiguriert war.
  • lib-oauth2: Zu strenge Überprüfung des JWT-Schlüsseltyps.
  • lib-oauth2: Die Zielgruppe des JWT-Tokens wurde nicht mit client_id überprüft, wie es die Spezifikation vorschreibt.
  • lib-ssl-iostream: Die Verwendung der Option ssl_require_crl=yes konnte zu Fehlern bei der CRL-Überprüfung für ausgehende SSL/TLS-Verbindungen führen, obwohl angenommen wurde, dass sie nur die Überprüfung für Client-Verbindungen betrifft. SSL-Zertifikaten. v2.3.17 Regression.
  • lib-sql: Der MySQL-Treiber ermöglichte einen Speicherleck bei fehlerhaften Verbindungen.
  • lib-storage: Verschiedene Korrekturen bei unzureichendem Speicherplatz auf der Festplatte.
  • master: Die Konfiguration von idle_kill für den Dienst funktionierte auf stark belasteten Servern nicht richtig. Es war sehr unwahrscheinlich, dass ein Prozess lange genug im Leerlauf war, um beendet zu werden. Außerdem verbrauchte der idle_kill-Code bei vielen Prozessen (z. B. imap) erheblich CPU-Ressourcen im Hauptprozess. Jetzt wird jeder Zeitraum von idle_kill die geringste Anzahl von Leerlaufprozessen verfolgen und diese Anzahl dann beenden.
  • mdbox: Die Überprüfung temporärer Dateien wurde für immer leere Verzeichnisse durchgeführt.
  • mdbox: Bei der Speicherung von E-Mails wurde der Aufruf fdatasync() im falschen übergeordneten Verzeichnis ausgeführt. Bei einem Fehler kam es außerdem zu einem Absturz anstatt einen Fehler im Protokoll zu schreiben.
  • notify_status: Das Plugin stürzt bei einer fehlgeschlagenen Benutzerinitialisierung ab. — pop3: Das Senden eines Befehls mit dem Zeichen ‘:’ führte zu einem „assert-crash“. Regression in Version 2.3.18.
  • stats: Eine Panic wurde behoben, die beim Zugriff auf einen nicht vorhandenen Ereignisexporteur beim dynamischen Hinzufügen einer neuen Metrik mit dem Befehl „doveadm stats add“ auftrat. Jetzt wird ein korrekter Fehler angezeigt.
  • stats: Wenn der Prozess viele Ereignisse exportiert hat und dann beendet wurde, könnten einige der letzten Ereignisse verloren gegangen sein.
  • stats: Ungültige Prometheus-Labelnamen wurden bei bestimmten Konfigurationen von Histogramm group_by erstellt. Prometheus hat diese Labels abgelehnt.
  • welcome: Das Plugin wurde in einigen Situationen nicht ausgeführt, in denen der INBOX erstellt, aber nicht geöffnet wurde, beispielsweise wenn GETMETADATA vor dem Öffnen von INBOX verwendet wurde.

Quelle: opennet.ru

60GB SSD 8Gb DDR4