Objavljena je nova verzija višenamjenskog visokoperformantnog POP3/IMAP4 servera Dovecot 2.3.21, koja podržava POP3 i IMAP4rev1 protokole s popularnim ekstenzijama poput SORT, THREAD i IDLE, kao i mehanizmima autentifikacije i enkripcije (SASL, TLS, SCRAM). Dovecot održava potpunu kompatibilnost s klasičnim mbox i Maildir formatima, koristeći vanjske indekse za povećanje performansi. Dodatna funkcionalnost može se postići pomoću plugina (na primjer, kvote i ACL su implementirane kroz plugine). Izvorni kod projekta dostupan je pod LGPL i MIT licencama.
Glavne spremembe:
- lib-oauth2: Omogućena je provjera JWT tokena bez polja "typ". Neki izdavači ključeva, uključujući kubernetes, ne koriste polje "typ" radi uštede prostora. Sada je dozvoljeno njegovo izostavljanje, ali ako je prisutno, mora biti "jwt".
- auth: Odgovor "Auth" iz passdb-a i userdb-a može sadržavati vrijednost "event_<name>=value", koja će biti dodana u događaj prijave i događaj korisnika e-pošte prema tome.
- lib-master: Postavlja naslov procesa u različitim fazama inicijalizacije kako bi objasnilo što proces očekuje.
- lib-storage: Mail_temp_scan_interval se sada povećava za 0…30% u zavisnosti od hash-a korisničkog imena, kako bi se smanjila vjerojatnost opterećenja.
- lib-storage: Skeniranje privremene datoteke prebačeno je s otvaranja poštanskog sandučića na trenutak njegovog zatvaranja, kako bi se smanjilo kašnjenje koje korisnici osjećaju.
- stats: Ako su navedena polja u metričkim podacima, tada se sva ta polja izvoze kao brojčanici za prometheus u izloženom formatu.
- "*-login": Procesi su mogli neočekivano završiti pri nespretnoj prekidu SSL veze. — acl: Prilikom učitavanja plugina, oznake \\HasChildren i \\HasNoChildren su se nepravilno izračunavale za poštanske sandučiće koji su sadržavali ‘*’ i ‘%’ u svom imenu.
- auth: Došlo je do pada prilikom neuspješnog povezivanja na PostgreSQL bazu podataka tokom pokretanja.
- auth: Prilikom prijave s pogrešnim lozinkama (npr. s nepoznatom shemom) u passdb-u umjesto "unutrašnje greške" prikazivana je greška "password mismatch".
- auth: Mehanizmi XOAUTH2 i OAUTHBEARER nisu isporučivali specifikaciju greške specifične za protokol prilikom bilo kakvih grešaka. To je posebno otežavalo otkrivanje OIDC.
- dbox: Če naslov last_temp_file_scan ni bil nastavljen (zlasti po dsync-migraciji), je ob naslednjem odpiranju poštnega nabiralnika vedno potekalo skeniranje začasnih datotek. To je lahko povzročilo porast obremenitve po migracijah. Odpravljeno z uporabo atime mape poštnega nabiralnika v odsotnosti naslova, kar običajno premakne čas skeniranja v prihodnost.
- dict-redis: Pri vračanju transakcij je prišlo do napake.
- dsync: Pri brisanju poštnega nabiralnika na oddaljenem koncu, ko se ločila hierarhičnih ravni niso ujemala, je prišlo do neskončne zanke, kar je pripeljalo do izčrpanja pomnilnika.
- dsync: Inkrementalni dsync se ni izvedel za imena map, ki se končujejo z '%', razen če ni bila nastavljena vrednost BROKENCHAR. Prav tako so imena map z '%' na drugih mestih povzročila, da je pri vsakem inkrementalnem dsync prišlo do nepotrebnega preimenovanja mape v začasno ime in nazaj. Regresija v v2.3.19.
- imap-hibernate: Če je pri odklepanju IMAP-stranke prišlo do časovne omejitve z sporočilom „(prejeta različica)“, je kasneje odklepanja lahko uspešno zaključil in nadaljeval normalno delovanje. To je povzročilo zmedo, saj je imap-hibernate že zabeležil, da se je stranka odklopila. To se lahko prepreči z zagotavljanjem, da se povezava konča po časovni omejitvi konca hibernacije.
- imapc: Padanje ob izginotju iz shrambe mape, prikazane preko virtualnega vtičnika.
- imapc: Odgovori EXPUNGE, EXISTS ali FETCH z strežnika za prej izbrani poštni nabiralnik so lahko bili obdelani tako, kot da pripadajo novemu poštnemu nabiralniku, izbranemu v tem trenutku. To je lahko povzročilo pojav opozoril.
- lib-http: HTTP strežnik Dovecot (doveadm, stats/openmetrics) je lahko izklapljal HTTP-stranke pred popolnim pošiljanjem odgovora. To se je dogajalo samo na obremenjenih strežnikih, kjer so bili atomi jedrnega vtičnika močno prenapolnjeni.
- lib-http: Odpravljeno morebitno padanje http-strežnika v primeru zgodnjega izklopa stranke. Regresija v 2.3.18.
- lib-index: Poškodba indeksne datoteke je lahko povzročila nepričakovano prekinitev dela. Odpravljeno: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
- lib-index: Čiščenje obstoječih predpomnilniških datotek, večjih od 1 GB, je lahko povzročilo napako. Zdaj se po čiščenju odstranjujejo predpomnilniške datoteke, katerih velikost še vedno presega 1 GB. Odpravljeno: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): assertion failed: (offset < 0x40000000).
- lib-lua: HTTP odjemalec ni mogel določiti DNS imen v poštnih procesih, ker je pričakoval, da bo soket 'dns-client' v trenutnem imeniku.
- lib-oauth2: Dovecot je pošiljal client_id in client_secret kot POST parametre na strežnik introspekcije. Vendar pa je bilo njihovo uporabo pri Basic auth opcijsko.
- lib-oauth2: Validacija JWT 'aud' ni bila izvedena, če 'aud' ni bil prisoten v žetonu, vendar je bil nastavljen v Dovecot.
- lib-oauth2: Preveč stroga kontrola vrste JWT ključa.
- lib-oauth2: Publika JWT žetona ni bila preverjena glede na client_id, kot zahteva specifikacija.
- lib-ssl-iostream: Uporaba parametra ssl_require_crl=yes je lahko povzročila napake pri preverjanju CRL za odhodne SSL/TLS povezave, čeprav se je predvidevalo, da vpliva na preverjanje CRL samo za odjemalce. SSL-certifikatov. v2.3.17 regresija.
- lib-sql: MySQL gonilnik je omogočal uhajanje pomnilnika pri neuspelem povezovanju.
- lib-storage: Različne napake pri pomanjkanju prostora na disku.
- master: Nastavitev idle_kill storitve ni delovala pravilno na obremenjenih strežnikih. Zelo malo verjetno je bilo, da bi kateri koli proces brezdelno čakal dovolj dolgo, da bi bilo ubito. Poleg tega je pri velikem številu procesov (npr. imap) koda za obdelavo idle_kill uporabljala veliko CPU na glavnem procesu. Zdaj vsak časovni interval idle_kill spremlja najmanjše število brezdelnih procesov in nato ubije to število.
- mdbox: Preverjanje začasnih datotek je bilo izvedeno za vedno prazne imenike.
- mdbox: Pri zapisovanju e-poštnih sporočil je bila klicana fdatasync() v napačnem nadrejenem imeniku. Prav tako je pri napaki prišlo do sesutja namesto zapisovanja napake v dnevnik.
- notify_status: Vtičnik se nenadoma konča pri neuspešnem inicializaciji uporabnika. — pop3: Pošiljanje ukaza s simbolom ':' je povzročilo napako 'assert-crash'. Regresija v izdaji 2.3.18.
- stats: Odpravljena je bila panika, ki se je pojavila pri dostopu do neobstoječega izvoznega dogodka pri dinamičnem dodajanju nove metrike s pomočjo ukaza 'doveadm stats add'. Zdaj se prikaže pravilna napaka.
- stats: Če je proces izvozil veliko dogodkov in nato končal, so se nekateri od zadnjih dogodkov lahko izgubili.
- stats: Napačna imena oznak Prometheus so bila ustvarjena pri določenih konfiguracijah histogram group_by. Prometheus teh oznak ni sprejel.
- welcome: Vtičnik se ni izvajal v določenih situacijah, ko je bil INBOX ustvarjen, vendar ni bil odprt, na primer, če je bil pred odpiranjem INBOX uporabljen GETMETADATA.
Izvor: opennet.ru
