Nowa wersja serwera POP3 i IMAP4 Dovecot 2.3.21.

Opublikowana została nowa wersja wieloplatformowego, wydajnego serwera POP3/IMAP4 Dovecot 2.3.21, obsługującego protokoły POP3 i IMAP4rev1 z popularnymi rozszerzeniami, takimi jak SORT, THREAD i IDLE, oraz mechanizmami uwierzytelniania i szyfrowania (SASL, TLS, SCRAM). Dovecot zachowuje pełną zgodność z klasycznymi formatami mbox i Maildir, stosując zewnętrzne indeksy w celu zwiększenia wydajności. Funkcjonalność można rozszerzać za pomocą wtyczek (np. za pomocą wtyczek realizowane są kwoty oraz ACL). Kod projektu jest rozpowszechniany na licencjach LGPL i MIT.

Główne zmiany:

  • lib-oauth2: Możliwość weryfikacji tokenów JWT bez pola „typ”. Pole „typ” nie jest używane przez niektórych emitentów kluczy dla oszczędności miejsca, w szczególności przez Kubernetes. Brak pola „typ” jest teraz dozwolony, ale jeśli jest obecne, powinno mieć wartość „jwt”.
  • auth: Odpowiedź „Auth” z passdb i userdb może zawierać wartość „event_=value”, która zostanie dodana do zdarzenia logowania oraz zdarzenia użytkownika poczty.
  • lib-master: Ustala nagłówek procesu na różnych etapach inicjalizacji, aby wyjaśnić, czego oczekuje proces.
  • lib-storage: Czas mail_temp_scan_interval jest teraz zwiększany o 0…30% w zależności od wartości hasha nazwy użytkownika, aby zmniejszyć prawdopodobieństwo skoków obciążenia.
  • lib-storage: Skanowanie pliku tymczasowego przeniesiono z momentu otwarcia skrzynki pocztowej na moment jej zamknięcia, aby zmniejszyć opóźnienie odczuwane przez użytkowników.
  • stats: Jeśli w metryce określono pola, wszystkie te pola są eksportowane jako liczniki dla Prometheus w formacie eksponowania.
  • „*-login”: Procesy mogły awaryjnie kończyć się przy nieostrożnym rozłączaniu połączenia SSL. — acl: Przy ładowaniu wtyczki flagi \\HasChildren i \\HasNoChildren były błędnie obliczane dla skrzynek pocztowych zawierających w swojej nazwie ‘*’ i ‘%’.
  • auth: Występował błąd przy nieudanym połączeniu z bazą danych PostgreSQL podczas uruchamiania.
  • auth: Przy logowaniu z błędnymi hasłami (np. z nieznanym schematem) w passdb zamiast „błąd wewnętrzny” zwracano błąd „niedopasowanie hasła”.
  • auth: Mechanizmy XOAUTH2 i OAUTHBEARER nie zwracały komunikatu o błędzie specyficznego dla protokołu w przypadku jakichkolwiek błędów. Szczególnie utrudniało to wykrywanie OIDC.
  • dbox: Jeśli nagłówek last_temp_file_scan nie został ustawiony (szczególnie po migracji dsync), to przy następnym otwarciu skrzynki pocztowej zawsze uruchamiano skanowanie plików tymczasowych. Mogło to prowadzić do wzrostu obciążenia po migracjach. Naprawiono to używając atime katalogu skrzynki pocztowej przy braku nagłówka, co zazwyczaj przesuwa czas skanowania w przyszłość.
  • dict-redis: W przypadku wycofania transakcji występował błąd.
  • dsync: Podczas usuwania skrzynki pocztowej po stronie zdalnej, gdy separatorzy poziomów hierarchii się nie zgadzali, występowała nieskończona pętla prowadząca do wyczerpania pamięci.
  • dsync: Przyrostowy dsync nie był wykonywany dla nazw folderów kończących się na ‘%’, jeśli nie ustalono wartości BROKENCHAR. Ponadto nazwy folderów z ‘%’ w innych miejscach powodowały, że podczas każdego przyrostowego dsync następowało niepotrzebne zmienianie nazwy folderu na nazwę tymczasową i z powrotem. Regresja v2.3.19.
  • imap-hibernate: Jeśli podczas odblokowywania klienta IMAP występował timeout z komunikatem „(version received)”, to później odblokowanie mogło zakończyć się pomyślnie i kontynuować normalną pracę. Doprowadzało to do nieporozumień, ponieważ imap-hibernate już rejestrował, że klient został rozłączony. Można tego uniknąć, zmuszając połączenie do zakończenia po czasie oczekiwania na zakończenie hybernacji.
  • imapc: Awaria przy zniknięciu folderu z repozytorium, wyświetlanego przez wirtualny plugin.
  • imapc: Odpowiedzi EXPUNGE, EXISTS lub FETCH z serwera wcześniej wybranego folderu pocztowego mogły być przetwarzane tak, jakby należały do nowego folderu pocztowego, wybranego w danym momencie. Mogło to prowadzić do pojawienia się ostrzeżeń.
  • lib-http: Serwer HTTP Dovecot (doveadm, stats/openmetrics) mógł odłączać klientów HTTP przed całkowitym wysłaniem odpowiedzi. Działo się to tylko na obciążonych serwerach, gdzie bufory socketów jądra były mocno przepełnione.
  • lib-http: Naprawiono możliwą awarię serwera http w przypadku wczesnego odłączenia klienta. Regresja w 2.3.18.
  • lib-index: Uszkodzenie pliku indeksu mogło powodować awarię. Naprawiono: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
  • lib-index: Usunięcie istniejącego pliku cache o rozmiarze większym niż 1 GB mogło prowadzić do awarii. Teraz po usunięciu plików cache, które nadal przekraczają 1 GB, są one usuwane. Usunięto: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): assertion failed: (offset < 0x40000000).
  • lib-lua: Klient HTTP nie mógł ustalić nazw DNS w procesach mailowych, ponieważ oczekiwał, że gniazdo 'dns-client' będzie znajdować się w bieżącym katalogu.
  • lib-oauth2: Dovecot przesyłał client_id i client_secret jako parametry POST na serwer introspekcji. Jednak w przypadku Basic auth ich użycie było opcjonalne.
  • lib-oauth2: Walidacja JWT 'aud' nie była przeprowadzana, jeśli 'aud' nie istniał w tokenie, ale był ustawiony w Dovecot.
  • lib-oauth2: Zbyt ścisła kontrola typu klucza JWT.
  • lib-oauth2: Odbiorca tokena JWT nie był sprawdzany pod kątem zgodności z client_id, jak wymaga specyfikacja.
  • lib-ssl-iostream: Użycie parametru ssl_require_crl=yes mogło prowadzić do błędów weryfikacji CRL dla wychodzących połączeń SSL/TLS, chociaż zakładano, że wpływa on tylko na weryfikację CRL dla klientów. certyfikatów SSL. v2.3.17 regresja.
  • lib-sql: Sterownik MySQL pozwalał na wyciek pamięci podczas nieudanej próby połączenia.
  • lib-storage: Różne poprawki w przypadku braku miejsca na dysku.
  • master: Konfiguracja idle_kill usługi nie działała prawidłowo na obciążonych serwerach. Było niezwykle mało prawdopodobne, aby jakikolwiek proces był bezczynny na tyle długo, aby zostać zabitym. Ponadto, przy dużej liczbie procesów (np. imap) kod obsługi idle_kill zużywał znaczne ilości CPU w głównym procesie. Teraz każdy interwał czasu dla idle_kill będzie monitorować najmniejszą liczbę procesów w bezczynności, a następnie zabijać tę liczbę.
  • mdbox: Sprawdzanie plików tymczasowych było wykonywane dla zawsze pustych katalogów.
  • mdbox: Podczas zapisu wiadomości wywołanie fdatasync() było wykonywane w niewłaściwym katalogu nadrzędnym. Ponadto, w przypadku awarii program ulegał zawieszeniu zamiast zapisać błąd do dziennika.
  • notify_status: Wtyczka kończyła działanie awaryjnie podczas nieudanej inicjalizacji użytkownika. — pop3: Wysyłanie polecenia z symbolem ':' powodowało awarię 'assert-crash'. Regresja w wersji 2.3.18.
  • stats: Usunięto panikę, która występowała podczas próby uzyskania dostępu do nieistniejącego eksportera zdarzeń podczas dynamicznego dodawania nowej metryki przy użyciu polecenia 'doveadm stats add'. Teraz zwracany jest poprawny błąd.
  • statystyki: Jeśli proces wyeksportował wiele zdarzeń i następnie zakończył działanie, część z ostatnich zdarzeń mogła zostać utracona.
  • statystyki: Nieprawidłowe nazwy etykiet Prometheus były tworzone przy określonych konfiguracjach histogramu group_by. Prometheus odrzucał te etykiety.
  • powitanie: Wtyczka nie działała w pewnych sytuacjach, gdy tworzono INBOX, lecz nie był on otwierany, na przykład, gdy przed otwarciem INBOX użyto GETMETADATA.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster