POSTSUPER(1) General Commands Manual POSTSUPER(1)

postsuper - ناظر و مدیر ارشد صف Postfix

postsuper [-psSv]
[-c config_dir] [-d queue_id]
[-e queue_id] [-f queue_id]
[-h queue_id] [-H queue_id]
[-r queue_id] [directory ...]


دستور postsuper(1) کارهای مربوط به نگه‌داری و مدیریت صف Postfix را انجام می‌دهد. استفاده از این دستور به کاربر مدیر سیستم (superuser/root) محدود شده است. برای عملیات بدون امتیاز ویژه روی صف، مانند فهرست کردن یا ارسال فوری صف ایمیل، به دستور postqueue(1) مراجعه کنید.

به‌طور پیش‌فرض، postsuper(1) عملیات‌های درخواست‌شده با گزینه‌های خط فرمان -s و -p را روی تمام دایرکتوری‌های صف Postfix اجرا می‌کند - این شامل دایرکتوری‌های incoming، active، deferred و hold حاوی فایل‌های پیام، و دایرکتوری‌های bounce، defer، trace و flush حاوی فایل‌های ثبت رویداد (log) است.

گزینه‌ها:

فایل پیکربندی main.cf به جای دایرکتوری پیش‌فرض پیکربندی، در دایرکتوری مشخص‌شده قرار دارد. همچنین متغیر محیطی MAIL_CONFIG را در ادامه ببینید.
یک پیام با شناسه صف (queue ID) مشخص‌شده را از صف(های) نام‌برده حذف می‌کند (پیش‌فرض: hold، incoming، active و deferred).

برای حذف چندین فایل، گزینهٔ -d را چندین بار مشخص کنید، یا برای خواندن شناسه‌های صف از ورودی استاندارد، مقدار queue_id را - بگذارید. برای مثال، جهت حذف تمامی نامه‌هایی که دقیقاً یک گیرنده به آدرس user@example.com دارند:

postqueue -j | jq -r '
    # See JSON OBJECT FORMAT section in the postqueue(1) manpage
    select(.recipients[0].address == "user@example.com")
    | select(.recipients[1].address == null)
    | .queue_id
 ' | postsuper -d -

(به گزینهٔ “jq -r” توجه کنید)، یا شکل سنتی آن:

mailq | tail -n +2 | grep -v '^ *(' | awk  'BEGIN { RS = "" }
    # $7=sender, $8=recipient1, $9=recipient2
    { if ($8 == "user@example.com" && $9 == "")
          print $1 }
 ' | tr -d '*!' | postsuper -d -

برای حذف تمام پیام‌ها مقدار “-d ALL” را مشخص کنید؛ به عنوان نمونه، برای حذف تمام نامه‌های موجود در صف deferred، مقدار “-d ALL deferred” را مشخص کنید. به عنوان یک اقدام ایمنی، کلمهٔ ALL حتماً باید با حروف بزرگ نوشته شود.

هشدار: شناسه‌های صف Postfix دوباره استفاده می‌شوند (همواره در Postfix نسخهٔ ۲.۸ و قدیمی‌تر؛ و در Postfix نسخهٔ ۲.۹ به بعد زمانی که enable_long_queue_ids=no باشد). احتمال بسیار اندکی وجود دارد که اگر postsuper در حین تحویل ایمیل توسط سیستم Postfix اجرا شود، فایل پیام اشتباهی را حذف کند.

سناریو به شرح زیر است:

1)
مدیر صف Postfix پیامی را که از postsuper(1) خواسته شده حذف شود، حذف می‌کند؛ زیرا کار Postfix با پیام تمام شده است (یا تحویل داده شده، یا به فرستنده بازگردانده شده است).
2)
ایمیل جدیدی می‌رسد و به این پیام جدید همان شناسه صفی اختصاص می‌یابد که قرار بود postsuper(1) آن را حذف کند. احتمال استفادهٔ مجدد از یک شناسه صف حذف‌شده تقریباً ۱ در 2**15 است (تعداد مقادیر میکروثانیه متفاوتی که ساعت سیستم می‌تواند در طول یک ثانیه تفکیک کند).
3)
دستور postsuper(1) پیام جدید را به جای پیام قدیمی که باید حذف می‌شد، حذف می‌کند.
درخواست انقضای اجباری برای یک پیام با شناسه صف مشخص‌شده در صف(های) نام‌برده (پیش‌فرض: hold، incoming، active و deferred).
  • هنگامی که مدیر صف تلاش کند آن پیام را تحویل دهد، پیام به فرستنده بازگردانده خواهد شد (توجه داشته باشید که Postfix هرگز پیام‌های موجود در صف hold را تحویل نمی‌دهد).
  • هر دو گزینهٔ -e و -f درخواست انقضای اجباری را ثبت می‌کنند. تفاوت در این است که -f پیامی را که در صف hold باشد نیز آزاد می‌کند. با -e، چنین پیامی تا زمانی که با -f یا -H آزاد نشود به فرستنده بازگردانده نخواهد شد.
  • هنگامی که یک پیام به تعویق افتاده (deferred) به‌صورت اجباری منقضی می‌شود، پیام برگشتی دلیل این تأخیر را اعلام خواهد کرد. در غیر این صورت، دلیل به‌صورت “message is administratively expired” (پیام از نظر مدیریتی منقضی شده است) درج خواهد شد.
برای منقضی کردن چندین فایل، گزینهٔ -e یا -f را چندین بار مشخص کنید، یا برای خواندن شناسه‌های صف از ورودی استاندارد، مقدار queue_id را - بگذارید (برای نمونه به گزینهٔ -d در بالا نگاه کنید، اما مطمئن شوید که -d را در مثال جایگزین می‌کنید).

برای منقضی کردن همهٔ پیام‌ها عبارت “-e ALL” یا “-f ALL” را مشخص کنید؛ مثلاً برای منقضی کردن همهٔ نامه‌ها در صف deferred، مقدار “-e ALL deferred” را وارد کنید. به عنوان یک اقدام ایمنی، کلمهٔ ALL باید با حروف بزرگ نوشته شود.

این قابلیت‌ها در Postfix نسخهٔ ۳.۵ و بالاتر در دسترس هستند.

قرار دادن ایمیل در حالت تعلیق یا نگه‌داشته‌شده (on hold) تا تلاشی برای تحویل آن انجام نگیرد. یک پیام با شناسه صف مشخص‌شده را از صف(های) نام‌برده (پیش‌فرض: incoming، active و deferred) به صف hold منتقل می‌کند.

برای نگه‌داشتن چندین فایل، گزینهٔ -h را چندین بار مشخص کنید، یا برای خواندن شناسه‌های صف از ورودی استاندارد، مقدار queue_id را - قرار دهید.

برای نگه‌داشتن همهٔ پیام‌ها عبارت “-h ALL” را مشخص کنید؛ برای نمونه عبارت “-h ALL deferred” را برای معلق کردن تمام نامه‌های صف deferred به کار ببرید. به عنوان یک تدبیر ایمنی، کلمهٔ ALL باید با حروف بزرگ درج شود.

نکته: تا زمانی که ایمیل در حالت “on hold” قرار دارد، با گذشت مدت‌زمان حضور آن در صف از حد تعیین‌شده در maximal_queue_lifetime یا bounce_queue_lifetime منقضی نخواهد شد. این پیام پس از رهاسازی از حالت تعلیق مشمول انقضا می‌شود.

این قابلیت در Postfix نسخهٔ ۲.۰ و بالاتر ارائه شده است.

آزاد کردن نامه‌ای که در حالت تعلیق (on hold) قرار داشته است. یک پیام با شناسه صف مشخص‌شده را از صف(های) نام‌برده (پیش‌فرض: hold) به صف deferred منتقل می‌کند.

برای رهاسازی چندین فایل، گزینهٔ -H را چندین بار مشخص کنید، یا مقدار queue_id را - تعیین کنید تا شناسه‌های صف از ورودی استاندارد خوانده شوند.

نکته: برای رهاسازی نامه‌ای که برای بخش قابل‌توجهی از زمان $maximal_queue_lifetime یا $bounce_queue_lifetime (یا بیشتر) در حالت تعلیق نگه داشته شده است، عبارت “postsuper -r” را مشخص کنید.

برای رهاسازی تمام نامه‌های معلق عبارت “-H ALL” را تعیین کنید. به عنوان یک اقدام ایمنی، کلمهٔ ALL باید حتماً با حروف بزرگ نوشته شود.

این قابلیت در Postfix نسخهٔ ۲.۰ و بالاتر موجود است.

پاک‌سازی فایل‌های موقت قدیمی که پس از خرابی سیستم یا نرم‌افزار به جا مانده‌اند. عملیات‌های -p، -s و -S پیش از سایر عملیات انجام می‌شوند.
قرار دادن دوبارهٔ پیام با شناسه صف مشخص‌شده در صف پردازش (requeue) از صف(های) نام‌برده (پیش‌فرض: hold، incoming، active و deferred).

برای صف‌بندی دوبارهٔ چندین فایل، گزینهٔ -r را چندین بار تکرار کنید، یا برای خواندن شناسه‌های صف از ورودی استاندارد مقدار queue_id را - قرار دهید.

برای قرار دادن مجدد همهٔ پیام‌ها در صف، عبارت “-r ALL” را مشخص کنید. به عنوان یک اقدام ایمنی، کلمهٔ ALL باید با حروف بزرگ نوشته شود..sp یک پیام دوباره صف‌بندی‌شده به صف maildrop منتقل می‌شود، جایی که توسط دیمن‌های pickup(8) و cleanup(8) در یک فایل صف جدید رونویسی می‌شود. از جنبه‌های بسیاری، نحوه رفتار با آن نسبت به یک ارسال محلی جدید تفاوت دارد.

  • پیام مشمول تنظیمات smtpd_milters یا non_smtpd_milters نمی‌شود. هنگامی که نامه از یک فیلتر محتوای خارجی عبور کرده باشد، این امر نتایج نادرستی را با برنامه‌های Milter که وابسته به اطلاعات وضعیت اتصال اولیه SMTP هستند، تولید خواهد کرد.
  • پیام مجدداً مشمول بازنویسی و جایگزینی آدرس نامه می‌شود. این مورد زمانی مفید است که قوانین بازنویسی یا نگاشت‌های مجازی تغییر کرده باشند.

    زمینه بازنویسی آدرس (محلی یا دوردست) همان زمینه‌ای است که پیام در زمان دریافت داشته است.

  • پیام مشمول همان تنظیمات content_filter (در صورت وجود) می‌شود که برای ارسال نامه‌های محلی جدید به کار می‌رود. این امر هنگامی مفید است که تنظیمات content_filter تغییر کرده باشند.
هشدار: شناسه‌های صف Postfix دوباره استفاده می‌شوند (همواره در Postfix <= 2.8؛ و در Postfix >= 2.9 هنگامی که enable_long_queue_ids=no باشد). احتمال بسیار اندکی وجود دارد که postsuper(1) در صورت اجرا هنگام فعال بودن سامانه پستی Postfix، فایل پیام اشتباهی را دوباره در صف قرار دهد، اما نباید آسیبی وارد شود.

این قابلیت در Postfix نسخه 1.1 و بالاتر موجود است.

بررسی ساختار و تعمیر ساختار. این کار باید یک‌بار پیش از راه‌اندازی Postfix انجام شود. عملیات‌های -p، -s و -S پیش از سایر عملیات‌ها انجام می‌شوند.
  • تغییر نام فایل‌هایی که نام آن‌ها با شماره inode فایل پیام مطابقت ندارد. این عملیات پس از بازیابی صف نامه از یک ماشین دیگر یا از نسخه پشتیبان، زمانی که فایل‌های صف با Postfix <= 2.8 یا با "enable_long_queue_ids = no" ایجاد شده باشند، ضروری است.
  • انتقال فایل‌های صفی که در جای نادرستی از سلسله‌مراتب سیستم‌فایل قرار دارند و حذف زیردایرکتوری‌هایی که دیگر به آن‌ها نیازی نیست. چینش مجدد جایگاه فایل‌ها پس از تغییر در پارامترهای پیکربندی hash_queue_names و/یا hash_queue_depth ضروری است.
  • تغییر نام فایل‌های صف ایجاد شده با "enable_long_queue_ids = yes" به نام‌های کوتاه، جهت مهاجرت به Postfix <= 2.8. روش انجام به شرح زیر است:
    # postfix stop
    # postconf enable_long_queue_ids=no
    # postsuper

    دستور postsuper(1) را مکرراً اجرا کنید تا زمانی که گزارش تغییر نام فایل‌ها متوقف شود.

یک نسخه مضاعف از -s که نیازمند آن است که نام‌های فایل طولانی نیز با شماره inode فایل پیام مطابقت داشته باشند. این گزینه برای مقاصد آزمایشی وجود دارد و در Postfix نسخه 2.9 و بالاتر در دسترس است. عملیات‌های -p، -s و -S پیش از سایر عملیات‌ها انجام می‌شوند.
فعال‌سازی ثبت گزارش مشروح برای مقاصد اشکال‌زدایی. استفاده چندباره از گزینه -v نرم‌افزار را به مراتب پرگوتر می‌کند.


مشکلات به جریان خطای استاندارد و به syslogd(8) یا postlogd(8) گزارش می‌شوند.

دستور postsuper(1) تعداد پیام‌های حذف‌شده با -d، تعداد پیام‌های منقضی‌شده با -e، تعداد پیام‌های منقضی یا رهاشده با -f، تعداد پیام‌های نگه‌داشته‌شده یا آزادشده با -h یا -H، تعداد پیام‌های دوباره صف‌بندی‌شده با -r و تعداد پیام‌هایی که نام فایل صف آن‌ها با -s تصحیح شده است را گزارش می‌کند. گزارش مربوطه در جریان خطای استاندارد و در syslogd(8) یا postlogd(8) نوشته می‌شود..SH "محیط (ENVIRONMENT)"

دایرکتوری حاوی فایل main.cf.


ایمیل‌هایی که توسط Postfix پاک‌سازی نشده‌اند (یعنی ایمیل‌های موجود در صف maildrop) را نمی‌توان در حالت «معلق» (on hold) قرار داد.

پارامترهای main.cf زیر به‌ویژه با این برنامه مرتبط هستند. متن زیر تنها خلاصه‌ای از پارامترها را ارائه می‌دهد. برای جزئیات بیشتر از جمله مثال‌ها، postconf(5) را ببینید.

مکان پیش‌فرض فایل‌های پیکربندی main.cf و master.cf در Postfix.
تعداد سطوح زیردایرکتوری برای دایرکتوری‌های صف فهرست‌شده با پارامتر hash_queue_names.
نام‌های دایرکتوری‌های صف که در چندین سطح زیردایرکتوری تقسیم شده‌اند.
فهرست متغیرهای محیطی که یک فرایند دارای امتیاز Postfix از فرایند والد غیر Postfix وارد می‌کند، یا بازنویسی‌های متغیرهای محیطی به‌صورت name=value.
مکان دایرکتوری سطح بالای صف Postfix.
تسهیلات syslog برای ثبت وقایع Postfix.
پیشوندی که در رکوردهای syslog به ابتدای نام فرایند افزوده می‌شود، به‌طوری که برای مثال، «smtpd» به «prefix/smtpd» تبدیل می‌شود.

در Postfix نسخه 2.9 و بالاتر موجود است:

فعال‌سازی شناسه‌های طولانی و غیرتکراری برای صف (نام فایل‌های صف).

sendmail(1)، رابط کاربری سازگار با Sendmail
postqueue(1)، عملیات صف بدون امتیاز
postlogd(8)، ثبت وقایع Postfix
syslogd(8)، ثبت وقایع سیستم

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

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