Megjelent a Dovecot 2.3.21 új verziója, amely egy többplatformos, nagy teljesítményű POP3/IMAP4 szerver, támogatva a POP3 és IMAP4rev1 protokollokat népszerű kiterjesztésekkel, mint például a SORT, THREAD és IDLE, valamint hitelesítési és titkosítási mechanizmusokkal (SASL, TLS, SCRAM). A Dovecot teljes kompatibilitást biztosít a klasszikus mbox és Maildir formátumokkal, külső indexeket alkalmazva a teljesítmény növelésére. A funkcionalitás bővítése érdekében pluginok is használhatók (például a kvóták és ACL-ek pluginok révén valósulnak meg). A projekt kódja LGPL és MIT licencek alatt terjeszthető.
Főbb változások:
- lib-oauth2: Engedélyezve lett a JWT-tokenek ellenőrzése hiányzó 'typ' mezővel. A 'typ' mezőt egyes kulcskibocsátók nem használják a hely megtakarítása miatt, különösen a kubernetes esetében. Mostantól a 'typ' hiánya megengedett, de ha jelen van, akkor 'jwt'-nek kell lennie.
- auth: A passdb és userdb-től érkező 'Auth' válasz tartalmazhat 'event_<name>=value' értéket, amely hozzáadódik a bejelentkezési eseményhez és a postafiók eseményéhez.
- lib-master: A folyamat fejlécét különböző inicializálási szakaszokban állítja be, hogy tisztázza, mit vár el a folyamat.
- lib-storage: A mail_temp_scan_interval most 0…30%-kal növekszik a felhasználónév hash-e alapján, hogy csökkentse a terheléskülönbségek valószínűségét.
- lib-storage: A ideiglenes fájlok szkennelése a postafiók megnyitásának pillanatáról a bezárásának pillanatára került, hogy csökkentse a felhasználók által észlelt késleltetést.
- stats: Ha a metrikában mezők vannak, akkor ezeket a mezőket számlálókként exportálják prometheus számára az exposition formátumban.
- ‘*-login’: A folyamatok összeomolhattak a SSL-kapcsolat ügyetlensége miatt történő megszakadása esetén. — acl: A plugin betöltésekor a \\HasChildren és \\HasNoChildren flag-ek helytelenül számolódtak a '*' és '%' karaktereket tartalmazó postafiókok esetében.
- auth: A PostgreSQL adatbázisra való csatlakozás sikertelensége esetén induláskor hiba lépett fel.
- auth: Hibás jelszavakkal (például ismeretlen séma) való bejelentkezéskor a passdb-ben 'belső hiba' helyett 'jelszó eltérés' hibaüzenet jelent meg.
- auth: Az XOAUTH2 és OAUTHBEARER mechanizmusok nem adtak vissza protokollspecifikus hibaüzenetet semmilyen hiba esetén. Ez különösen zavaró volt az OIDC észlelésekor.
- dbox: Ha a last_temp_file_scan mező nem volt beállítva (különösen dsync-migráció után), akkor a következő alkalommal, amikor a leveleződobozt megnyitották, mindig elindult a ideiglenes fájlok szkennelése. Ez terhelésnövekedést okozhatott a migrációk után. Javítva a leveleződobozt jelző mappa atime-jének használatával, ha a mező hiányzik, ami általában a szkennelés idejét a jövőbe tolja.
- dict-redis: A tranzakciók visszavonásakor hiba történt.
- dsync: Amikor a leveleződobozt törölték a távoli végén, és a hierarchikus szint elválasztói nem egyeztek, végtelen ciklus alakult ki, amely memóriakimerüléshez vezetett.
- dsync: Az inkrementális dsync nem futott le a ‘%’-ra végződő mappanevek esetén, ha a BROKENCHAR értéke nem volt beállítva. Továbbá, ha a mappa nevében máshol szerepelt ‘%’, az szükségtelen mappanév-átnevezést eredményezett az inkrementális dsync során. Regresszió az v2.3.19-ben.
- imap-hibernate: Ha az IMAP-kliens feloldásakor időtúllépés történt a „(version received)” üzenettel, akkor később a feloldás sikeresen befejeződhetett, és a normál működés folytatódott. Ez zavart okozott, mivel az imap-hibernate már rögzítette, hogy a kliens leválasztódott. Ezt elkerülhetjük, ha a kapcsolatot az alvó időtúllépéskor befejezzük.
- imapc: Pád a virtuális pluginon keresztül megjelenített mappa eltűnésekor.
- imapc: Az EXPUNGE, EXISTS vagy FETCH válaszok a korábban kiválasztott leveleződoboztól úgy kerülhettek kezelésre, mintha egy újonnan kiválasztott leveleződobozt érintenének. Ez figyelmeztetésekhez vezethetett. a szerver lib-http: A Dovecot HTTP-szerver (doveadm, stats/openmetrics) a HTTP-kliens lekapcsolásához vezethetett a válasz teljes elküldése előtt. Ez csak zsúfolt szervereken fordult elő, ahol a kernel socket pufferei súlyosan túlzsúfoltak voltak.
- lib-http: Javítva egy lehetséges hiba, amely a http-szerver korai kliensleválásakor lépett fel. Regresszió a 2.3.18-as verzióban.
- lib-index: Az indexfájl sérülése üzemzavart okozhatott. Javítva: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
- lib-index: Az indexfájl sérülése üzemzavart okozhatott. Javítva: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
- lib-index: A meglévő, 1 GB-nál nagyobb méretű gyorsítótár-fájl törlése leállást okozhatott. Mostantól a törlés után azok a gyorsítótár-fájlok, amelyek mérete még mindig meghaladja az 1 GB-ot, törlésre kerülnek. Elhárítva: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): assertion failed: (offset < 0x40000000).
- lib-lua: A HTTP-kliens nem tudta meghatározni a DNS-neveket a levélfolyamatokban, mivel azt várta, hogy a «dns-client» socket a jelenlegi könyvtárban legyen.
- lib-oauth2: A Dovecot a client_id-t és client_secret-et POST-paraméterként küldte az introspekto szerverre. Azonban, Basic auth esetén ezek használata opcionális.
- lib-oauth2: A JWT «aud» validációja nem történt meg, ha az «aud» hiányzott a tokenből, de be volt állítva a Dovecotban.
- lib-oauth2: Túl szigorú JWT kulcs ellenőrzés.
- lib-oauth2: A JWT-token közönsége nem lett ellenőrizve a client_id-nek való megfelelés szempontjából, ahogy azt a specifikáció megköveteli.
- lib-ssl-iostream: Az ssl_require_crl=yes paraméter használata CRL-ellenőrzési hibákhoz vezethetett a kimenő SSL/TLS kapcsolatok esetén, bár azt feltételezték, hogy csak a kliens oldali CRL-ellenőrzésre van hatással. SSL tanúsítványok. v2.3.17 regresszió.
- lib-sql: A MySQL illesztőprogram memória szivárgását engedte meg sikertelen kapcsolat esetén.
- lib-storage: Különböző javítások a lemezen lévő hely hiányára.
- master: Az idle_kill szolgáltatás beállítása nem működött megfelelően a terhelt szervereken. Nagyon valószínűtlen volt, hogy bármilyen folyamat annyira tétlen legyen, hogy megöljék. Ezen kívül, ha sok folyamat volt (például imap), az idle_kill feldolgozó kódja elegendő CPU-t használt a fő folyamatban. Mostantól minden idle_kill időintervallum nyomon követi a leghalványabb tétlen folyamatok számát, majd megöli ezt a számot.
- mdbox: A ideiglenes fájlok ellenőrzése mindig üres könyvtárakra lett végrehajtva.
- mdbox: Az e-mailek írásakor a fdatasync() hívása a helytelen szülő könyvtárban történt. Ezen kívül hibás leállást okozott ahelyett, hogy hibaüzenetet írt volna a naplóba.
- notify_status: A plugin váratlanul leáll a felhasználó kezdeti hibája esetén. — pop3: A ‘:’ karaktert tartalmazó parancs küldése «assert-crash» leállást okozott. Regresszió a 2.3.18 kiadásban.
- stats: A pánik elhárítva, ami akkor jelentkezett, amikor egy nem létező eseményexportálóhoz fordultunk, új metrika dinamikus hozzáadásakor a «doveadm stats add» parancs használatával. Most helyes hibaüzenetet ad vissza.
- statisztika: Ha a folyamat sok eseményt exportált, majd befejeződött, lehet, hogy az utolsó események egy része elveszett.
- statisztika: Helytelen Prometheus címkenevek jöttek létre bizonyos histogram group_by konfigurációk során. A Prometheus elutasította ezeket a címkéket.
- üdvözöljük: A plugin nem futott bizonyos helyzetekben, amikor az INBOX létrejött, de nem nyílt meg, például ha az INBOX megnyitása előtt GETMETADATA-t használtak.
Forrás: opennet.ru
