PROXYMAP(8) راهنمای Postfix PROXYMAP(8) " t نام (NAME) proxymap - سرور پراکسی جدول‌های جستجوی Postfix خلاصه دستور (SYNOPSIS) proxymap [گزینه‌های عمومی دیمن Postfix] توضیحات (DESCRIPTION) سرور 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) درخواست‌های زیر را پیاده‌سازی می‌کند: open maptype:mapname instance-flags باز کردن جدول با نوع maptype و نام mapname، با پرچم‌های اولیه دیکشنری instance-flags. پاسخ شامل پرچم‌های واقعی دیکشنری است (برای نمونه جهت تمایز میان جدول رشته ثابت و جدول عبارات باقاعده). lookup maptype:mapname instance-flags request-flags key جستجوی داده ذخیره‌شده ذیل کلید درخواستی با استفاده از پرچم‌های دیکشنری در request-flags. پاسخ شامل کد وضعیت تکمیل درخواست، پرچم‌های حاصل، و مقدار نتیجه جستجو است. maptype:mapname و instance-flags مشابه درخواست open هستند. update maptype:mapname instance-flags request-flags key value به‌روزرسانی داده‌های ذخیره‌شده ذیل کلید درخواستی با استفاده از پرچم‌های دیکشنری در request-flags. پاسخ شامل کد وضعیت تکمیل درخواست و پرچم‌های حاصل است. maptype:mapname و instance-flags مشابه درخواست open هستند. جهت پیاده‌سازی نقشه‌های با تک‌به‌روزرسان، محدودیت فرآیند (process limit) را روی 1 در ورودی فایل master.cf برای سرویس proxywrite مشخص نمایید. این درخواست در پُست‌فیکس نسخه 2.5 و بالاتر پشتیبانی می‌شود. delete maptype:mapname instance-flags request-flags key حذف داده‌های ذخیره‌شده ذیل کلید درخواستی، با استفاده از پرچم‌های دیکشنری در request-flags. پاسخ شامل کد وضعیت تکمیل درخواست و پرچم‌های حاصل است. maptype:mapname و instance-flags مشابه درخواست open هستند. این درخواست در پُست‌فیکس نسخه 2.5 و بالاتر پشتیبانی می‌شود. sequence maptype:mapname instance-flags request-flags function پیمایش روی پایگاه‌داده مشخص‌شده با استفاده از پرچم‌های دیکشنری در 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 (جدول برای دسترسی خواندن یا به‌روزرسانی پراکسی تأیید نشده است) می‌باشد. مدیریت فرآیند سرور (SERVER PROCESS MANAGEMENT) سرورهای proxymap(8) تحت کنترل سرور master(8) پُست‌فیکس اجرا می‌شوند. هر سرور می‌تواند چندین اتصال همزمان را مدیریت کند. هنگامی که تمامی سرورها در زمان اتصال کلاینت مشغول باشند، master(8) فرآیند سرور جدیدی از proxymap(8) ایجاد می‌نماید، به شرط آنکه از سقف فرآیندها فراتر نرود. هر سرور پس از سرویس‌دهی به حداقل کلاینت یا پس از ثانیه زمان بیکاری خاتمه می‌یابد. امنیت (SECURITY) سرور proxymap(8) تنها جدول‌هایی را باز می‌کند که از طریق پارامترهای پیکربندی proxy_read_maps یا proxy_write_maps تأیید شده باشند، با کاربران تعامل ندارد، و می‌تواند با سطح دسترسی پایین، در محیط chroot یا خارج از آن اجرا شود. با این حال اجرای سرور proxymap در chroot کارایی آن را به شدت محدود می‌کند، زیرا تنها قادر به باز کردن جدول‌های داخل chroot خواهد بود. سرور proxymap(8) یک فرآیند دیمن مورد اعتماد نیست و نباید برای جستجوی اطلاعات حساس نظیر شناسه‌های کاربری یا گروهی یونیکس، نام فایل‌ها/دایرکتوری‌های صندوق پستی یا دستورات خارجی به کار رود. در نسخه 2.2 پُست‌فیکس و بالاتر، کلاینت proxymap درخواست‌های دسترسی به جدول برای مقاصد حساس امنیتی را شناسایی کرده و جدول را مستقیماً باز می‌کند. فایل‌های داده قابل نوشتن توسط پُست‌فیکس باید در یک دایرکتوری اختصاصی ذخیره شوند که تنها برای سیستم پستی پُست‌فیکس قابل نوشتن باشد، مانند data_directory متعلق به پُست‌فیکس. به‌ویژه، فایل‌های قابل نوشتن توسط پُست‌فیکس هرگز نباید در دایرکتوری‌های متعلق به root قرار گیرند. عیب‌یابی (DIAGNOSTICS) مشکلات و تراکنش‌ها در syslogd(8) یا postlogd(8) ثبت می‌شوند. اشکالات (BUGS) سرور proxymap(8) به چندین کلاینت خدمات ارائه می‌دهد و بنابراین نباید برای جدول‌هایی با تأخیر جستجوی بالا به کار گرفته شود. سرویس خواندنی-نوشتنی proxymap(8) به صراحت جدول‌های جستجو را نمی‌بندد (حتی اگر می‌بست نیز نمی‌شد به آن اتکا کرد، چرا که ممکن است فرآیند میان به‌روزرسانی‌های جدول خاتمه یابد). بنابراین سرویس خواندنی-نوشتنی نباید برای جدول‌هایی به کار رود که ذخیره‌سازی پایدار را میان به‌روزرسانی‌ها در وضعیت ناسازگار رها می‌کنند (برای نمونه CDB). جدول‌هایی که از "همگام‌سازی در زمان به‌روزرسانی (sync on update)" پشتیبانی می‌کنند باید ایمن باشند (مانند Berkeley DB)، همان‌طور که جدول‌های پیاده‌سازی‌شده با یک پایگاه‌داده واقعی (DBMS) ایمن هستند. پارامترهای پیکربندی (CONFIGURATION PARAMETERS) در سیستم‌های پستی شلوغ ممکن است زمان زیادی بگذرد تا تغییرات مربوط به proxymap(8) در main.cf اعمال شوند. برای تسریع این امر از دستور "postfix reload" استفاده کنید. متن زیر تنها خلاصه‌ای از پارامترها را ارائه می‌دهد. برای جزئیات بیشتر شامل مثال‌ها به postconf(5) مراجعه فرمایید. config_directory (خروجی 'postconf -d' را ببینید) مکان پیش‌فرض فایل‌های پیکربندی main.cf و master.cf پُست‌فیکس. data_directory (خروجی 'postconf -d' را ببینید) دایرکتوری فایل‌های داده قابل نوشتن توسط پُست‌فیکس (مانند کش‌ها، اعداد شبه‌تصادفی). daemon_timeout (18000s) حداکثر زمانی که فرآیند دیمن پُست‌فیکس می‌تواند صرف رسیدگی به یک درخواست کند پیش از آنکه توسط تایمر دیده‌بان داخلی خاتمه داده شود. ipc_timeout (3600s) مهلت زمانی برای ارسال یا دریافت اطلاعات روی کانال ارتباطی داخلی. max_idle (100s) حداکثر مدت زمانی که فرآیند دیمن بیکار پُست‌فیکس در انتظار اتصال ورودی می‌ماند پیش از آنکه داوطلبانه خاتمه یابد. max_use (100) حداکثر تعداد اتصالات ورودی که فرآیند دیمن پُست‌فیکس پیش از خروج داوطلبانه سرویس‌دهی می‌کند. process_id (فقط‌خواندنی) شناسه فرآیند (PID) دستور یا دیمن پُست‌فیکس. process_name (فقط‌خواندنی) نام فرآیند دستور یا دیمن پُست‌فیکس. proxy_read_maps (خروجی 'postconf -d' را ببینید) جدول‌های جستجویی که سرور proxymap(8) مجاز به دسترسی به آن‌ها برای سرویس فقط‌خواندنی است. موجود در Postfix 2.5 و بالاتر: proxy_write_maps (خروجی 'postconf -d' را ببینید) جدول‌های جستجویی که سرور proxymap(8) مجاز به دسترسی به آن‌ها برای سرویس خواندنی-نوشتنی است. موجود در Postfix 3.3 و بالاتر: service_name (فقط‌خواندنی) نام سرویس master.cf برای یک فرآیند دیمن Postfix. همچنین ببینید (SEE ALSO) postconf(5), پارامترهای پیکربندی master(5), گزینه‌های عمومی دیمن فایل‌های راهنما (README FILES) برای یافتن این اطلاعات از "postconf readme_directory" یا "postconf html_directory" استفاده کنید. DATABASE_README, مروری بر جدول‌های جستجوی Postfix مجوز (LICENSE) مجوز Secure Mailer باید همراه با این نرم‌افزار توزیع شود. تاریخچه (HISTORY) سرویس proxymap در Postfix نسخه 2.0 معرفی گردید. نویسندگان (AUTHORS) 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 PROXYMAP(8)