Objavljena je nova različica večplatformskega visoko zmogljivega strežnika POP3/IMAP4 Dovecot 2.3.21, ki podpira protokola POP3 in IMAP4rev1 s priljubljenimi razširitvami, kot so SORT, THREAD in IDLE, ter mehanizmi za preverjanje pristnosti in šifriranje (SASL, TLS, SCRAM). Dovecot ostaja popolnoma združljiv s klasičnim mboxom in Maildirjem, pri čemer uporablja zunanje indekse za izboljšanje zmogljivosti. Vtičnike je mogoče uporabiti za razširitev funkcionalnosti (na primer, kvote in ACL-ji so implementirani prek vtičnikov). Koda projekta se distribuira pod licencama LGPL in MIT.
Večje spremembe:
- lib-oauth2: Dovoli preverjanje žetonov JWT z manjkajočim poljem "typ". Nekateri ključni izdajatelji ne uporabljajo polja "typ", da prihranijo prostor, zlasti kubernetes. Zdaj je odsotnost "typ" sprejemljiva, če pa je prisoten, mora biti še vedno "jwt".
- auth: Odgovor "Auth" iz passdb in userdb lahko vsebuje vrednost "event_" =vrednost", ki bo dodan dogodku prijave oziroma dogodku uporabnika pošte.
- lib-master: nastavi naslov procesa na različnih stopnjah inicializacije, da pojasni, kaj proces čaka.
- lib-storage: mail_temp_scan_interval je zdaj povečan za 0...30 % glede na zgoščeno vrednost uporabniškega imena, da se zmanjša verjetnost skokov obremenitve.
- lib-storage: skeniranje začasnih datotek je premaknjeno od trenutka, ko se nabiralnik odpre, do trenutka, ko se zapre, da se zmanjša zakasnitev, ki jo imajo uporabniki.
- statistika: Če so v metriki podana polja, se vsa ta polja izvozijo kot števci v prometheus v formatu za razlago.
- "*-login": Procesi se lahko zrušijo, če je bila povezava SSL nenamerno prekinjena. - acl: Pri nalaganju vtičnika sta bili zastavici \\HasChildren in \\HasNoChildren nepravilno izračunani za nabiralnike, ki vsebujejo '*' in '%' v svojih imenih.
- auth: Prišlo je do zrušitve, ko povezava z DBMS PostgreSQL med zagonom ni uspela.
- auth: pri prijavi z neveljavnimi gesli (na primer z neznano shemo) je passdb vrgel napako "password mismatch" namesto "notranja napaka".
- auth: mehanizma XOAUTH2 in OAUTHBEARER pri nobeni napaki nista izdala sporočila o napaki, specifičnega za protokol. To je še posebej oviralo odkrivanje OIDC.
- dbox: če glava last_temp_file_scan ni bila nastavljena (zlasti po selitvi dsync), se bo ob naslednjem odprtju nabiralnika vedno zagnalo skeniranje začasnih datotek. To lahko povzroči skokovito povečanje obremenitve po selitvah. Popravljena uporaba imenika nabiralnika v času, ko ni glave, kar običajno potisne čas skeniranja v prihodnost.
- dict-redis: Povrnitev transakcije ni uspela.
- dsync: pri brisanju nabiralnika na oddaljenem koncu, ko se hierarhični ločilniki niso ujemali, je prišlo do neskončne zanke, kar je povzročilo dogodek zmanjkanja pomnilnika.
- dsync: Inkrementalni dsync ni bil izveden za imena map, ki se končajo z '%', razen če je bil nastavljen BROKENCHAR. Poleg tega so imena map z »%« na drugih mestih povzročila, da je bila mapa po nepotrebnem preimenovana v začasno ime in nazaj z vsakim inkrementalnim dsync-om. Regresija v2.3.19.
- imap-hibernate: Če je med odklepanjem odjemalcu IMAP potekla časovna omejitev s sporočilom "(prejeta različica)", se lahko odklepanje pozneje uspešno zaključi in nadaljuje normalno delovanje. To je bilo zmedeno, ker je imap-hibernate že zaznal, da je odjemalec prekinil povezavo. Temu se lahko izognete tako, da prisilno prekinete povezavo s časovno omejitvijo mirovanja.
- imapc: zruši se, ko mapa, prikazana prek navideznega vtičnika, izgine iz pomnilnika.
- imapc: odgovori EXPUNGE, EXISTS ali FETCH z strežnika Za prej izbrani nabiralnik bi se sporočila lahko obdelala, kot da bi pripadala novemu, trenutno izbranemu nabiralniku. To bi lahko povzročilo opozorila.
- lib-http: HTTP strežnik Dovecot (doveadm, stats/openmetrics) bi lahko prekinil povezavo s HTTP odjemalci, preden je bil odgovor v celoti poslan. To se je zgodilo samo na zasedenih strežnikih, kjer so bili medpomnilniki vtičnic jedra zelo polni.
- lib-http: Odpravljena možna zrušitev http strežnika, če odjemalec predčasno prekine povezavo. Regresija v 2.3.18.
- lib-index: Poškodba indeksne datoteke lahko povzroči zrušitev. Razrešeno: Panika: datoteka mail-transaction-log-view.c: vrstica 165 (mail_transaction_log_view_set): trditev ni uspela: (min_file_seq <= max_file_seq).
- lib-index: Čiščenje obstoječe predpomnilniške datoteke, večje od 1 GB, lahko povzroči zrušitev. Zdaj se po čiščenju izbrišejo datoteke predpomnilnika, ki so še vedno večje od 1 GB. Popravljeno: Panika: datoteka mail-index-util.c: vrstica 10 (mail_index_uint32_to_offset): trditev ni uspela: (odmik < 0x40000000).
- lib-lua: odjemalec HTTP ni mogel razrešiti imen DNS v poštnih procesih, ker je pričakoval, da bo vtičnica "dns-client" v trenutnem imeniku.
- lib-oauth2: Dovecot je strežniku za introspekcijo poslal client_id in client_secret kot parametra POST. Vendar pa je pri osnovni avtorizaciji njihova uporaba neobvezna.
- lib-oauth2: Preverjanje JWT »aud« ni bilo izvedeno, če »aud« ni bilo v žetonu, ampak je bilo konfigurirano v Dovecotu.
- lib-oauth2: preverjanje tipa ključa JWT je prestrogo.
- lib-oauth2: občinstvo žetona JWT ni bilo preverjeno glede na client_id, kot zahteva specifikacija.
- lib-ssl-iostream: Uporaba ssl_require_crl=yes bi lahko povzročila neuspeh preverjanja CRL za odhodne povezave SSL/TLS, čeprav je bilo mišljeno, da vpliva le na preverjanje CRL na strani odjemalca. SSL certifikatiRegresija v2.3.17.
- lib-sql: Gonilnik MySQL je uhajal iz pomnilnika, ko povezava ni uspela.
- lib-storage: različni popravki za pomanjkanje prostora na disku.
- master: Nastavitev storitve idle_kill ni pravilno delovala na zasedenih strežnikih. Zelo malo verjetno je bilo, da bi bil kateri koli proces dovolj dolgo v mirovanju, da bi bil uničen. Poleg tega je koda za obdelavo idle_kill pri velikem številu procesov (na primer imap) porabila precej CPE za glavni proces. Zdaj bo vsak časovni interval idle_kill spremljal najmanjše število nedejavnih procesov in nato uničil to število.
- mdbox: Preverjanje začasnih datotek je bilo izvedeno za vedno prazne imenike.
- mdbox: Pri pisanju e-poštnih sporočil je bil klic fdatasync() izveden v napačnem nadrejenem imeniku. Tudi, ko se je zrušil, se je zrušil, namesto da bi zapisal napako v dnevnik.
- notify_status: vtičnik se zruši, ko inicializacija uporabnika ne uspe. - pop3: Pošiljanje ukaza z ':' je povzročilo "assert-crash". Regresija v izdaji 2.3.18.
- statistika: Odpravljena panika, ki se je pojavila pri dostopu do neobstoječega izvoznika dogodkov pri dinamičnem dodajanju nove metrike z ukazom »doveadm stats add«. Zdaj je podana pravilna napaka.
- statistika: Če je proces izvozil veliko dogodkov in nato zapustil, so bili nekateri najnovejši dogodki morda izgubljeni.
- statistika: Nepravilna imena oznak Prometheus so bila ustvarjena z določenimi konfiguracijami histograma group_by. Prometej je zavrnil te oznake.
- dobrodošli: vtičnik ni uspel v nekaterih situacijah, ko je bila mapa PREJETO ustvarjena, vendar ni bila odprta, na primer, če je bil pred odpiranjem mape PREJETO uporabljen GETMETADATA.
Vir: opennet.ru
