NBDB_REINDEXD(8) System Manager's Manual NBDB_REINDEXD(8)

nbdb_reindexd - سرویس مهاجرت Postfix به پایگاه‌داده‌های غیر Berkeley-DB

nbdb_reindexd [generic Postfix daemon options]


نکته: این سرویس باید تنها به صورت موقت فعال شود تا اکثر فایل‌های ایندکس‌شدهٔ غیر Berkeley-DB مورد نیاز Postfix را تولید کند. فعال باقی ماندن این سرویس ممکن است سیستم را در معرض حملات ارتقای سطح دسترسی (privilege escalation) قرار دهد.

سرور nbdb_reindexd(8) درخواست‌های تولید یک فایل پایگاه داده ایندکس‌شدهٔ غیر Berkeley-DB را برای یک پایگاه داده موجود Berkeley DB (مانند "hash:/path/to/file" یا "btree:/path/to/file") مدیریت می‌کند. این سرویس با اجرای دستور postmap(1) یا postalias(1) با مجوزهای مناسب، این فرآیند را پیاده‌سازی می‌نماید.

هنگامی که فایل ایندکس‌شدهٔ غیر Berkeley-DB از قبل وجود داشته باشد، این سرویس وضعیت موفقیت را گزارش می‌دهد. این وضعیت زمانی رخ می‌دهد که چندین کلاینت درخواست یکسانی ارسال کنند. هنگامی که یک درخواست با موفقیت به پایان می‌رسد، سرویس برای سایر درخواست‌ها نیز وضعیت موفقیت اعلام می‌کند.

این سرویس سیاست‌های ایمنی زیر را اعمال می‌کند:

  • فایل ایندکس‌شدهٔ قدیمی Berkeley DB باید وجود داشته باشد (نام فایل با پسوند ".db" خاتمه می‌یابد). سرویس nbdb_reindexd(8) هنگام اجرای postmap(1) یا postalias(1) از شناسه مالک (uid, gid) این فایل استفاده می‌کند. همچنین از این (uid, gid) برای تعدادی از بررسی‌های ایمنی همان‌طور که در ادامه توضیح داده شده، استفاده می‌نماید.
  • فایل منبع ایندکس‌نشده باید وجود داشته باشد (نام فایل بدون پسوند ".db"). این فایل به عنوان ورودی برای postmap(1) یا postalias(1) مورد نیاز است. مالکیت فایل باید متعلق به "root" یا شناسه uid بالا باشد و نباید اجازه دسترسی نوشتن به "group" یا "other" داده شود.
  • دایرکتوری والد باید متعلق به "root" یا شناسه uid بالا باشد و نباید اجازه دسترسی نوشتن به "group" یا "other" بدهد.
  • علاوه بر این، پارامتر "non_bdb_migration_allow_root_prefixes" پیشوندهای مجاز دایرکتوری فایل منبع را هنگامی که این سرویس نیاز به اجرای postmap(1) یا postalias(1) با دسترسی‌های "root" دارد، محدود می‌کند.
  • پارامتر مشابهی به نام "non_bdb_migration_allow_user_prefixes"، پیشوندهای مجاز دایرکتوری فایل منبع را هنگامی که این سرویس نیاز به اجرای postmap(1) یا postalias(1) به عنوان یک کاربر غیرممتاز دارد، محدود می‌سازد.

سرور nbdb_reindexd(8) از نظر امنیتی حساس است. این سرور درخواست‌ها را تنها از فرآیندهایی می‌پذیرد که به سوکت‌های زیر $queue_directory/private دسترسی داشته باشند (یعنی فرآیندهایی که با دسترسی‌های "root" یا "mail_owner" (معمولاً postfix) اجرا می‌شوند).

بنابراین، تهدید متوجه فرآیند دیمن آسیب‌دیده یا دستکاری‌شدهٔ Postfix است که می‌خواهد از طریق ارسال درخواست‌هایی با نام مسیرهای دست‌ساز، و رقابت (race condition) با سرویس از طریق جابجایی سریع فایل‌ها یا دایرکتوری‌ها، سطح دسترسی خود را ارتقا دهد؛ با این امید که Postfix فریب خورده و یک فایل حساس را با داده‌های تحت کنترل مهاجم بازنویسی کند.

هنگامی که این سرویس postmap(1) یا postalias(1) را به عنوان "root" اجرا می‌کند، در صورتی که non_bdb_migration_allow_root_prefixes تنها پیشوندهایی را مشخص کرده باشد که از قبل قابل اعتماد هستند، چنین حملات رقابتی نباید امکان‌پذیر باشند.

اگر اطلاعات کاملی در مورد تمام جداول جستجو (lookup tables) که در فایل‌های پیکربندی Postfix به آن‌ها ارجاع داده شده در دسترس بود، این سرویس می‌توانست تمام درخواست‌های دارای نام مسیرهای دست‌ساز را مسدود کند. متأسفانه در زمانی که به این برنامه نیاز بود، چنین اطلاعاتی در دسترس نبود.


مشکلات و تراکنش‌ها در syslogd(8) یا postlogd(8) ثبت (log) می‌شوند. اگر تلاشی برای ایجاد فایل ایندکس با شکست مواجه شود، این سرویس تلاش خواهد کرد فایل ناقص را حذف کند.

تغییرات اعمال‌شده در main.cf به صورت خودکار شناسایی نمی‌شوند، زیرا فرآیندهای nbdb_reindexd(8) طولانی‌عمر (long-lived) هستند. پس از هرگونه تغییر در پیکربندی، از دستور "postfix reload" استفاده کنید.

متن زیر تنها خلاصه‌ای از پارامترها را ارائه می‌دهد. برای جزئیات بیشتر شامل مثال‌ها، به postconf(5) مراجعه کنید.

سطح سرویس مهاجرت پایگاه‌داده‌های غیر Berkeley-DB.
فهرستی از پیشوندهای نام مسیر قابل اعتماد که هنگام نیاز سرویس مهاجرت غیر Berkeley-DB (nbdb_reindexd(8)) به اجرای دستورات postmap(1) یا postalias(1) با دسترسی "root"، باید با آن‌ها مطابقت داشته باشد.
فهرستی از پیشوندهای نام مسیر قابل اعتماد که هنگام نیاز سرویس مهاجرت غیر Berkeley-DB (nbdb_reindexd(8)) به اجرای دستورات postmap(1) یا postalias(1) با دسترسی‌های غیر root، باید با آن‌ها مطابقت داشته باشد.

مکان پیش‌فرض فایل‌های پیکربندی main.cf و master.cf در Postfix.
شناسه فرآیند (PID) یک دستور یا فرآیند دیمن Postfix.
نام فرآیند یک دستور یا فرآیند دیمن Postfix.
تسهیلات syslog برای ثبت وقایع Postfix.
پیشوندی که به نام فرآیند در رکوردهای syslog اضافه می‌شود؛ به عنوان مثال، "smtpd" به "prefix/smtpd" تبدیل می‌شود.
نام سرویس master.cf برای یک فرآیند دیمن Postfix.

postfix-non-bdb(1), مدیریت مهاجرت
postconf(5), پارامترهای پیکربندی
postlogd(8), ثبت وقایع Postfix
syslogd(8), ثبت وقایع سیستم

برای یافتن این اطلاعات از «postconf readme_directory» یا «postconf html_directory» استفاده کنید.

NON_BERKELEYDB_README, راهنمای مهاجرت غیر Berkeley-DB

مجوز Secure Mailer باید همراه با این نرم‌افزار توزیع شود.



این سرویس با نسخه 3.11 در Postfix معرفی شد.

Wietse Venema
porcupine.org