新版POP3和IMAP4伺服器Dovecot 2.3.21

多平台高效能POP3/IMAP4伺服器Dovecot 2.3.21新版本已經發布,支援POP3和IMAP4rev1協定以及SORT、THREAD和IDLE等流行擴展,以及身份驗證和加密機制(SASL、TLS、緊急停止)。 Dovecot 仍然與經典的 mbox 和 Maildir 完全相容,使用外部索引來提高效能。 插件可用於擴充功能(例如,透過插件實現配額和ACL)。 此專案代碼根據 LGPL 和 MIT 授權分發。

主要變化:

  • lib-oauth2:允許驗證缺少「typ」欄位的 JWT 令牌。 一些關鍵發行者(特別是 kubernetes)不使用“typ”欄位來節省空間。 現在,不存在“typ”是可以接受的,但如果存在,則仍必須是“jwt”。
  • auth:來自 passdb 和 userdb 的“Auth”回應可能包含值“event_” =value”,將分別新增至登入事件和郵件使用者事件。
  • lib-master:在初始化的各個階段設定進程標題,以明確進程正在等待什麼。
  • lib-storage:mail_temp_scan_interval 現在根據使用者名稱雜湊增加 0...30%,以減少負載峰值的可能性。
  • lib-storage:將臨時檔案掃描從郵件信箱開啟的那一刻移到關閉的那一刻,以減少使用者遇到的延遲。
  • stats:如果在指標中指定了字段,那麼所有這些字段都會以博覽會格式匯出為 prometheus 的計數器。
  • “*-login”:如果 SSL 連線無意中終止,進程可能會崩潰。 - acl:載入外掛程式時,對於名稱中包含「*」和「%」的郵箱,錯誤地計算了 \\HasChildren 和 \\HasNoChildren 標誌。
  • auth:啟動期間連線到 PostgreSQL DBMS 失敗時發生當機。
  • auth:使用無效密碼(例如,使用未知方案)登入時,passdb 會拋出錯誤「密碼不符」而不是「內部錯誤」。
  • auth:XOAUTH2 和 OAUTHBEARER 機制不會針對任何錯誤發出特定於協定的錯誤訊息。 這尤其阻礙了 OIDC 的檢測。
  • dbox:如果未設定last_temp_file_scan標頭(特別是在dsync遷移之後),則下次開啟郵件信箱時,將始終啟動暫存檔案掃描。 這可能會導致遷移後出現負載峰值。 修正了在沒有標頭時使用郵箱目錄的問題,這通常會將掃描時間推到未來。
  • dict-redis:事務回滾失敗。
  • dsync:在遠端刪除郵件信箱時,當層次結構分隔符號不符時,發生無限循環,導致記憶體不足事件。
  • dsync:除非設定了 BROKENCHAR,否則不會對以「%」結尾的資料夾名稱執行增量 dsync。 此外,其他位置帶有「%」的資料夾名稱會導致該資料夾不必要地重新命名為臨時名稱,並在每次增量 dsync 時再次重新命名。 回歸 v2.3.19。
  • imap-hibernate:如果 IMAP 用戶端在解鎖時逾時並顯示「(收到版本)」訊息,則解鎖稍後可以成功完成並繼續正常操作。 這很令人困惑,因為 imap-hibernate 已經偵測到客戶端已斷開連線。 您可以強制連線並設定休眠逾時來避免這種情況。
  • imapc:當透過虛擬插件顯示的資料夾從儲存中消失時崩潰。
  • imapc:來自伺服器的針對先前選擇的郵箱的 EXPUNGE、EXISTS 或 FETCH 回應可以被視為屬於目前選擇的新郵箱。 這可能會導致警告。
  • lib-http:Dovecot HTTP 伺服器(doveadm、stats/openmetrics)可能會在回應完全傳送之前斷開 HTTP 用戶端連線。 這種情況只發生在內核套接字緩衝區非常滿的繁忙伺服器上。
  • lib-http:修正了客戶端提前斷開連線時 http 伺服器可能崩潰的問題。 2.3.18 中的迴歸。
  • lib-index:索引檔案損壞可能會導致崩潰。 已解決:恐慌:檔案 mail-transaction-log-view.c:第 165 行 (mail_transaction_log_view_set):斷言失敗:(min_file_seq <= max_file_seq)。
  • lib-index:清除大於 1 GB 的現有快取檔案可能會導致崩潰。 現在,清除後,仍大於 1 GB 的快取檔案將被刪除。 已修正:恐慌:檔案 mail-index-util.c:第 10 行 (mail_index_uint32_to_offset):斷言失敗:(offset < 0x40000000)。
  • lib-lua:HTTP 用戶端無法解析郵件程序中的 DNS 名稱,因為它期望「dns-client」套接字位於目前目錄中。
  • lib-oauth2:Dovecot 將 client_id 和 client_secret 作為 POST 參數傳送到內省伺服器。 但是,對於基本身份驗證,它們的使用是可選的。
  • lib-oauth2:如果「aud」不在令牌中但在 Dovecot 中配置,則不會執行 JWT「aud」的驗證。
  • lib-oauth2:JWT 金鑰類型檢查過於嚴格。
  • lib-oauth2:未依照規範要求根據 client_id 檢查 JWT 令牌受眾。
  • lib-ssl-iostream:使用 ssl_require_crl=yes 選項可能會導致傳出 SSL/TLS 連線的 CRL 檢查失敗,儘管它的目的只是影響客戶端 SSL 憑證的 CRL 檢查。 v2.3.17 回歸。
  • lib-sql:連線失敗時 MySQL 驅動程式洩漏記憶體。
  • lib-storage:針對磁碟空間不足的各種修復。
  • master:設定idle_kill服務在繁忙的伺服器上無法正常運作。 任何進程都不太可能閒置足夠長的時間而被殺死。 另外,對於大量進程(例如imap),idle_kill 處理程式碼在主行程上使用了相當多的CPU。 現在每個idle_kill時間間隔都會監視最小數量的空閒進程,然後殺死該數量。
  • mdbox:檢查暫存檔案是否始終為空目錄。
  • mdbox:寫入電子郵件時,在錯誤的父目錄中執行了 fdatasync() 呼叫。 此外,當它崩潰時,它崩潰了,而不是將錯誤寫入日誌。
  • notification_status:當使用者初始化失敗時外掛程式崩潰。 - pop3:發送帶有“:”的命令導致“斷言崩潰”。 版本 2.3.18 中的回歸。
  • stats:修正了使用「doveadm stats add」指令動態新增指標時存取不存在的事件匯出器時發生的恐慌。 現在給出了正確的錯誤。
  • stats:如果一個程序匯出了許多事件然後退出,則某些最新事件可能已遺失。
  • stats:使用某些直方圖 group_by 配置建立了不正確的 Prometheus 標籤名稱。 普羅米修斯拒絕了這些標籤。
  • 歡迎:在建立收件匣但未開啟收件匣的某些情況下,該插件會失敗,例如,如果在開啟收件匣之前使用了 GETMETADATA。

來源: opennet.ru

添加評論