Noua versiune a serverului Dovecot POP3 și IMAP4 2.3.21

A fost lansată o nouă versiune a serverului POP3/IMAP4 multi-platformă de înaltă performanță Dovecot 2.3.21, care suportă protocoale POP3 și IMAP4rev1 cu extensii populare, cum ar fi SORT, THREAD și IDLE, și mecanisme de autentificare și criptare (SASL, TLS, SCRAM). Dovecot asigură compatibilitate completă cu mbox și Maildir clasice, utilizând indecși externi pentru a îmbunătăți performanța. Funcționalitatea poate fi extinsă prin plugin-uri (de exemplu, prin plugin-uri sunt implementate cotele și ACL). Codul proiectului este distribuit sub licențele LGPL și MIT.

Modificări principale:

  • lib-oauth2: Verificarea token-urilor JWT fără câmpul „typ” este permisă. Câmpul „typ” nu este folosit de anumiți emițători de chei pentru a economisi spațiu, în special, Kubernetes. Acum absența „typ” este acceptată, dar dacă este prezent, trebuie să fie „jwt”.
  • auth: Răspunsul „Auth” de la passdb și userdb poate conține valoarea „event_=value”, care va fi adăugată la evenimentul de conectare și la evenimentul utilizatorului de e-mail, respectiv.
  • lib-master: Setează antetul procesului în diferite etape ale inițializării pentru a clarifica așteptările procesului.
  • lib-storage: Intervalul mail_temp_scan_interval este acum crescut cu 0…30% în funcție de hash-ul numelui utilizatorului, pentru a reduce probabilitatea de vârfuri de încărcare.
  • lib-storage: Scanarea fișierului temporar a fost mutată din momentul deschiderii cutiei poștale în momentul închiderii acesteia, pentru a reduce întârzierile resimțite de utilizatori.
  • stats: Dacă în metrică sunt specificate câmpuri, toate aceste câmpuri sunt exportate ca contoare pentru Prometheus în format exposition.
  • „*-login”: Procesele puteau să se închidă accidental în cazul în care conexiunea SSL era ruptă necorespunzător. — acl: La încărcarea plugin-ului, flag-urile \HasChildren și \HasNoChildren erau calculate incorect pentru cutiile poștale care conțineau în numele lor ‘*’ și ‘%’.
  • auth: A avut loc o eroare la conectarea la baza de date PostgreSQL în timpul inițierii.
  • auth: La conectarea cu parole incorecte (de exemplu, cu un schema necunoscută) în passdb se returna o eroare „password mismatch” în loc de „eroare internă”.
  • auth: Mecanismele XOAUTH2 și OAUTHBEARER nu emiteau un mesaj de eroare specific protocolului în caz de erori. Acest lucru a îngreunat în special detectarea OIDC.
  • dbox: Dacă antetul last_temp_file_scan nu a fost setat (în special după migrarea dsync), atunci la următoarea deschidere a căsuței poștale, scanarea fișierelor temporare era întotdeauna declanșată. Acest lucru putea provoca un vârf de încărcare după migrații. Problema a fost rezolvată prin utilizarea atime-ului directorului căsuței poștale în absența antetului, ceea ce de obicei întârzie timpul de scanare în viitor.
  • dict-redis: A avut loc o eroare la revenirea tranzacțiilor.
  • dsync: La ștergerea căsuței poștale de la distanță, atunci când separatorii nivelurilor ierarhice nu coincideau, a apărut un ciclu infinit care ducea la ieșirea din memorie.
  • dsync: Dsync-ul incremental nu s-a efectuat pentru numele folderelor care se încheiau în ‘%’, dacă valoarea BROKENCHAR nu era setată. De asemenea, numele folderelor cu ‘%’ în alte locuri duceau la necesitatea unor redenumiri inutile ale folderului într-un nume temporar și înapoi la fiecare dsync incremental. Regresie v2.3.19.
  • imap-hibernate: Dacă la deblocarea clientului IMAP a apărut un timeout cu mesajul „(version received)”, atunci mai târziu deblocarea putea finaliza cu succes și continua funcționarea normală. Acest lucru ducea la confuzie, deoarece imap-hibernate deja înregistrase că clientul s-a deconectat. Acest lucru poate fi evitat forțând conectarea să se încheie printr-un timeout la finalizarea hibernării.
  • imapc: Crash la dispariția din depozit a unui folder, afișat printr-un plugin virtual.
  • imapc: Răspunsurile EXPUNGE, EXISTS sau FETCH cu server pentru căsuța poștală selectată anterior puteau fi procesate ca și cum ar aparține unei noi căsuțe poștale, selectate în prezent. Acest lucru putea duce la apariția unor avertizări.
  • lib-http: Serverul HTTP Dovecot (doveadm, stats/openmetrics) putea deconecta clienții HTTP înainte de a trimite complet răspunsul. Acest lucru se întâmpla doar pe servere foarte solicitate, unde buffer-urile socket-urilor nucleului erau extrem de supraîncărcate.
  • lib-http: A fost corectată o posibilă cădere a serverului http în cazul unei deconectări premature a clientului. Regresie în 2.3.18.
  • lib-index: Coruperea fișierului index putea duce la o închidere bruscă a aplicației. Rezolvat: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): aserțiunea a eșuat: (min_file_seq <= max_file_seq).
  • lib-index: Curățarea fișierului de cache existent mai mare de 1 GB a putut provoca o eroare. Acum, după curățare, fișierele de cache al căror dimensiune depășește 1 GB sunt șterse. Rezolvat: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): afirmație eșuată: (offset < 0x40000000).
  • lib-lua: Clientul HTTP nu a putut determina numele DNS în procesele de poștă, deoarece se aștepta ca socket-ul „dns-client” să fie în directorul curent.
  • lib-oauth2: Dovecot trimitea client_id și client_secret ca parametrii POST pe serverul de introspecție. Totuși, în cazul autentificării de bază, utilizarea acestora este opțională.
  • lib-oauth2: Validarea JWT „aud” nu a fost efectuată dacă „aud” lipsea din token, dar era setat în Dovecot.
  • lib-oauth2: Verificare prea strictă a tipului de cheie JWT.
  • lib-oauth2: Audiența tokenului JWT nu a fost verificată în conformitate cu client_id, așa cum cere specificația.
  • lib-ssl-iostream: Utilizarea parametrului ssl_require_crl=yes putea provoca erori la verificarea CRL pentru conexiuni SSL/TLS de ieșire, deși se presupunea că acesta influențează verificarea CRL doar pentru clienți. certificatelor SSL. v2.3.17 regresie.
  • lib-sql: Driverul MySQL permitea scurgeri de memorie în cazul unui eșec la conectare.
  • lib-storage: Diverse corecții în cazul lipsei de spațiu pe disc.
  • master: Configurarea idle_kill a serviciului nu funcționa corect pe serverele aglomerate. Era foarte puțin probabil ca vreun proces să fie inactiv suficient de mult timp pentru a fi ucis. În plus, la un număr mare de procese (de exemplu, imap), codul de gestionare idle_kill folosea destul de mult CPU în procesul principal. Acum, fiecare interval de timp idle_kill va urmări numărul minim de procese inactive și apoi va omorî acel număr.
  • mdbox: Verificarea fișierelor temporare se efectua pentru directoare întotdeauna goale.
  • mdbox: La scrierea mesajelor, apelul fdatasync() era efectuat în directorul părinte greșit. De asemenea, în caz de eșec, se producea o cădere în loc de a scrie o eroare în jurnal.
  • notify_status: Pluginul se închide brusc în cazul inițializării eșuate a utilizatorului. — pop3: Trimiterea comenzii cu simbolul „:” provoca o eroare „assert-crash”. Regresie în versiunea 2.3.18.
  • stats: A fost eliminată panica apărută la accesarea unui exportator de evenimente inexistent în timpul adăugării dinamice a unei noi metrici prin comanda „doveadm stats add”. Acum se emite o eroare corectă.
  • stats: Dacă procesul a exportat multe evenimente și apoi s-a încheiat, unele dintre ultimele evenimente ar fi putut fi pierdute.
  • stats: Nume incorecte pentru etichetele Prometheus erau create în anumite configurații de group_by pentru histogram. Prometheus respingea aceste etichete.
  • welcome: Plugin-ul nu a fost executat în anumite situații când INBOX a fost creat, dar nu a fost deschis, de exemplu, dacă s-a folosit GETMETADATA înainte de a deschide INBOX.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster