Нова версия на 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 вместо «вътрешна грешка» се показваше грешка «password mismatch».
  • 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)“, отключването впоследствие можеше да приключи успешно и да продължи нормалната работа. Това водеше до объркване, тъй като 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 параметри на сървъра за интроспекция. Въпреки това, при основна автентикация, тяхното използване е опционално.
  • 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'. Сега се издава коректна грешка.
  • stats: Ако процесът е експортирал много събития и след това е завършил, някои от последните събития може да са били изгубени.
  • stats: Неправилните имена на етикетите на Prometheus се създаваха при определени конфигурации на histogram group_by. Prometheus отхвърляше тези етикети.
  • welcome: Плъгинът не се изпълняваше в някои ситуации, когато INBOX се създаваше, но не се отваряше, например, ако преди отваряне на INBOX е използван GETMETADATA.

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

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