| QMGR(8) | System Manager's Manual | QMGR(8) |
نام (NAME)
qmgr - مدیر صف Postfix
خلاصه دستور (SYNOPSIS)
qmgr [گزینههای عمومی دیمن Postfix]
توضیحات (DESCRIPTION)
دیمن qmgr(8) در انتظار ورود نامههای دریافتی میماند و ترتیب تحویل آنها را از طریق فرایندهای تحویل Postfix فراهم میکند. راهبرد واقعی مسیریابی نامه به دیمن trivial-rewrite(8) واگذار شده است. انتظار میرود این برنامه از طریق مدیر فرایند master(8) اجرا شود.
نامههای ارسالشده به نشانی محلی double-bounce لاگ شده و دور ریخته میشوند. این کار مانع از ایجاد حلقههای احتمالی ناشی از اعلانهای جهش (bounce notifications) غیرقابل تحویل میشود.
صفهای پستی (MAIL QUEUES)
دیمن qmgr(8) صفهای زیر را نگهداری میکند:
- incoming
- نامههای ورودی از شبکه، یا نامههایی که توسط دیمن محلی pickup(8) از دایرکتوری maildrop برداشته شدهاند.
- active
- پیامهایی که مدیر صف برای تحویل باز کرده است. فقط تعداد محدودی پیام اجازه ورود به صف active را دارند (راهبرد سطل سوراخدار [leaky bucket]، برای نرخ تحویل ثابت).
- deferred
- نامههایی که در نخستین تلاش تحویل داده نشدهاند. مدیر صف با دو برابر کردن زمان بین تلاشهای تحویل، عقبنشینی نمایی (exponential backoff) را پیادهسازی میکند.
- corrupt
- فایلهای صف ناخوانا یا آسیبدیده برای بررسی به اینجا منتقل میشوند.
- hold
- پیامهایی که در حالت «در انتظار» (on hold) هستند تا زمانی که فردی آنها را آزاد کند، در اینجا نگهداری میشوند.
گزارشهای وضعیت تحویل (DELIVERY STATUS REPORTS)
دیمن qmgr(8) گزارشهای وضعیت تحویل به ازای هر پیام را در دایرکتوریهای زیر زیر نظر دارد. هر فایل گزارش وضعیت، نامی مشابه فایل پیام متناظر خود دارد:
- bounce
- اطلاعات وضعیت به ازای هر گیرنده درباره چرایی برگشت خوردن (bounce) نامه. این فایلها توسط دیمن bounce(8) نگهداری میشوند.
- defer
- اطلاعات وضعیت به ازای هر گیرنده درباره چرایی به تعویق افتادن یا تأخیر تحویل نامه. این فایلها توسط دیمن defer(8) نگهداری میشوند.
- trace
- اطلاعات وضعیت به ازای هر گیرنده همانطور که با دستور «sendmail -v» یا «sendmail -bv» در Postfix درخواست شده است. این فایلها توسط دیمن trace(8) نگهداری میشوند.
دیمن qmgr(8) مسئول درخواست از دیمنهای bounce(8)، defer(8) یا trace(8) برای ارسال گزارشهای تحویل است.
راهبردها (STRATEGIES)
مدیر صف راهبردهای گوناگونی را برای باز کردن فایلهای صف (ورودی) یا برای تحویل پیام (خروجی) پیادهسازی میکند.
- leaky bucket
- این راهبرد تعداد پیامها در صف active را محدود میکند و مانع از اتمام حافظه مدیر صف تحت بار سنگین میشود.
- fairness
- هنگامی که صف active جا داشته باشد، مدیر صف یک پیام از صف incoming و یکی از صف deferred برمیدارد. این کار مانع از آن میشود که انباشتگی بزرگ نامهها مانع تحویل نامههای جدید شود.
- slow start
- این راهبرد با تنظیم تدریجی تعداد تحویلهای موازی به یک مقصد یکسان، مشکل «ازدحام رمهای» (thundering herd) را برطرف میکند.
- round robin
- مدیر صف درخواستهای تحویل را بر اساس مقصد مرتب میکند. انتخاب نوبتگردشی (round-robin) مانع از آن میشود که یک مقصد بر تحویلها به مقصدهای دیگر چیره شود.
- exponential backoff
- نامهای که در نخستین تلاش تحویل داده نشود به تعویق میافتد. بازه زمانی بین تلاشهای تحویل پس از هر بار تلاش دو برابر میشود.
- destination status cache
- مدیر صف با نگهداری یک فهرست کوتاهمدت درونحافظهای از مقصدهای غیرقابلدسترس، از تلاشهای تحویل غیرضروری جلوگیری میکند.
- preemptive message scheduling
- مدیر صف تلاش میکند میانگین تأخیر به ازای هر گیرنده را به حداقل برساند و در عین حال با استفاده از یک زمانبندی پیام انحصاری/پیشگیرانه پیشرفته، تأخیرهای صحیح به ازای هر پیام را حفظ کند.
راهاندازها (TRIGGERS)
در یک سیستم بیکار، مدیر صف در انتظار رسیدن رویدادهای راهانداز میماند، یا منتظر به پایان رسیدن یک زمانسنج است. یک راهانداز یک پیام تکبایتی است. بسته به پیام دریافتشده، مدیر صف یکی از کارهای زیر را انجام میدهد (پس از پیام، ثوابت نمادین مورد استفاده در داخل نرمافزار آمده است):
- D (QMGR_REQ_SCAN_DEFERRED)
- شروع پویش صف معوق. اگر یک پویش صف معوق در حال حاضر در جریان باشد، آن پویش به محض پایان یافتن دوباره آغاز خواهد شد.
- I (QMGR_REQ_SCAN_INCOMING)
- شروع پویش صف ورودی. اگر یک پویش صف ورودی در حال حاضر در جریان باشد، آن پویش به محض پایان یافتن دوباره آغاز خواهد شد.
- A (QMGR_REQ_SCAN_ALL)
- نادیده گرفتن برچسبهای زمانی فایلهای صف معوق. این درخواست بر پویش بعدی صف معوق تأثیر میگذارد.
- F (QMGR_REQ_FLUSH_DEAD)
- پاکسازی تمام اطلاعات درباره روشهای انتقال و مقصدهای از کار افتاده (dead).
- W (TRIGGER_REQ_WAKEUP)
- فراخوانی بیدارباش؛ این مورد توسط کارساز master برای راهاندازی کارسازهایی استفاده میشود که نباید برای همیشه متوقف شوند. اقدام مربوطه، شروع یک پویش صف ورودی است.
دیمن qmgr(8) به اندازه یک بافر کامل از راهاندازها را میخواند. چندین درخواست راهانداز یکسان در یک درخواست ادغام میشوند، و درخواستهای راهانداز مرتب میشوند بهگونهای که A و F پیش از D و I قرار گیرند. بنابراین، برای تحمیل اجرای صف معوق، فرد باید A F D را درخواست کند؛ برای مطلع کردن مدیر صف از رسیدن نامه جدید، فرد باید I را درخواست کند.
استانداردها (STANDARDS)
RFC 3463 (کدهای وضعیت ارتقایافته) RFC 3464 (اعلانهای وضعیت تحویل)
امنیت (SECURITY)
دیمن qmgr(8) از نظر امنیتی حساس نیست. این دیمن پیامهای تکنویسهای را از کاربران محلی غیرقابلاعتماد میخواند، و از این رو ممکن است در برابر حملات منع خدمت (DoS) آسیبپذیر باشد. دیمن qmgr(8) با دنیای بیرون ارتباط برقرار نمیکند، و میتواند با سطح دسترسی پایین ثابت در یک محیط chroot اجرا شود.
عیبیابی (DIAGNOSTICS)
مشکلات و تراکنشها در syslogd(8) یا postlogd(8) ثبت میشوند. فایلهای پیام آسیبدیده برای بررسی بیشتر در صف corrupt ذخیره میشوند.
بسته به تنظیم پارامتر notify_classes، مدیر پست (postmaster) از برگشتها (bounces) و سایر مشکلات مطلع میشود.
اشکالات (BUGS)
یک فرایند واحد مدیر صف باید برای دسترسی به دیسک با چندین فرایند پیشین (front-end) مانند cleanup(8) رقابت کند. هجوم ناگهانی نامههای ورودی میتواند بر نرخ تحویل خروجی تأثیر منفی بگذارد.
پارامترهای پیکربندی (CONFIGURATION PARAMETERS)
تغییرات در main.cf بهطور خودکار اعمال نمیشوند زیرا qmgr(8) یک فرایند ماندگار است. پس از تغییر در پیکربندی، از دستور «postfix reload» استفاده کنید.
متن زیر تنها خلاصه پارامترها را ارائه میدهد. برای جزئیات بیشتر شامل مثالها به postconf(5) مراجعه کنید.
در متن زیر، transport فیلد نخست در یک مدخل master.cf است.
کنترلهای سازگاری (COMPATIBILITY CONTROLS)
موجود قبل از نسخه 2.5 در Postfix:
- allow_min_user (no)
- اجازه دادن به اینکه نشانی فرستنده یا گیرنده دارای «-» به عنوان نویسه نخست باشد.
موجود در Postfix نسخه 2.7 و بالاتر:
- default_filter_nexthop (empty)
- هنگامی که یک درخواست content_filter یا FILTER هیچ مقصد صریح گام بعدی (next-hop) را مشخص نکرده باشد، به جای آن از default_filter_nexthop$ استفاده میشود؛ اگر این مقدار خالی باشد، از دامنه موجود در نشانی گیرنده استفاده میشود.
کنترلهای صف فعال (ACTIVE QUEUE CONTROLS)
- qmgr_clog_warn_time (300s)
- حداقل تأخیر بین هشدارهایی مبنی بر اینکه یک مقصد خاص در حال مسدود کردن صف فعال Postfix است.
- qmgr_message_active_limit (20000)
- حداکثر تعداد پیامها در صف فعال.
- qmgr_message_recipient_limit (20000)
- حداکثر تعداد گیرندگانی که توسط مدیر صف Postfix در حافظه نگهداری میشوند، و حداکثر اندازه حافظه پنهان کوتاهمدت و درونحافظهای وضعیت مقصدهای «از کار افتاده» (dead).
- qmgr_message_recipient_minimum (10)
- حداقل تعداد گیرندگان درونحافظهای برای هر پیام.
- default_recipient_limit (20000)
- حد بالای پیشفرض به ازای هر روش انتقال برای تعداد گیرندگان درونحافظهای.
- transport_recipient_limit ($default_recipient_limit)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_recipient_limit، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_extra_recipient_limit (1000)
- مقدار پیشفرض برای حد اضافی به ازای هر روش انتقال که بر تعداد گیرندگان درونحافظهای اعمال میشود.
- transport_extra_recipient_limit ($default_extra_recipient_limit)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_extra_recipient_limit، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
موجود در Postfix نسخه 2.4 و بالاتر:
- default_recipient_refill_limit (100)
- حد پیشفرض به ازای هر روش انتقال برای تعداد گیرندگانی که بهطور همزمان دوباره پر میشوند.
- transport_recipient_refill_limit ($default_recipient_refill_limit)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_recipient_refill_limit، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_recipient_refill_delay (5s)
- حداکثر تأخیر پیشفرض به ازای هر روش انتقال بین دفعات پر کردن مجدد گیرندگان.
- transport_recipient_refill_delay ($default_recipient_refill_delay)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_recipient_refill_delay، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
کنترلهای همزمانی تحویل (DELIVERY CONCURRENCY CONTROLS)
- initial_destination_concurrency (5)
- سطح همزمانی اولیه به ازای هر مقصد برای تحویل موازی به همان مقصد.
- default_destination_concurrency_limit (20)
- حداکثر تعداد پیشفرض تحویلهای موازی به یک مقصد یکسان.
- transport_destination_concurrency_limit ($default_destination_concurrency_limit)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_destination_concurrency_limit، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
موجود در Postfix نسخه 2.5 و بالاتر:
- transport_initial_destination_concurrency ($initial_destination_concurrency)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر initial_destination_concurrency، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_destination_concurrency_failed_cohort_limit (1)
- تعداد شبهگروههایی (pseudo-cohorts) که پیش از غیرقابلدسترس تلقی شدن یک مقصد خاص (و تعلیق تحویلهای بعدی) باید با شکست اتصال یا دستتکانی مواجه شوند.
- transport_destination_concurrency_failed_cohort_limit ($default_destination_concurrency_failed_cohort_limit)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_destination_concurrency_failed_cohort_limit، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_destination_concurrency_negative_feedback (1)
- میزان بازخورد منفی همزمانی تحویل به ازای هر مقصد، پس از اینکه یک تحویل با شکست اتصال یا دستتکانی پایان یابد.
- transport_destination_concurrency_negative_feedback ($default_destination_concurrency_negative_feedback)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_destination_concurrency_negative_feedback، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_destination_concurrency_positive_feedback (1)
- میزان بازخورد مثبت همزمانی تحویل به ازای هر مقصد، پس از اینکه یک تحویل بدون شکست اتصال یا دستتکانی پایان یابد.
- transport_destination_concurrency_positive_feedback ($default_destination_concurrency_positive_feedback)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_destination_concurrency_positive_feedback، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- destination_concurrency_feedback_debug (no)
- پرحرف (verbose) کردن الگوریتم بازخورد مدیر صف جهت اهداف تحلیل کارایی.
کنترلهای زمانبندی گیرنده (RECIPIENT SCHEDULING CONTROLS)
- default_destination_recipient_limit (50)
- حداکثر تعداد پیشفرض گیرندگان به ازای هر تحویل پیام.
- transport_destination_recipient_limit ($default_destination_recipient_limit)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_destination_recipient_limit، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
کنترلهای زمانبندی پیام (MESSAGE SCHEDULING CONTROLS)
- default_delivery_slot_cost (5)
- میزان مجاز بودن زمانبند مدیر صف Postfix برای متوقف ساختن انحصاری (preempt) تحویل یک پیام با پیامی دیگر.
- transport_delivery_slot_cost ($default_delivery_slot_cost)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_delivery_slot_cost، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_minimum_delivery_slots (3)
- تعداد گیرندگانی که یک پیام باید داشته باشد تا الگوریتم زمانبندی مدیر صف Postfix اصلاً فراخوانی شود.
- transport_minimum_delivery_slots ($default_minimum_delivery_slots)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_minimum_delivery_slots، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_delivery_slot_discount (50)
- مقدار پیشفرض برای تنظیمات _delivery_slot_discount ویژه روش انتقال.
- transport_delivery_slot_discount ($default_delivery_slot_discount)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_delivery_slot_discount، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
- default_delivery_slot_loan (3)
- مقدار پیشفرض برای تنظیمات _delivery_slot_loan ویژه روش انتقال.
- transport_delivery_slot_loan ($default_delivery_slot_loan)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_delivery_slot_loan، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
سایر کنترلهای منابع و نرخ (OTHER RESOURCE AND RATE CONTROLS)
- minimal_backoff_time (300s)
- حداقل زمان بین تلاشها برای تحویل یک پیام معوق (deferred)؛ پیش از Postfix نسخه 2.4 مقدار پیشفرض 1000s بود.
- maximal_backoff_time (4000s)
- حداکثر زمان بین تلاشها برای تحویل یک پیام معوق.
- maximal_queue_lifetime (5d)
- غیرقابل تحویل در نظر گرفتن یک پیام، هنگامی که تحویل با خطای موقت مواجه شود و زمان ماندن در صف به حد maximal_queue_lifetime برسد.
- queue_run_delay (300s)
- مدت زمان بین پویشهای صف معوق توسط مدیر صف؛ پیش از Postfix نسخه 2.4 مقدار پیشفرض 1000s بود.
- transport_retry_time (60s)
- مدت زمان بین تلاشهای مدیر صف Postfix برای تماس با یک روش انتقال تحویل پیام دارای نقص عملکرد.
موجود در Postfix نسخه 2.1 و بالاتر:
- bounce_queue_lifetime (5d)
- غیرقابل تحویل در نظر گرفتن یک پیام جهش/برگشت، هنگامی که تحویل با خطای موقت مواجه شود و زمان ماندن در صف به حد bounce_queue_lifetime برسد.
موجود در Postfix نسخه 2.5 و بالاتر:
- default_destination_rate_delay (0s)
- میزان تأخیر پیشفرض که بین تحویل پیامهای منفرد به یک مقصد یکسان و از طریق یک روش انتقال تحویل پیام یکسان اعمال میشود.
- transport_destination_rate_delay ($default_destination_rate_delay)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_destination_rate_delay، که در آن transport نام روش انتقال تحویل پیام در master.cf است.
موجود در Postfix نسخه 3.1 و بالاتر:
- default_transport_rate_delay (0s)
- میزان تأخیر پیشفرض که بین تحویل پیامهای منفرد از طریق یک روش انتقال تحویل پیام یکسان، بدون در نظر گرفتن مقصد، اعمال میشود.
- transport_transport_rate_delay ($default_transport_rate_delay)
- لغو تنظیمات ویژه هر روش انتقال برای مقدار پارامتر default_transport_rate_delay، که در آن بخش نخست transport در نام پارامتر، نام روش انتقال تحویل پیام در master.cf است.
کنترلهای ایمنی (SAFETY CONTROLS)
- qmgr_daemon_timeout (1000s)
- مدت زمانی که یک فرایند مدیر صف Postfix مجاز است برای رسیدگی به یک درخواست صرف کند، پیش از آنکه توسط تایمر نگهبان داخلی خاتمه یابد.
- qmgr_ipc_timeout (60s)
- محدودیت زمانی برای ارسال یا دریافت اطلاعات توسط مدیر صف از طریق یک کانال ارتباطی داخلی.
موجود در Postfix نسخه 3.1 و بالاتر:
- address_verify_pending_request_limit (see 'postconf -d' output)
- یک حد ایمنی که از غرق شدن و اشباع صف Postfix توسط درخواستهای اعتبارسنجی نشانی جلوگیری میکند.
کنترلهای گوناگون (MISCELLANEOUS CONTROLS)
- config_directory (see 'postconf -d' output)
- مکان پیشفرض فایلهای پیکربندی main.cf و master.cf در Postfix.
- defer_transports (empty)
- نام روشهای انتقال تحویل پیامی که نباید نامهای را تحویل دهند مگر اینکه فردی دستور «sendmail -q» یا معادل آن را اجرا کند.
- delay_logging_resolution_limit (2)
- حداکثر تعداد ارقام پس از نقطه اعشار هنگام ثبت مقادیر تأخیر در لاگ.
- helpful_warnings (yes)
- ثبت هشدارهای لاگ درباره تنظیمات پیکربندی مشکلساز، و ارائه پیشنهادهای مفید.
- process_id (read-only)
- شناسه فرایند یک دستور یا فرایند دیمن Postfix.
- process_name (read-only)
- نام فرایند یک دستور یا فرایند دیمن Postfix.
- queue_directory (see 'postconf -d' output)
- مکان دایرکتوری سطح بالای صف در Postfix.
- syslog_facility (mail)
- تسهیلات لاگگیری سیستم برای ثبت لاگهای Postfix.
- syslog_name (see 'postconf -d' output)
- پیشوندی که به ابتدای نام فرایند در رکوردهای syslog افزوده میشود، بهطوری که برای مثال «smtpd» به «prefix/smtpd» تبدیل میشود.
موجود در Postfix نسخه 3.0 و بالاتر:
- confirm_delay_cleared (no)
- پس از ارسال اعلان «پیام شما با تأخیر مواجه شده است»، هنگامی که مشکل تأخیر برطرف شد، به فرستنده اطلاع داده شود.
موجود در Postfix 3.3 و بالاتر:
- service_name (read-only)
- نام سرویس در master.cf برای یک فرایند دیمن Postfix.
موجود در Postfix 3.5 و بالاتر:
- info_log_address_format (external)
- قالب نشانی ایمیلی که در ثبت لاگهای غیر اشکالزدایی (info، warning و غیره) استفاده خواهد شد.
فایلها (FILES)
/var/spool/postfix/incoming, صف نامههای ورودی /var/spool/postfix/active, صف فعال /var/spool/postfix/deferred, صف نامههای معوق /var/spool/postfix/bounce, وضعیت عدم تحویل /var/spool/postfix/defer, وضعیت عدم تحویل /var/spool/postfix/trace, وضعیت تحویل
همچنین ببینید (SEE ALSO)
trivial-rewrite(8), مسیریابی نشانی bounce(8), گزارشهای وضعیت تحویل postconf(5), پارامترهای پیکربندی master(5), گزینههای عمومی دیمن master(8), مدیر فرایند postlogd(8), ثبت لاگ Postfix syslogd(8), ثبت لاگ سیستم
فایلهای README (README FILES)
برای یافتن این اطلاعات از «postconf readme_directory» یا «postconf html_directory» استفاده کنید.
SCHEDULER_README, الگوریتم زمانبندی QSHAPE_README, تحلیل صف Postfix
مجوز (LICENSE)
مجوز Secure Mailer باید همراه با این نرمافزار توزیع شود.
نویسندگان (AUTHOR(S))
Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA بهبودهای زمانبند پیشگیرانه: Patrik Rak Modra 6 155 00, Prague, Czech Republic Wietse Venema Google, Inc. 111 8th Avenue New York, NY 10011, USA