PROXYMAP(8) راهنمای Postfix PROXYMAP(8)
" t

proxymap - سرور پراکسی جدول‌های جستجوی Postfix

proxymap [گزینه‌های عمومی دیمن Postfix]


سرور proxymap(8) خدمات جستجوی جدول فقط‌خواندنی یا خواندنی-نوشتنی را به فرآیندهای Postfix ارائه می‌دهد. این خدمات به ترتیب با نام‌های سرویس مجزای proxymap و proxywrite پیاده‌سازی شده‌اند. هدف از این خدمات عبارت است از:

  • غلبه بر محدودیت‌های chroot. برای نمونه، یک سرور SMTP در محیط chroot برای رد نامه‌های مربوط به نشانی‌های محلی ناموجود نیازمند دسترسی به فایل passwd سیستم است، اما نگهداری نسخه‌ای از فایل passwd در زندان chroot کاربردی و عملی نیست. راهکار:
    local_recipient_maps =
        proxy:unix:passwd.byname 
  • تجمیع تعداد جدول‌های جستجوی باز از طریق اشتراک‌گذاری یک جدول باز میان چندین فرآیند. برای نمونه، برقراری اتصالات mysql از سوی تک‌تک فرآیندهای دیمن Postfix منجر به خطای "too many connections" می‌شود. راهکار:
    virtual_alias_maps =
        proxy:mysql:/etc/postfix/virtual_alias.cf

    تعداد کل اتصالات با تعداد فرآیندهای سرور proxymap محدود می‌شود.

  • ارائه قابلیت به‌روزرسانی منفرد (single-updater) برای جدول‌های جستجویی که به‌طور قابل اتکا از چندین نویسنده همزمان پشتیبانی نمی‌کنند (یعنی تمام جدول‌های مبتنی بر فایل که بر پایه lmdb نیستند).

سرور proxymap(8) درخواست‌های زیر را پیاده‌سازی می‌کند:

باز کردن جدول با نوع maptype و نام mapname، با پرچم‌های اولیه دیکشنری instance-flags. پاسخ شامل پرچم‌های واقعی دیکشنری است (برای نمونه جهت تمایز میان جدول رشته ثابت و جدول عبارات باقاعده).
جستجوی داده ذخیره‌شده ذیل کلید درخواستی با استفاده از پرچم‌های دیکشنری در request-flags. پاسخ شامل کد وضعیت تکمیل درخواست، پرچم‌های حاصل، و مقدار نتیجه جستجو است. maptype:mapname و instance-flags مشابه درخواست open هستند.
به‌روزرسانی داده‌های ذخیره‌شده ذیل کلید درخواستی با استفاده از پرچم‌های دیکشنری در request-flags. پاسخ شامل کد وضعیت تکمیل درخواست و پرچم‌های حاصل است. maptype:mapname و instance-flags مشابه درخواست open هستند.

جهت پیاده‌سازی نقشه‌های با تک‌به‌روزرسان، محدودیت فرآیند (process limit) را روی 1 در ورودی فایل master.cf برای سرویس proxywrite مشخص نمایید.

این درخواست در پُست‌فیکس نسخه 2.5 و بالاتر پشتیبانی می‌شود.

حذف داده‌های ذخیره‌شده ذیل کلید درخواستی، با استفاده از پرچم‌های دیکشنری در request-flags. پاسخ شامل کد وضعیت تکمیل درخواست و پرچم‌های حاصل است. maptype:mapname و instance-flags مشابه درخواست open هستند.

این درخواست در پُست‌فیکس نسخه 2.5 و بالاتر پشتیبانی می‌شود.

پیمایش روی پایگاه‌داده مشخص‌شده با استفاده از پرچم‌های دیکشنری در request-flags. آرگومان function برابر DICT_SEQ_FUN_FIRST یا DICT_SEQ_FUN_NEXT است. پاسخ شامل کد وضعیت تکمیل درخواست، پرچم‌های حاصل، و کلید جستجو و مقدار نتیجه در صورت یافت شدن است. maptype:mapname و instance-flags مشابه درخواست open هستند.

این درخواست در پُست‌فیکس نسخه 2.9 و بالاتر پشتیبانی می‌شود.

پیاده‌سازی‌نشده: close
هیچ درخواست close وجود ندارد و هنگام قطع ارتباط کلاینت نیز جدول‌ها به‌طور ضمنی بسته نمی‌شوند. هدف اشتراک‌گذاری جدول‌ها میان چندین فرآیند کلاینت است. به دلیل عدم وجود بستن صریح یا ضمنی، به‌روزرسانی‌ها به اجبار همگام (synchronous) هستند.

وضعیت تکمیل درخواست یکی از موارد OK، RETRY، NOKEY (جستجو ناموفق بود چون کلید یافت نشد)، BAD (درخواست ناقص) یا DENY (جدول برای دسترسی خواندن یا به‌روزرسانی پراکسی تأیید نشده است) می‌باشد.

سرورهای proxymap(8) تحت کنترل سرور master(8) پُست‌فیکس اجرا می‌شوند. هر سرور می‌تواند چندین اتصال همزمان را مدیریت کند. هنگامی که تمامی سرورها در زمان اتصال کلاینت مشغول باشند، master(8) فرآیند سرور جدیدی از proxymap(8) ایجاد می‌نماید، به شرط آنکه از سقف فرآیندها فراتر نرود. هر سرور پس از سرویس‌دهی به حداقل کلاینت یا پس از ثانیه زمان بیکاری خاتمه می‌یابد.

سرور proxymap(8) تنها جدول‌هایی را باز می‌کند که از طریق پارامترهای پیکربندی proxy_read_maps یا proxy_write_maps تأیید شده باشند، با کاربران تعامل ندارد، و می‌تواند با سطح دسترسی پایین، در محیط chroot یا خارج از آن اجرا شود. با این حال اجرای سرور proxymap در chroot کارایی آن را به شدت محدود می‌کند، زیرا تنها قادر به باز کردن جدول‌های داخل chroot خواهد بود.

سرور proxymap(8) یک فرآیند دیمن مورد اعتماد نیست و نباید برای جستجوی اطلاعات حساس نظیر شناسه‌های کاربری یا گروهی یونیکس، نام فایل‌ها/دایرکتوری‌های صندوق پستی یا دستورات خارجی به کار رود.

در نسخه 2.2 پُست‌فیکس و بالاتر، کلاینت proxymap درخواست‌های دسترسی به جدول برای مقاصد حساس امنیتی را شناسایی کرده و جدول را مستقیماً باز می‌کند.

فایل‌های داده قابل نوشتن توسط پُست‌فیکس باید در یک دایرکتوری اختصاصی ذخیره شوند که تنها برای سیستم پستی پُست‌فیکس قابل نوشتن باشد، مانند data_directory متعلق به پُست‌فیکس.

به‌ویژه، فایل‌های قابل نوشتن توسط پُست‌فیکس هرگز نباید در دایرکتوری‌های متعلق به root قرار گیرند.


مشکلات و تراکنش‌ها در syslogd(8) یا postlogd(8) ثبت می‌شوند.


سرور proxymap(8) به چندین کلاینت خدمات ارائه می‌دهد و بنابراین نباید برای جدول‌هایی با تأخیر جستجوی بالا به کار گرفته شود.

سرویس خواندنی-نوشتنی proxymap(8) به صراحت جدول‌های جستجو را نمی‌بندد (حتی اگر می‌بست نیز نمی‌شد به آن اتکا کرد، چرا که ممکن است فرآیند میان به‌روزرسانی‌های جدول خاتمه یابد). بنابراین سرویس خواندنی-نوشتنی نباید برای جدول‌هایی به کار رود که ذخیره‌سازی پایدار را میان به‌روزرسانی‌ها در وضعیت ناسازگار رها می‌کنند (برای نمونه CDB). جدول‌هایی که از "همگام‌سازی در زمان به‌روزرسانی (sync on update)" پشتیبانی می‌کنند باید ایمن باشند (مانند Berkeley DB)، همان‌طور که جدول‌های پیاده‌سازی‌شده با یک پایگاه‌داده واقعی (DBMS) ایمن هستند.

در سیستم‌های پستی شلوغ ممکن است زمان زیادی بگذرد تا تغییرات مربوط به proxymap(8) در main.cf اعمال شوند. برای تسریع این امر از دستور "postfix reload" استفاده کنید.

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

مکان پیش‌فرض فایل‌های پیکربندی main.cf و master.cf پُست‌فیکس.
دایرکتوری فایل‌های داده قابل نوشتن توسط پُست‌فیکس (مانند کش‌ها، اعداد شبه‌تصادفی).
حداکثر زمانی که فرآیند دیمن پُست‌فیکس می‌تواند صرف رسیدگی به یک درخواست کند پیش از آنکه توسط تایمر دیده‌بان داخلی خاتمه داده شود.
مهلت زمانی برای ارسال یا دریافت اطلاعات روی کانال ارتباطی داخلی.
حداکثر مدت زمانی که فرآیند دیمن بیکار پُست‌فیکس در انتظار اتصال ورودی می‌ماند پیش از آنکه داوطلبانه خاتمه یابد.
حداکثر تعداد اتصالات ورودی که فرآیند دیمن پُست‌فیکس پیش از خروج داوطلبانه سرویس‌دهی می‌کند.
شناسه فرآیند (PID) دستور یا دیمن پُست‌فیکس.
نام فرآیند دستور یا دیمن پُست‌فیکس.
جدول‌های جستجویی که سرور proxymap(8) مجاز به دسترسی به آن‌ها برای سرویس فقط‌خواندنی است.

موجود در Postfix 2.5 و بالاتر:

جدول‌های جستجویی که سرور proxymap(8) مجاز به دسترسی به آن‌ها برای سرویس خواندنی-نوشتنی است.

موجود در Postfix 3.3 و بالاتر:

نام سرویس master.cf برای یک فرآیند دیمن Postfix.

postconf(5), پارامترهای پیکربندی
master(5), گزینه‌های عمومی دیمن

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

DATABASE_README, مروری بر جدول‌های جستجوی Postfix

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


سرویس proxymap در Postfix نسخه 2.0 معرفی گردید.

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
Wietse Venema
porcupine.org