نسخه جدیدی از سرور چند پلتفرمی با کارایی بالا 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: اسکن فایل موقت از لحظه باز شدن صندوق پستی تا بسته شدن آن منتقل می شود تا تاخیر تجربه شده توسط کاربران کاهش یابد.
- آمار: اگر فیلدها در متریک مشخص شده باشند، همه این فیلدها به عنوان شمارنده به 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: dsync افزایشی روی نام پوشههایی که به "%" ختم میشوند، انجام نمیشود مگر اینکه BROKENCHAR تنظیم شده باشد. همچنین، نام پوشهها با '%' در مکانهای دیگر باعث میشود که نام پوشه بهطور غیر ضروری به یک نام موقت تغییر یابد و با هر dsync افزایشی دوباره به آن بازگردد. رگرسیون نسخه 2.3.19.
- imap-hibernate: اگر زمان باز کردن قفل یک کلاینت IMAP با پیام "(نسخه دریافت شده)" تمام شود، باز کردن قفل بعداً می تواند با موفقیت کامل شود و به عملکرد عادی ادامه دهد. این گیج کننده بود زیرا imap-hibernate قبلاً تشخیص داده بود که کلاینت قطع شده است. میتوانید با وادار کردن اتصال به پایان با مهلت زمانی خواب زمستانی از این امر جلوگیری کنید.
- imapc: وقتی پوشه ای که از طریق یک افزونه مجازی نمایش داده می شود از حافظه ناپدید می شود خراب می شود.
- imapc: حذف، وجود یا دریافت پاسخها با سرور برای صندوق پستی انتخابشدهی قبلی، پیامها میتوانند طوری پردازش شوند که انگار متعلق به صندوق پستی جدید و انتخابشدهی فعلی هستند. این میتواند منجر به هشدار شود.
- lib-http: سرور HTTP Dovecot (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): ادعا ناموفق بود: (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رگرسیون نسخه ۲.۳.۱۷.
- 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.
- آمار: رفع هراسی که هنگام دسترسی به یک صادرکننده رویداد غیروجود هنگام افزودن پویا یک متریک جدید با استفاده از دستور "doveadm stats add" رخ داد. اکنون خطای صحیح داده شده است.
- آمار: اگر فرآیندی بسیاری از رویدادها را صادر کرده و سپس از آن خارج شود، ممکن است برخی از آخرین رویدادها از بین رفته باشند.
- آمار: نامهای برچسب Prometheus نادرست با پیکربندیهای هیستوگرام group_by خاصی ایجاد شدهاند. پرومتئوس این برچسب ها را رد کرد.
- خوش آمدید: در برخی شرایط که یک INBOX ایجاد شد اما باز نشد، افزونه شکست خورد، به عنوان مثال اگر GETMETADATA قبل از باز کردن INBOX استفاده شده باشد.
منبع: opennet.ru
