Den nye version af den platformuafhængige, højt ydende POP3/IMAP4-server Dovecot 2.3.21 er udgivet, som understøtter protokollerne POP3 og IMAP4rev1 med populære udvidelser som SORT, THREAD og IDLE, samt autentificerings- og krypteringsmekanismer (SASL, TLS, SCRAM). Dovecot opretholder fuld kompatibilitet med de klassiske mbox og Maildir, ved at anvende eksterne indekser for at forbedre ydeevnen. Plugins kan anvendes for at udvide funktionaliteten (f.eks. er kvoter og ACL implementeret via plugins). Projektkoden distribueres under LGPL- og MIT-licenser.
Vigtige ændringer:
- lib-oauth2: Kontrol af JWT-token med en manglende "typ"-felt er nu tilladt. Nogle nøgleudstedere, herunder Kubernetes, bruger ikke feltet "typ" for at spare plads. Nu tillades det, at "typ" ikke er til stede, men er det til stede, skal det stadig være "jwt".
- auth: "Auth"-svaret fra passdb og userdb kan indeholde værdien "event_=value", som vil blive tilføjet til henholdsvis login- og mailbrugerhændelsen.
- lib-master: Sætter processens header på forskellige initialiseringstrin for at præcisere, hvad processen forventer.
- lib-storage: mail_temp_scan_interval øges nu med 0-30% afhængigt af hash-verdien af brugernavnet for at mindske risikoen for belastningsspidser.
- lib-storage: Scanning af midlertidige filer er flyttet fra åbningen af postkassen til lukningen af den for at reducere den forsinkelse, som brugerne oplever.
- stats: Hvis felter er angivet i metrikken, eksporteres alle disse felter som tællere til Prometheus i eksponeringsformat.
- «*-login»: Processer kunne afslutte uventet ved en brutal afbrydelse af SSL-forbindelsen. — acl: Under indlæsning af plugins blev flagene \\HasChildren og \\HasNoChildren forkert beregnet for postkasser, der indeholdt '*' og '%'.
- auth: Der opstod en fejltagelse ved en mislykket forbindelse til PostgreSQL-databasen under opstart.
- auth: Ved login med forkerte adgangskoder (f.eks. med en ukendt skema) blev der i passdb givet en fejlmeddelelse "password mismatch" i stedet for "internal error".
- auth: XOAUTH2- og OAUTHBEARER-mekanismerne gav ikke en protokolspecifik fejlmeddelelse ved nogen fejl. Dette gjorde det især vanskeligt at opdage OIDC.
- dbox: Hvis overskriften last_temp_file_scan ikke var blevet indstillet (især efter dsync-migrering), ville scanningen af midlertidige filer altid starte ved næste åbning af postkassen. Dette kunne forårsage spidser i belastningen efter migreringerne. Problemet er løst ved at bruge atime fra postkassens mappe, når overskriften er fraværende, hvilket typisk skubber tidspunkterne for scanning fremad.
- dict-redis: Der opstod en fejl ved tilbageskud af transaktioner.
- dsync: Ved sletning af postkassen på den fjerne ende, når niveau-separatorerne i hierarkiet ikke matchede, opstod der en uendelig løkke, der førte til hukommelsesfejl.
- dsync: Inkrementel dsync blev ikke udført for mappenavne, der sluttede med ‘%’, medmindre BROKENCHAR var indstillet. Mappenavne med ‘%’ andre steder førte også til, at hver inkrementel dsync unødvendigt omdøbte mappen til et midlertidigt navn og tilbage igen. Regression i v2.3.19.
- imap-hibernate: Hvis der opstod timeout med meddelelsen «(version received)» ved oplåsning af IMAP-klienten, kunne oplåsningen senere fuldføres og fortsætte normal drift. Dette skabte forvirring, da imap-hibernate allerede havde registreret, at klienten var blevet afbrudt. Dette kan undgås ved at få forbindelsen til at afslutte ved timeouten for hibernation.
- imapc: Nedbrud ved forsvinden af en mappe fra lageret, vist gennem en virtuel plugin.
- imapc: Svarene EXPUNGE, EXISTS eller FETCH med server for den tidligere valgte postkasse kunne blive behandlet som om de tilhørte den nye postkasse, der blev valgt i øjeblikket. Dette kunne føre til advarsler.
- lib-http: Dovecots HTTP-server (doveadm, stats/openmetrics) kunne afbryde HTTP-klienter før fuld sending af svaret. Dette skete kun på overbelastede servere, hvor kerne-socketbufferne var kraftigt overfyldte.
- lib-http: Potentielt nedbrud af http-serveren ved tidlig afbrydelse af klienten er blevet rettet. Regression i 2.3.18.
- lib-index: Korruption af indexfilen kunne føre til nedbrud. Løst: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
- lib-index: Rensning af eksisterende cache-fil større end 1 GB kunne føre til nedbrud. Nu fjernes cache-filer, der stadig overstiger 1 GB, efter rensningen. Rettelse: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): assertion failed: (offset < 0x40000000).
- lib-lua: HTTP-klienten kunne ikke bestemme DNS-navne i mailprocesser, da den forventede, at socket 'dns-client' ville befinde sig i den aktuelle mappe.
- lib-oauth2: Dovecot sendte client_id og client_secret som POST-parametre til introspektionsserveren. Dog var brugen af dem ved Basic auth frivillig.
- lib-oauth2: Validering af JWT 'aud' blev ikke udført, hvis 'aud' manglede i token, men var konfigureret i Dovecot.
- lib-oauth2: For striks kontrol af JWT-nøgletypen.
- lib-oauth2: Publikum for JWT-token blev ikke kontrolleret for overensstemmelse med client_id, som specifikationen kræver.
- lib-ssl-iostream: Brug af parameteren ssl_require_crl=yes kunne føre til fejl i CRL-kontrollen for udgående SSL/TLS-forbindelser, selvom det menes at påvirke CRL-kontrollen kun for klienter. SSL certificates. v2.3.17 regression.
- lib-sql: MySQL-driveren tillod hukommelseslækage ved mislykket forbindelse.
- lib-storage: Forskellige rettelser ved pladsmangel på disken.
- master: Konfigurationen af idle_kill tjenesten fungerede ikke korrekt på belastede servere. Det var meget usandsynligt, at nogen proces var inaktiv længe nok til at blive dræbt. Desuden brugte idle_kill-koden en betydelig mængde CPU på hovedprocessen ved et stort antal processer (for eksempel imap). Nu vil enhver idle_kill-interval overvåge det mindste antal inaktive processer og derefter dræbe det antal.
- mdbox: Kontrollen af midlertidige filer blev udført for altid tomme mapper.
- mdbox: Ved skrivning af e-mails blev fdatasync() kaldt i den forkerte overordnede mappe. Også under en fejl opstod der et nedbrud i stedet for at registrere en fejl i loggen.
- notify_status: Plugin lukker uventet ved mislykket initialisering af bruger. — pop3: Sendelse af kommando med tegn ’:’ førte til nedbrud 'assert-crash'. Regression i udgave 2.3.18.
- stats: Rettet panik ved adgang til en ikke-eksisterende event-exportør ved dynamisk tilsætning af en ny metrik med kommandoen 'doveadm stats add'. Nu gives der en korrekt fejl.
- stats: Hvis processen har eksporteret mange hændelser og derefter stoppet, kan nogle af de seneste hændelser være gået tabt.
- stats: Ugyldige Prometheus etiketter blev genereret under visse konfigurationer af histogram group_by. Prometheus afviste disse etiketter.
- welcome: Plugin'et blev ikke udført i visse situationer, når INBOX blev oprettet, men ikke åbnet, for eksempel hvis GETMETADATA blev brugt inden åbningen af INBOX.
Kilde: opennet.ru
