Nuova versione del server POP3 e IMAP4 Dovecot 2.3.21

È stata pubblicata una nuova versione del server POP3/IMAP4 multipiattaforma ad alte prestazioni Dovecot 2.3.21, che supporta i protocolli POP3 e IMAP4rev1 con estensioni comuni come SORT, THREAD e IDLE, insieme a meccanismi di autenticazione e crittografia (SASL, TLS, SCRAM). Dovecot mantiene la piena compatibilità con i tradizionali mbox e Maildir, utilizzando indici esterni per migliorare le prestazioni. È possibile estendere le funzionalità tramite plugin (ad esempio, le quote e ACL sono implementate tramite plugin). Il codice del progetto è distribuito con licenze LGPL e MIT.

Principali modifiche:

  • lib-oauth2: È consentita la verifica dei token JWT senza il campo 'typ'. Il campo 'typ' non è utilizzato da alcuni emittenti di chiavi per risparmiare spazio, in particolare da Kubernetes. Ora l'assenza di 'typ' è ammessa, ma se presente, deve comunque essere 'jwt'.
  • auth: La risposta 'Auth' da passdb e userdb può contenere il valore 'event_=value', che sarà aggiunto all'evento di accesso e all'evento dell'utente email rispettivamente.
  • lib-master: Imposta l'intestazione del processo in diverse fasi di inizializzazione per chiarire cosa si aspetta il processo.
  • lib-storage: L'intervallo di mail_temp_scan_interval ora aumenta del 0…30% a seconda dell'hash del nome utente, per ridurre la probabilità di picchi di carico.
  • lib-storage: La scansione del file temporaneo è stata spostata dall'apertura della casella postale alla sua chiusura, per ridurre il ritardo percepito dagli utenti.
  • stats: Se la metrica include campi, tutti questi campi vengono esportati come contatori per prometheus nel formato exposition.
  • «*-login»: I processi potrebbero terminare in modo anomalo in caso di chiusura imprecisa della connessione SSL. — acl: Durante il caricamento del plugin, i flag \\HasChildren e \\HasNoChildren non venivano calcolati correttamente per le caselle postali contenenti nel loro nome ‘*’ e ‘%’.
  • auth: Si verificava un errore durante la connessione al database PostgreSQL durante l'avvio.
  • auth: Durante il login con password errate (ad esempio, con uno schema sconosciuto) in passdb veniva restituito l'errore «password mismatch» invece di un errore «internal error».
  • auth: I meccanismi XOAUTH2 e OAUTHBEARER non restituivano un messaggio di errore specifico per il protocollo in caso di errori. Questo ostacolava particolarmente la rilevazione di OIDC.
  • dbox: Se l'intestazione last_temp_file_scan non era stata impostata (in particolare dopo una migrazione dsync), alla successiva apertura della casella di posta veniva sempre avviata la scansione dei file temporanei. Questo poteva causare un picco di carico dopo le migrazioni. Risolto utilizzando l'atime della directory della casella di posta in assenza dell'intestazione, che di solito sposta nel futuro il tempo di scansione.
  • dict-redis: Si è verificato un errore durante il rollback delle transazioni.
  • dsync: Durante l'eliminazione della casella di posta al termine remoto, quando i separatori dei livelli gerarchici non coincidevano, si verificava un ciclo infinito che portava a un esaurimento della memoria.
  • dsync: L'incrementale dsync non veniva eseguito per i nomi delle cartelle che terminano con '%' se il valore BROKENCHAR non era impostato. Inoltre, i nomi delle cartelle con '%' in altre posizioni causavano la rinomina non necessaria della cartella in un nome temporaneo e viceversa ad ogni incremento dsync. Regressione v2.3.19.
  • imap-hibernate: Se durante lo sblocco del client IMAP si verifica un timeout con il messaggio «(version received)», in seguito lo sblocco potrebbe completarsi con successo e continuare a funzionare normalmente. Questo causava confusione, poiché imap-hibernate aveva già registrato che il client si era disconnesso. Per evitare ciò, si può forzare la chiusura della connessione al timeout di fine ibernazione.
  • imapc: Crash quando scompare una cartella memorizzata visualizzata tramite un plugin virtuale.
  • imapc: Risposte EXPUNGE, EXISTS o FETCH da server una cassetta di posta precedentemente selezionata potrebbero essere elaborate come se appartenessero a una nuova cassetta di posta, attualmente selezionata. Questo poteva portare all'apparizione di avvisi.
  • lib-http: Il server HTTP Dovecot (doveadm, stats/openmetrics) poteva disconnettere i client HTTP prima di inviare completamente la risposta. Questo si verificava solo su server molto carichi, dove i buffer dei socket del kernel erano gravemente sovraccarichi.
  • lib-http: Corretto un possibile crash del server http in caso di disconnessione anticipata del client. Regressione in 2.3.18.
  • lib-index: La corruzione del file indice potrebbe aver causato un arresto anomalo del sistema. Risolto: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): asserzione fallita: (min_file_seq <= max_file_seq).
  • lib-index: La pulizia di un file cache esistente di oltre 1 GB potrebbe aver causato un errore. Ora, dopo la pulizia, i file cache che superano ancora 1 GB vengono rimossi. Risolto: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): asserzione fallita: (offset < 0x40000000).
  • lib-lua: Il client HTTP non riusciva a risolvere i nomi DNS nei processi di posta, poiché si aspettava che il socket 'dns-client' fosse nella directory corrente.
  • lib-oauth2: Dovecot inviava client_id e client_secret come parametri POST al server di introspezione. Tuttavia, con l'autenticazione di base, il loro utilizzo è facoltativo.
  • lib-oauth2: La validazione di JWT 'aud' non veniva eseguita se 'aud' era assente nel token, ma era configurato in Dovecot.
  • lib-oauth2: Controllo del tipo di chiave JWT troppo rigoroso.
  • lib-oauth2: L'audience del token JWT non veniva verificata rispetto a client_id, come richiesto dalla specifica.
  • lib-ssl-iostream: L'uso del parametro ssl_require_crl=yes poteva causare errori di verifica CRL per connessioni SSL/TLS in uscita, anche se si presumeva che influenzasse la verifica CRL solo per i client. certificati SSL. v2.3.17 regressione.
  • lib-sql: Il driver MySQL causava perdite di memoria in caso di connessioni non riuscite.
  • lib-storage: Diverse correzioni in caso di spazio su disco insufficiente.
  • master: La configurazione dell'idle_kill non funzionava correttamente sui server sovraccarichi. Era molto poco probabile che un processo rimanesse inattivo abbastanza a lungo da essere terminato. Inoltre, con un elevato numero di processi (ad esempio imap), il codice di gestione dell'idle_kill utilizzava una notevole quantità di CPU sul processo principale. Ora ogni intervallo di tempo dell'idle_kill monitorerà il numero minimo di processi inattivi e quindi terminerà quel numero.
  • mdbox: Il controllo dei file temporanei veniva eseguito per directory sempre vuote.
  • mdbox: Durante la scrittura delle email, la chiamata a fdatasync() veniva eseguita nella directory padre sbagliata. Inoltre, in caso di errore, si verificava un crash invece di registrare l'errore nel log.
  • notify_status: Il plugin si chiude in modo anomalo in caso di inizializzazione utente fallita. — pop3: L'invio di un comando con il carattere ‘:’ portava a un errore di «assert-crash». Regressione nel rilascio 2.3.18.
  • stats: Risolta la panico che si verificava quando si accedeva a un esportatore di eventi non esistente durante l'aggiunta dinamica di una nuova metrica tramite il comando «doveadm stats add». Ora viene restituito un errore corretto.
  • stats: Se il processo esportava molti eventi e poi terminava, alcuni degli ultimi eventi potevano andare persi.
  • stats: Nomi etichetta Prometheus non validi venivano creati in alcune configurazioni di histogram group_by. Prometheus rifiutava queste etichette.
  • welcome: Il plugin non veniva eseguito in alcune situazioni in cui l'INBOX veniva creato, ma non aperto, ad esempio se veniva utilizzato GETMETADATA prima di aprire l'INBOX.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster