Nouvelle version du serveur POP3 et IMAP4 Dovecot 2.3.21

Une nouvelle version du serveur POP3/IMAP4 multiplateforme hautes performances Dovecot 2.3.21 a été publiée, prenant en charge les protocoles POP3 et IMAP4rev1 avec des extensions populaires telles que SORT, THREAD et IDLE, ainsi que des mécanismes d'authentification et de chiffrement (SASL, TLS, SCRAM). Dovecot reste entièrement compatible avec mbox classique et Maildir, utilisant des index externes pour améliorer les performances. Les plugins peuvent être utilisés pour étendre les fonctionnalités (par exemple, les quotas et les ACL sont implémentés via des plugins). Le code du projet est distribué sous licences LGPL et MIT.

Les principaux changements:

  • lib-oauth2 : Autoriser la validation des jetons JWT avec le champ "typ" manquant. Le champ "typ" n'est pas utilisé par certains émetteurs clés pour gagner de la place, notamment kubernetes. Maintenant, l'absence de "typ" est acceptable, mais s'il est présent, il doit toujours être "jwt".
  • auth : La réponse "Auth" de passdb et userdb peut contenir la valeur "event_" =value" qui sera ajouté respectivement à l'événement de connexion et à l'événement utilisateur de messagerie.
  • lib-master : définit le titre du processus à différentes étapes d'initialisation pour clarifier ce que le processus attend.
  • lib-storage : le mail_temp_scan_interval est désormais augmenté de 0 à 30 % en fonction du hachage du nom d'utilisateur afin de réduire la probabilité de pics de charge.
  • lib-storage : analyse des fichiers temporaires déplacée du moment où la boîte aux lettres est ouverte jusqu'au moment où elle est fermée pour réduire le délai rencontré par les utilisateurs.
  • stats : si des champs sont spécifiés dans la métrique, alors tous ces champs sont exportés en tant que compteurs vers prometheus au format d'exposition.
  • "*-login" : les processus pourraient planter si la connexion SSL était interrompue par inadvertance. - acl : Lors du chargement du plugin, les flags \\HasChildren et \\HasNoChildren étaient mal calculés pour les boîtes mail contenant '*' et '%' dans leurs noms.
  • auth : un crash s'est produit lors de l'échec de la connexion au SGBD PostgreSQL lors du démarrage.
  • auth : lors de la connexion avec des mots de passe invalides (par exemple, avec un schéma inconnu), passdb renvoyait l'erreur "incompatibilité de mot de passe" au lieu d'une "erreur interne".
  • auth : les mécanismes XOAUTH2 et OAUTHBEARER n'ont émis aucun message d'erreur spécifique au protocole en cas d'erreur. Cela a particulièrement gêné la détection de l’OIDC.
  • dbox : Si l'en-tête last_temp_file_scan n'était pas défini (surtout après une migration dsync), alors à la prochaine ouverture de la boîte aux lettres, une analyse des fichiers temporaires serait toujours lancée. Cela pourrait provoquer un pic de charge après les migrations. Correction de l'utilisation du répertoire de boîte aux lettres lorsqu'il n'y a pas d'en-tête, ce qui repousse généralement le temps d'analyse dans le futur.
  • dict-redis : échec de l'annulation de la transaction.
  • dsync : lors de la suppression d'une boîte aux lettres à l'extrémité distante, lorsque les délimiteurs de hiérarchie ne correspondaient pas, une boucle infinie se produisait, entraînant un événement de mémoire insuffisante.
  • dsync : la dsync incrémentielle n'a pas été effectuée sur les noms de dossiers se terminant par « % » à moins que BROKENCHAR n'ait été défini. De plus, les noms de dossier avec « % » à d'autres endroits entraînaient le renommage inutile du dossier en un nom temporaire, puis inversement à chaque dsync incrémentielle. Régression v2.3.19.
  • imap-hibernate : si un client IMAP expirait avec un message "(version reçue)" lors du déverrouillage, le déverrouillage pourrait ensuite se terminer avec succès et continuer le fonctionnement normal. C'était déroutant car imap-hibernate avait déjà détecté que le client s'était déconnecté. Vous pouvez éviter cela en forçant la fin de la connexion avec un délai d'hibernation.
  • imapc : Crash lorsqu'un dossier affiché via un plugin virtuel disparaît du stockage.
  • imapc : les réponses EXPUNGE, EXISTS ou FETCH du serveur pour une boîte aux lettres précédemment sélectionnée peuvent être traitées comme si elles appartenaient à la nouvelle boîte aux lettres actuellement sélectionnée. Cela pourrait entraîner des avertissements.
  • lib-http : le serveur HTTP Dovecot (doveadm, stats/openmetrics) pouvait déconnecter les clients HTTP avant que la réponse ne soit entièrement envoyée. Cela ne se produisait que sur des serveurs occupés où les tampons des sockets du noyau étaient très pleins.
  • lib-http : Correction d'un éventuel crash du serveur http si le client se déconnecte prématurément. Régression en 2.3.18.
  • lib-index : La corruption du fichier d'index pourrait provoquer un crash. Résolu : Panique : fichier mail-transaction-log-view.c : ligne 165 (mail_transaction_log_view_set) : échec de l'assertion : (min_file_seq <= max_file_seq).
  • lib-index : la suppression d'un fichier de cache existant de plus de 1 Go peut provoquer un crash. Désormais, après l'effacement, les fichiers de cache dont la taille est encore supérieure à 1 Go sont supprimés. Corrigé : Panique : fichier mail-index-util.c : ligne 10 (mail_index_uint32_to_offset) : échec de l'assertion : (offset < 0x40000000).
  • lib-lua : le client HTTP n'a pas pu résoudre les noms DNS dans les processus de messagerie car il s'attendait à ce que le socket "dns-client" se trouve dans le répertoire actuel.
  • lib-oauth2 : Dovecot a envoyé client_id et client_secret comme paramètres POST au serveur d'introspection. Cependant, avec l'authentification Basic, leur utilisation est facultative.
  • lib-oauth2 : La validation de JWT "aud" n'a pas été effectuée si "aud" n'était pas dans le jeton mais était configuré dans Dovecot.
  • lib-oauth2 : la vérification du type de clé JWT est trop stricte.
  • lib-oauth2 : l'audience du jeton JWT n'a pas été vérifiée par rapport à client_id comme l'exige la spécification.
  • lib-ssl-iostream : l'utilisation de l'option ssl_require_crl=yes pourrait entraîner l'échec de la vérification de la CRL pour les connexions SSL/TLS sortantes, bien qu'elle soit censée affecter uniquement la vérification de la CRL pour les certificats SSL clients. régression v2.3.17.
  • lib-sql : le pilote MySQL a perdu de la mémoire lors de l'échec de la connexion.
  • lib-storage : Divers correctifs pour un espace disque faible.
  • master : La configuration du service ralenti_kill ne fonctionnait pas correctement sur les serveurs occupés. Il était très peu probable qu’un processus reste inactif suffisamment longtemps pour être tué. De plus, avec un grand nombre de processus (par exemple, imap), le code de traitement ralenti_kill utilisait beaucoup de CPU sur le processus principal. Désormais, chaque intervalle de temps ralenti_kill surveillera le plus petit nombre de processus inactifs, puis supprimera ce nombre.
  • mdbox : la vérification des fichiers temporaires a été effectuée pour les répertoires toujours vides.
  • mdbox : lors de la rédaction des e-mails, l'appel fdatasync() a été exécuté dans le mauvais répertoire parent. De plus, lorsqu'il plantait, il plantait au lieu d'écrire une erreur dans le journal.
  • notify_status : le plugin plante lorsque l'initialisation de l'utilisateur échoue. - pop3 : L'envoi d'une commande avec un ':' entraînait un "assert-crash". Régression dans la version 2.3.18.
  • stats : Correction d'une panique qui se produisait lors de l'accès à un exportateur d'événements inexistant lors de l'ajout dynamique d'une nouvelle métrique à l'aide de la commande « doveadm stats add ». L'erreur correcte est maintenant indiquée.
  • stats : si un processus a exporté de nombreux événements puis s'est arrêté, certains des derniers événements peuvent avoir été perdus.
  • stats : des noms d'étiquettes Prometheus incorrects ont été créés avec certaines configurations group_by d'histogramme. Prométhée a rejeté ces balises.
  • bienvenue : Le plugin échouait dans certaines situations où une INBOX était créée mais non ouverte, par exemple si GETMETADATA était utilisé avant d'ouvrir l'INBOX.

Source: opennet.ru

Ajouter un commentaire