POP3 болон IMAP4 серверийн шинэ хувилбар Dovecot 2.3.21

Олон платформ, өндөр хүчин чадалтай POP3/IMAP4 серверийн Dovecot 2.3.21 шинэ хувилбар гарлаа. Энэ нь SORT, THREAD, IDLE гэх мэт түгээмэл өргөтгөлтэй POP3 болон IMAP4rev1 протоколууд, түүнчлэн баталгаажуулалт, шифрлэлтийн механизмууд (SASL, TLS, SCRAM) дэмждэг. Dovecot нь гүйцэтгэлийг сайжруулахын тулд гадаад индексүүдийг ашиглан сонгодог mbox болон Maildir-тэй бүрэн нийцдэг. Залгаасуудыг функцийг өргөтгөхөд ашиглаж болно (жишээлбэл, квот болон ACL нь залгаасуудаар хэрэгждэг). Төслийн кодыг LGPL болон MIT лицензийн дагуу түгээдэг.

Үндсэн өөрчлөлтүүд:

  • lib-oauth2: "typ" талбар дутуу JWT жетоныг баталгаажуулахыг зөвшөөрөх. Зарим гол гаргагчид орон зай хэмнэхийн тулд "typ" талбарыг орхигдуулдаг, ялангуяа Kubernetes. Одоо "typ"-ийг орхихыг зөвшөөрдөг боловч хэрэв байгаа бол "jwt" хэвээр байх ёстой.
  • auth: passdb болон userdb-ийн "Auth" хариулт нь "event_" утгыг агуулж болно. =утга" нь нэвтрэх үйл явдал болон имэйл хэрэглэгчийн үйл явдалд тус тус нэмэгдэх болно.
  • lib-master: Процесс юу хүлээж байгааг тодруулахын тулд эхлүүлэх янз бүрийн үе шатанд процессын гарчгийг тохируулна.
  • lib-storage: mail_temp_scan_interval интервалыг одоо хэрэглэгчийн нэрийн хэшээс хамаарч 0...30%-иар нэмэгдүүлж, ачаалал нэмэгдэх магадлалыг бууруулдаг.
  • lib-storage: Түр зуурын файлын хайлтыг шуудангийн хайрцгийг нээхээс эхлээд хаах хүртэл шилжүүлж, хэрэглэгчдэд мэдрэгдэх хоцрогдол багассан.
  • статистик: Хэрэв хэмжигдэхүүн нь талбаруудыг зааж өгсөн бол эдгээр бүх талбаруудыг экспозиция форматаар прометейгийн тоолуур болгон экспортлоно.
  • *-нэвтрэх: SSL холболт зөв таслагдаагүй үед процессууд гацаж болзошгүй. - acl: Залгаасыг ачаалах үед нэрэнд нь '*' болон '%' агуулсан шуудангийн хайрцгуудын хувьд \\HasChildren болон \\HasNoChildren тугуудыг буруу тооцоолсон.
  • auth: Эхлүүлэх явцад PostgreSQL DBMS-тэй холболт амжилтгүй болсны улмаас эвдрэл гарсан.
  • auth: Хүчингүй нууц үгээр (жишээ нь үл мэдэгдэх схемээр) нэвтрэх үед passdb нь "дотоод алдаа"-ны оронд "нууц үг таарахгүй" гэсэн алдааг буцаасан.
  • auth: XOAUTH2 болон OAUTHBEARER механизмууд нь аливаа алдааны хувьд протоколд хамаарах алдааны мессежийг буцаагаагүй. Энэ нь OIDC илрүүлэхэд онцгой саад учруулсан.
  • dbox: Хэрэв last_temp_file_scan толгой хэсгийг тохируулаагүй бол (ялангуяа dsync шилжүүлсний дараа) шуудангийн хайрцгийг дараагийн удаа нээхэд түр зуурын файлын хайлт үргэлж идэвхждэг. Энэ нь шилжилт хөдөлгөөний дараа ачаалал нэмэгдэхэд хүргэж болзошгүй. Толгой хэсэг байхгүй үед шуудангийн хайрцгийн лавлах цагийг ашиглан зассан бөгөөд энэ нь скан хийх хугацааг ихэвчлэн ирээдүйд шилжүүлдэг.
  • dict-redis: Гүйлгээг буцаах үед осол гарсан.
  • dsync: Алсын зайнаас шуудангийн хайрцгийг устгах үед шатлалын түвшний тусгаарлагч таарахгүй үед хязгааргүй давталт үүсч, санах ойн доголдол үүсэх болно.
  • dsync: BROKENCHAR-г тохируулаагүй л бол '%'-ээр төгссөн хавтасны нэрсийн нэмэлт синк амжилтгүй болсон. Мөн бусад газруудад байгаа '%' хавтасны нэр нь нэмэлт синк бүрийг шаардлагагүйгээр фолдерын нэрийг түр зуурын нэрээр өөрчлөхөд хүргэсэн. 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 ГБ-аас их хэмжээтэй байгаа кэш файлыг цэвэрлэх нь эвдрэлд хүргэж болзошгүй. 1 ГБ-аас их хэмжээтэй кэш файлуудыг устгасны дараа устгана. Засвар: Сандарчилгааны: файл mail-index-util.c: мөр 10 (mail_index_uint32_to_offset): баталгаажуулалт амжилтгүй болсон: (офсет < 0x40000000).
  • lib-lua: HTTP клиент нь "dns-client" залгуурыг одоогийн лавлахад байх ёстой гэж үзсэн тул шуудангийн процесс дахь DNS нэрийг шийдэж чадсангүй.
  • lib-oauth2: Dovecot нь client_id болон client_secret-г POST параметр болгон дотоод үзлэгийн сервер рүү илгээсэн. Гэсэн хэдий ч, Basic auth-ийн тусламжтайгаар тэдгээрийг ашиглах нь сонголттой байдаг.
  • lib-oauth2: Хэрэв жетон дээр "aud" байхгүй байсан ч Dovecot-д тохируулагдсан бол JWT "aud" баталгаажуулалт амжилтгүй болсон.
  • lib-oauth2: JWT токен төрлийн баталгаажуулалт хэтэрхий хатуу байна.
  • lib-oauth2: Тодорхойлолтын дагуу JWT токен үзэгчдийг client_id-тай харьцуулаагүй.
  • lib-ssl-iostream: ssl_require_crl=yes функцийг ашиглах нь гарах SSL/TLS холболтуудын CRL шалгалтыг амжилтгүй болгож болзошгүй боловч энэ нь зөвхөн клиент талын CRL шалгалтад нөлөөлөх зорилготой байсан. SSL сертификатууд. v2.3.17 регресс.
  • lib-sql: MySQL драйвер нь холболт амжилтгүй болоход санах ой алдагдсан.
  • lib-storage: Төрөл бүрийн дискний зай багатай засварууд.
  • мастер: idle_kill үйлчилгээний тохиргоо завгүй сервер дээр зөв ажиллахгүй байсан. Аливаа үйл явц нь үхэх хангалттай удаан зогсолтгүй байх магадлал маш бага байсан. Цаашилбал, олон тооны процессуудтай (жишээ нь, imap) idle_kill зохицуулах код нь мастер процесс дээр ихээхэн хэмжээний CPU ашиглаж байсан. Одоо, idle_kill интервал бүрт энэ нь хамгийн бага тооны сул зогсолтыг хянаж, дараа нь тэр тоог устгана.
  • mdbox: Үргэлж хоосон санд түр зуурын файлуудыг шалгасан.
  • mdbox: Имэйл бичих үед fdatasync() дуудлагыг буруу эх директорт гүйцэтгэсэн. Мөн хэрэв алдаа гарсан бол алдааг бүртгэхийн оронд гацсан.
  • notify_status: Хэрэглэгчийн тохиргоо амжилтгүй болоход залгаас гацдаг. - pop3: ':' тэмдэгттэй командыг илгээснээр "assert-crash" алдаа гарлаа. Хувилбарын регресс 2.3.18.
  • статистик: "doveadm stats add" командыг ашиглан шинэ хэмжигдэхүүнийг динамикаар нэмэх үед байхгүй үйл явдлын экспортлогч руу хандах үед үүссэн үймээнийг зассан. Одоо зөв алдаа буцаж байна.
  • Статистик: Хэрэв процесс олон үйл явдлыг экспортлож, дараа нь дуусгавар болсон бол хамгийн сүүлийн үеийн зарим үйл явдал алдагдаж болзошгүй.
  • статистик: Прометей шошгоны нэрсийг тодорхой гистограммын бүлэг_бүлэг тохиргоогоор үүсгэсэн. Прометей эдгээр шошгооос татгалзав.
  • тавтай морилно уу: INBOX-г нээхээс өмнө GETMETADATA ашигласан бол INBOX үүсгэсэн боловч нээгдээгүй зарим тохиолдолд залгаасыг ажиллуулж чадсангүй.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх