LMDB_TABLE(5) File Formats Manual LMDB_TABLE(5)

lmdb_table - آداپتور LMDB برای Postfix

postmap lmdb:/etc/postfix/filename
postmap -i lmdb:/etc/postfix/filename <inputfile
postmap -d "key" lmdb:/etc/postfix/filename
postmap -d - lmdb:/etc/postfix/filename <inputfile
postmap -q "key" lmdb:/etc/postfix/filename
postmap -q - lmdb:/etc/postfix/filename <inputfile


آداپتور LMDB در Postfix دسترسی به یک ذخیره‌ساز کلید-مقدار پایدار با نگاشت حافظه (memory-mapped) را فراهم می‌کند. اندازه پایگاه‌داده تنها با اندازه فضای آدرس حافظه (معمولاً ۳۱ یا ۴۷ بیت به ترتیب در پردازنده‌های ۳۲ بیتی یا ۶۴ بیتی) و فضای در دسترس سیستم‌فایل محدود می‌شود.

آداپتور LMDB از تمامی عملیات‌های جدول جستجوی Postfix پشتیبانی می‌کند. این ویژگی LMDB را برای بازنویسی آدرس، مسیریابی، سیاست‌های دسترسی، حافظه‌های موقت (کش) یا هر اطلاعاتی که بتوان تحت یک کلید جستجوی ثابت ذخیره کرد در Postfix مناسب می‌سازد.

هنگامی که یک تراکنش به دلیل پر شدن پایگاه‌داده با شکست مواجه شود، Postfix اندازه پایگاه‌داده را افزایش داده و تراکنش را مجدداً تلاش می‌کند.

جستجوهای جدول در Postfix ممکن است کلیدهای جستجوی جزئی تولید کنند؛ مانند نام‌های دامنه بدون یک یا چند زیردامنه، آدرس‌های شبکه بدون یک یا چند اکتت کم‌ارزش‌تر (least-significant)، یا آدرس‌های ایمیل بدون بخش محلی (localpart)، پسوند آدرس یا بخش دامنه. این رفتار در جدول‌های دیگر مانند btree:، hash: یا ldap: نیز دیده می‌شود.

تغییرات در یک پایگاه‌داده LMDB باعث راه‌اندازی مجدد خودکار دیمن نمی‌شود و نیازی به راه‌اندازی مجدد دیمن با دستور postfix reload ندارد.

معماری کپی هنگام نوشتن (copy-on-write) در LMDB به‌روزرسانی‌های امنی را فراهم می‌کند، به بهای استفاده از فضای بیشتر نسبت به برخی دیگر از پایگاه‌های داده فایل مسطح (flat-file). عملیات‌های خواندن برای سرعت بالا با نگاشت حافظه (memory-mapped) انجام می‌شوند. عملیات‌های نوشتن با نگاشت حافظه انجام نمی‌شوند تا از خرابی خاموش داده‌ها ناشی از خطاهای اشاره‌گرهای سرگردان (stray pointer) جلوگیری شود.

چندین فرایند می‌توانند بدون نیاز به سریال‌سازی درخواست‌ها از طریق سرویس proxymap(8)، یک پایگاه‌داده LMDB را با ایمنی به‌روزرسانی کنند. این امر LMDB را به عنوان یک حافظه موقت (کش) مشترک برای سرویس‌های verify(8) یا postscreen(8) بسیار مناسب می‌سازد.

آداپتور LMDB در Postfix از طرح قفل‌گذاری داخلی LMDB استفاده نمی‌کند، زیرا این طرح نیازمند فایل‌های قفل قابل نوشتن برای همگان (world-writable) است و در نتیجه مدل امنیتی Postfix را نقض می‌کند. در عوض، Postfix از قفل‌های fcntl(2) با دانه‌بندی کل فایل (whole-file granularity) استفاده می‌کند. برنامه‌هایی که از پروتکل قفل‌گذاری داخلی LMDB استفاده می‌کنند، به پایگاه‌داده LMDB در Postfix آسیب رسانده یا داده‌های مخدوش می‌خوانند.

هر تراکنش خواندن یا نوشتن پایگاه‌داده LMDB در Postfix باید از ابتدا تا انتها با یک قفل اشتراکی (shared) یا انحصاری (exclusive) fcntl(2) محافظت شود. یک فرایند می‌تواند پیش از باز کردن یک تراکنش خواندن پایگاه‌داده، قفل انحصاری را به صورت اتمیک به یک قفل اشتراکی تنزل دهد (downgrade)، اما باید هنگام باز کردن یک تراکنش نوشتن، قفل انحصاری در اختیار داشته باشد.

توجه داشته باشید که قفل‌های fcntl(2) تراکنش‌های درون همان فرایند را در برابر یکدیگر محافظت نمی‌کنند. اگر برنامه‌ای نتواند از ایجاد درخواست‌های همزمان به پایگاه‌داده جلوگیری کند، باید علاوه بر قفل‌های fcntl(2) به ازای هر فرایند، از تراکنش‌های خود با قفل‌های درون‌فرایندی (in-process) نیز محافظت کند.

برنامه‌های کوتاه‌عمر به‌طور خودکار تغییرات main.cf را دریافت می‌کنند. در برنامه‌های دیمن بلندمدت، پس از تغییر پیکربندی از دستور postfix reload استفاده کنید.

حد اولیه اندازه پایگاه‌داده OpenLDAP LMDB به بایت.

postconf(1), جدول‌های جستجوی پشتیبانی‌شده در Postfix
postmap(1), نگهداری جدول جستجوی Postfix
postconf(5), پارامترهای پیکربندی

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

DATABASE_README, نمای کلی جدول جستجوی Postfix
LMDB_README, راهنمای جامع Postfix OpenLDAP LMDB

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


پشتیبانی از LMDB با نسخه ۲.۱۱ پست‌فیکس (Postfix) معرفی شد.

Howard Chu
Symas Corporation
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
Wietse Venema
Google, Inc.
111 8th Avenue
New York, NY 10011, USA