Нова версия на POP3 и IMAP4 сървъра Dovecot 2.3.21

Публикувана е новата версия на многоплатформения високопроизводителен POP3/IMAP4 сървър Dovecot 2.3.21, който поддържа протоколите POP3 и IMAP4rev1 с популярни разширения като SORT, THREAD и IDLE, както и механизми за автентикация и криптиране (SASL, TLS, SCRAM). Dovecot запазва пълна съвместимост с класическите mbox и Maildir, прилагайки външни индекси за повишаване на производителността. За разширяване на функционалността могат да се използват плъгини (например, чрез плъгини са реализирани квоти и ACL). Кодът на проекта се разпространява под лицензиите LGPL и MIT.

Основни промени:

  • lib-oauth2: Разрешена е проверка на JWT токени без полето „typ“. Полето „typ“ не се използва от някои емитенти на ключове, за да се спести място, в частност kubernetes. Сега отсъствието на „typ“ е допустимо, но ако е налично, то все пак трябва да бъде „jwt“.
  • auth: Отговорът „Auth“ от passdb и userdb може да съдържа стойността „event_=value“, която ще бъде добавена съответно към събитието на входа в системата и събитието на пощенския потребител.
  • lib-master: Установява заглавие на процеса на различни етапи от инициализацията, за да поясни какво очаква процесът.
  • lib-storage: Интервалът mail_temp_scan_interval сега се увеличава с 0…30% в зависимост от хеша на потребителското име, за да се намали вероятността от скокове в натоварването.
  • lib-storage: Сканирането на временното файла е преместено от момента на отваряне на пощенската кутия на момента на нейното затваряне, за да се намали закъснението, което се усеща от потребителите.
  • stats: Ако в метриката са посочени полета, то всички тези полета се експортират като броячи за prometheus в формат exposition.
  • „*-login”: Процесите можеха да се сринат при небрежно прекъсване на SSL връзката. — acl: При зареждане на плъгините флаговете \\HasChildren и \\HasNoChildren некоректно се изчисляваха за пощенски кутии, съдържащи в името си ‘*’ и ‘%’.
  • auth: Възникна срив при неуспешно свързване с базата данни PostgreSQL по време на стартиране.
  • auth: При вход в системата с неправилни пароли (например, с неизвестна схема) в passdb вместо „вътрешна грешка“ се издаваше грешка „диспонеране на паролата“.
  • auth: Механизмите XOAUTH2 и OAUTHBEARER не издаваха съобщение за грешка, специфично за протокола, при каквито и да е грешки. Особено това затрудняваше откритията на OIDC.
  • dbox: Ако заглавието last_temp_file_scan не е било зададено (особено след миграция с dsync), при следващото отваряне на пощенската кутия винаги е започвало сканирането на временни файлове. Това е могло да доведе до пик на натоварването след миграции. Решено чрез използване на atime на директорията на пощенската кутия при липса на заглавие, което обикновено отлага времето за сканиране в бъдещето.
  • dict-redis: При връщане на транзакции е възниквал срив.
  • dsync: При изтриване на пощенската кутия от отдалечената страна, когато разделителите на йерархията не съвпадат, е възниквал безкраен цикъл, който води до изчерпване на паметта.
  • dsync: Инкременталният dsync не се изпълняваше за имена на папки, завършващи на ‘%’, ако стойността на BROKENCHAR не беше зададена. Също така имената на папките с ‘%’ на други места водеха до ненужно преименуване на папката в временно име и обратно при всяко инкрементално dsync. Регресия v2.3.19.
  • imap-hibernate: Ако при отключване на IMAP клиента има таймаут с съобщение „(version received)“, Unlock-ването може успешно да завърши по-късно и да продължи нормалната работа. Това водеше до объркване, тъй като imap-hibernate вече регистрираше, че клиентът е прекъснат. Това може да бъде избегнато, като заставите връзката да приключи по таймаут при завършване на хибернацията.
  • imapc: Срив при изчезване на папка от хранилището, показвана през виртуален плъгин.
  • imapc: Отговори EXPUNGE, EXISTS или FETCH с сървър за преди избраната пощенска кутия можеха да се обработват така, сякаш принадлежат на нова пощенска кутия, която току-що е била избрана. Това можеше да доведе до появата на предупреждения.
  • lib-http: HTTP сървърът Dovecot (doveadm, stats/openmetrics) можеше да прекъсва HTTP клиентите преди завършване на отговора. Това се случваше само на натоварени сървъри, където буферите на сокетите в ядрото бяха значително препълнени.
  • lib-http: Отстранено е възможното падане на http сървъра при ранно прекъсване от страна на клиента. Регресия в 2.3.18.
  • lib-index: Повреда на индексния файл можеше да доведе до аварийно спиране. Устранено: Panic: file mail-transaction-log-view.c: line 165 (mail_transaction_log_view_set): assertion failed: (min_file_seq <= max_file_seq).
  • lib-index: Изчистването на съществуващи кеш файлове с размер над 1 ГБ можеше да доведе до срив. Сега след изчистването кеш файловете, чиито размери все още надвишават 1 ГБ, се премахват. Отстранено: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): assertion failed: (offset < 0x40000000).
  • lib-lua: HTTP клиентът не можа да определи DNS имена в пощенските процеси, тъй като очакваше сокета „dns-client“ да се намира в текущата директория.
  • lib-oauth2: Dovecot изпращаше client_id и client_secret като POST параметри на сървъра за интроспекция. Въпреки това, използването им при Basic auth е опционално.
  • lib-oauth2: Валидацията на JWT 'aud' не се извършваше, ако 'aud' липсваше в токена, но бе настроен в Dovecot.
  • lib-oauth2: Прекалено строгата проверка на типа на JWT ключа.
  • lib-oauth2: Аудиторията на JWT токена не беше проверена за съответствие с client_id, както изисква спецификацията.
  • lib-ssl-iostream: Използването на параметъра ssl_require_crl=yes можеше да доведе до сривове при проверка на CRL за изходящи SSL/TLS връзки, въпреки че се предполагаше, че влияе на проверката на CRL само за клиентите. SSL сертификати. v2.3.17 регресия.
  • lib-sql: MySQL драйверът допускаше изтичане на памет при неуспешна свързаност.
  • lib-storage: Различни корекции при недостатъчно пространство на диска.
  • master: Настройката idle_kill на услугата не работеше правилно на натоварени сървъри. Беше много малко вероятно да има някакъв процес, който да е бездействащ достатъчно дълго, за да бъде убит. Освен това, при голямо количество процеси (например, imap), кодът за обработка на idle_kill използваше достатъчно много CPU на главния процес. Сега всеки интервал от време idle_kill ще следи най-малкото количество бездействащи процеси и след това ще убива това количество.
  • mdbox: Проверката на временните файлове се изпълняваше за винаги празни директории.
  • mdbox: При запис на писма, вызовът fdatasync() се изпълняваше в неправилната родителска директория. Също така, при срив, се получаваше падане вместо запис на грешка в журнала.
  • notify_status: Плъгинът аварийно завършва работа при неуспешна инициализация на потребителя. — pop3: Изпращането на команда със символ ‘:’ водеше до срив „assert-crash“. Регресия във версия 2.3.18.
  • stats: Отстранена паниката, възникнала при опит за достъп до несъществуващ експортьор на събития при динамично добавяне на нова метрика с команда „doveadm stats add“. Сега се издава коректна грешка.
  • статистики: Ако процесът е експортирал много събития и след това е завършил, някои от последните събития могат да са били загубени.
  • статистики: Некоректни имена на етикети Prometheus са създавани при определени конфигурации histogram group_by. Prometheus отхвърляше тези етикети.
  • добре дошли: Плъгинът не е работил в някои ситуации, когато INBOX е бил създаден, но не е бил отворен, например, ако преди отварянето на INBOX е бил използван GETMETADATA.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster