POSTFIX-LOGWATCH(1) General Commands Manual POSTFIX-LOGWATCH(1)

postfix-logwatch - ابزار تجزیه و تحلیل لاگ‌های Postfix

postfix-logwatch [options] [logfile ...]


ابزار postfix-logwatch(1) یک تجزیه‌گر لاگ MTA برای Postfix است که خلاصه‌ها، جزئیات و آمارهایی در رابطه با عملکرد Postfix تولید می‌کند.

این ابزار می‌تواند به عنوان یک برنامه مستقل، یا به عنوان یک پودمان فیلتر Logwatch برای ایجاد گزارش‌های خلاصه و تفصیلی Postfix از درون Logwatch به کار رود.

Postfix-logwatch قادر است طیف گسترده‌ای از گزارش‌ها را همراه با داده‌هایی که تا حد امکان گروه‌بندی و مرتب شده‌اند تولید کند تا نویز کاهش یافته و الگوها برجسته شوند. گزارش‌های خلاصه، نمای کلی و سریعی از عملیات عمومی Postfix و تحویل پیام‌ها ارائه داده و هشدارهایی که ممکن است نیازمند توجه باشند را گوشزد می‌کنند. گزارش‌های تفصیلی اطلاعاتی سازمان‌یافته، مرتب‌شده به صورت سلسله‌مراتبی و با امکان پیمایش سریع را با هر میزانی از جزئیات که نیاز باشد ارائه می‌دهند.

Postfix-logwatch دو بخش اصلی را در خروجی نمایش می‌دهد: بخش Summary (خلاصه) و بخش Detailed (تفصیلی). برای خوانایی و بررسی سریع، تعداد تمامی رویدادها یا دفعات وقوع در ستون سمت چپ نمایش می‌یابد، به دنبال آن توضیح کوتاهی از نوع رویداد می‌آید و در نهایت آمار تکمیلی یا نمایش‌های تعدادی ممکن است در ستون سمت راست ظاهر شوند.

بخش زیر نمونه‌ای از یک گزارش Summary را نشان می‌دهد:

****** Summary ********************************************
      81   *Warning: Connection rate limit reached (anvil)
     146   Warned
  68.310M  Bytes accepted                        71,628,177
  97.645M  Bytes delivered                      102,388,245
========   ================================================
    3464   Accepted                                  41.44%
    4895   Rejected                                  58.56%
--------   ------------------------------------------------
    8359   Total                                    100.00%
========   ================================================
این گزارش هشدار می‌دهد که محدودیت نرخ اتصال سرویس anvil به تعداد ۸۱ بار لمس شده است، اقدام هشداری WARN در بررسی دسترسی Postfix به تعداد ۱۴۶ بار ثبت شده، و در مجموع ۶۸٫۳۱۰ مگابایت (۷۱٬۶۲۸٬۱۷۷ بایت) وارد سامانه Postfix شده که ۹۷٫۶۴۵ مگابایت داده تحویل داده است (به دلیل وجود چندین گیرنده). خطوط Accepted و Rejected نشان می‌دهند که Postfix تعداد ۳۴۶۴ پیام (۴۱٫۴۴٪ از کل پیام‌ها) را پذیرفته و ۴۸۹۵ پیام (۵۸٫۵۶٪ باقی‌مانده) از مجموع ۸۳۵۹ پیام را رد کرده است (ردشدن‌های موقت در جاهای دیگر نمایش داده می‌شوند).

ده‌ها زیربخش در گزارش Detailed در دسترس هستند که خروجی هر یک را می‌توان به روش‌های گوناگونی کنترل کرد. هر زیربخش تلاش می‌کند داده‌های پرمعناتر را در سطوح بالاتر گروه‌بندی کرده و ارائه دهد، در حالی که داده‌های کم‌اهمیت‌تر یا دارای نویز (noisy) را به سطوح پایین‌تر سوق می‌دهد. هدف، بهره‌مندی حداکثری از گروه‌بندی هوشمندانه داده‌ها است تا بررسی سریع‌تر گزارش، شناسایی الگوها و حل مشکلات میسر شود. داده‌ها همواره به ترتیب نزولی بر اساس تعداد، و سپس به صورت عددی بر اساس آدرس IP یا به ترتیب حروف الفبا بر حسب مورد مرتب می‌شوند.

بخش خطاهای MX زیر از یک نمونه گزارش Detailed ساختار پایه سطوح سلسله‌مراتبی postfix-logwatch را نشان می‌دهد:

****** Detailed *******************************************
     261   MX errors --------------------------------------
     261      Unable to look up MX host
     222         Host not found
      73            foolishspammer.local
      60            completely.bogus.domain.example
      11            friend.example.com
      39         No address associated with hostname
      23            dummymx.sample.net
      16            pushn.spam.sample.com

ابزار postfix-logwatch داده‌ها را از STDIN یا از logfile مشخص‌شده Postfix می‌خواند. می‌توان چندین آرگومان logfile را تعیین کرد که هر کدام به ترتیب پردازش می‌شوند. کاربری که postfix-logwatch را اجرا می‌کند باید مجوز خواندن بر روی هر فایل لاگ تعیین‌شده را داشته باشد. گزینه‌های ذکر شده در زیر بر عملکرد postfix-logwatch تأثیر می‌گذارند. گزینه‌هایی که بعداً در خط فرمان مشخص شوند، بر گزینه‌های قبلی اولویت داشته و جایگزین آن‌ها می‌شوند. هر گزینه‌ای را می‌توان تا حدی که غیرمبهم باشد خلاصه کرد.

استفاده از فایل پیکربندی جایگزین config_file به جای پیش‌فرض. این گزینه را می‌توان بیش از یک بار استفاده کرد. چندین فایل پیکربندی به ترتیبی که در خط فرمان مشخص شده‌اند، پردازش خواهند شد. بخش CONFIGURATION FILE را در زیر ببینید.
خروجی دادن اطلاعات اشکال‌زدایی حین اجرای postfix-logwatch. پارامتر keywords شامل یک یا چند کلیدواژه است که با کاما یا فاصله از هم جدا شده‌اند. برای دریافت فهرست کلیدواژه‌های معتبر، از --debug xxx استفاده کنید که در آن xxx هر کلیدواژهٔ نامعتبری است.
--[no]delays
خروجی گزارش صدک‌های تأخیر پیام را فعال (غیرفعال) می‌کند. گزارش صدک‌های تأخیر، صدک‌ها را برای هر یک از ۴ زمان تأخیر تحویل گزارش‌شده توسط Postfix (موجود در نگارش ۲.۳ و جدیدتر) در قالب delays=a/b/c/d نمایش می‌دهد، که در آن: a مقدار زمان قبل از صف فعال (شامل زمان تلاش‌های تحویل قبلی و زمان سپری‌شده در صف تعویق‌افتاده)، b مقدار زمان در صف فعال تا واگذاری به کارگزار تحویل، c مقدار زمان صرف‌شده برای برقراری اتصالات (شامل DNS، HELO و TLS) و d مقدار زمان صرف‌شده برای تحویل پیام است. کل تأخیر نمایش‌داده‌شده از فیلد delay= در یک خط لاگ تحویل پیام به دست می‌آید.

نکته: این گزارش ممکن است مقدار زیادی از حافظه را مصرف کند؛ اگر به آن نیازی ندارید، گزارش تأخیرها را غیرفعال کنید.

صدک‌های مورد استفاده در گزارش صدک‌های تأخیر پیام را مشخص می‌کند. صدک‌های p1، p2، ... در بازهٔ ۰ تا ۱۰۰ (شامل خود آن‌ها) قرار دارند. ترتیب فهرست مرتب‌سازی نمی‌شود - گزارش ستون‌های صدک‌ها را به همان ترتیبی که مشخص کرده‌اید خروجی می‌دهد.
حداکثر سطح جزئیات را برای postfix-logwatch روی level تنظیم می‌کند. این گزینه سراسری بوده و بر تمام محدودکننده‌های خروجی دیگری که در زیر توضیح داده شده‌اند اولویت دارد.

ابزار postfix-logwatch یک بخش Summary، یک بخش Detailed و بخش‌های گزارش اضافی تولید می‌کند. اگر مقدار level کمتر از ۵ باشد، postfix-logwatch فقط بخش Summary را تولید می‌کند. در level ۵ و بالاتر، بخش Detailed و هر بخش گزارش اضافی کاندیدای خروجی هستند. هر افزایش تدریجی در level، یک زیرسطح سلسله‌مراتبی دیگر از خروجی را در بخش Detailed گزارش تولید می‌کند. در level ۱۰، همهٔ سطوح خروجی داده می‌شوند. خطوطی که از حداکثر عرض گزارش (مشخص‌شده با max_report_width) فراتر روند، بریده خواهند شد. تنظیم level روی ۱۱ از بریده شدن خطوط در گزارش جلوگیری می‌کند (همچنین --line_style را ببینید).

چاپ اطلاعات نحوه استفاده و شرح مختصری از گزینه‌های خط فرمان.
نادیده گرفتن خطوط لاگی که شامل نام سرویس postfix به صورت postfix/service هستند. پارامتر service یک عبارت باقاعده (regular expression) است.

نکته: اگر در عبارت باقاعدهٔ خود از پرانتز استفاده می‌کنید، اطمینان حاصل کنید که غیرگروه‌بند (cloistering / non-capturing) باشند و نه ضبط‌کننده (capturing): از (?:pattern) به جای (pattern) استفاده کنید.

مشخص می‌کند که نشانی‌های IP در جفت‌های نشانی/نام میزبان (address/hostname) باید با عرض فیلد به اندازهٔ width نویسه چاپ شوند. افزایش مقدار پیش‌فرض می‌تواند برای سیستم‌هایی که از نشانی‌های طولانی IPv6 استفاده می‌کنند مفید باشد.
محدودکنندهٔ سطح limiter را با مشخصهٔ levelspec تنظیم می‌کند.
نحوهٔ مدیریت خطوط طولانی گزارش را مشخص می‌کند. سه سبک در دسترس است: full، truncate و wrap. تنظیم style روی full مانع از برش خطوط به اندازهٔ max_report_width می‌شود؛ این همان وضعیتی است که با تعیین detail برابر با ۱۱ یا بالاتر رخ می‌دهد. هنگامی که style روی truncate (پیش‌فرض) باشد، خطوط طولانی بر اساس max_report_width کوتاه می‌شوند. تنظیم style روی wrap خطوط طولانی‌تر از max_report_width را به گونه‌ای می‌شکند که شمارنده‌های ستون چپ مخدوش نشوند. این گزینه بر سبک خطی که توسط سطح detail تعیین می‌شود اولویت دارد. گزینه‌های --full، --truncate و --wrap مترادف هستند.
--[no]long_queue_ids
تفسیر شناسه‌های صف طولانی (long queue IDs) را در لاگ‌های Postfix (نسخه ۲.۹ یا بالاتر) فعال (غیرفعال) می‌کند.
بخش Detailed گزارش و تمام گزارش‌های تکمیلی را غیرفعال می‌کند. این گزینه سازوکار مناسبی را برای غیرفعال کردن سریع تمام بخش‌های ذیل گزارش Detailed فراهم می‌کند؛ جایی که گزینه‌های بعدی در خط فرمان می‌توانند یک یا چند بخش را برای ایجاد گزارش‌های خاص مجدداً فعال کنند.
--[no]summary
نمایش بخش Summary گزارش را فعال (غیرفعال) می‌کند. متغیر postfix_Show_Summary در فایل پیکربندی استفاده می‌شود.
تفکیک نشانی‌های تحویل ایمیل با استفاده از نویسهٔ جداکنندهٔ گیرنده delimiter. این مقدار عموماً باید با recipient_delimiter مشخص‌شده در فایل پارامترهای Postfix یعنی main.cf، یا مقدار پیش‌فرض مشخص‌شده در خروجی postconf -d recipient_delimiter مطابقت داشته باشد. این گزینه برای به دست آوردن آمار به تفکیک نام مستعار هنگامی که از یک جداکنندهٔ گیرنده برای تحویل ایمیل استفاده می‌شود بسیار مفید است.
فهرست الگوهای پاسخ رد (reject reply patterns) مورد استفاده برای ایجاد گروه‌های رد را مشخص می‌کند. هر مدخل در فهرست r1 [r2 ...] باید یا یک کد پاسخ سه نویسه‌ای عبارت باقاعده به شکل [45][0-9.][0-9.] باشد، یا کلمهٔ "Warn". نقطه "." در عبارت باقاعده یک نقطهٔ عینی است که با هر زیرکد پاسخ رد مطابقت دارد؛ این نویسهٔ عام امکان ایجاد گروه‌های رد گسترده را فراهم می‌سازد. ترتیب فهرست حفظ می‌شود، بدین صورت که گزارش‌های رد با همان ترتیبی که در فهرست قرار دارند خروجی داده خواهند شد. کدهای پاسخ ردِ مشخص، بدون در نظر گرفتن ترتیب فهرست، نسبت به الگوهای عام اولویت خواهند داشت.

فهرست پیش‌فرض "5.. 4.. Warn" است که سه گروه از ردها را ایجاد می‌کند: ردهای دائمی، شکست‌های رد موقت و هشدارهای رد (مانند warn_if_reject).

این ویژگی به عنوان مثال امکان تمایز بین بسته‌شدن کانال انتقال 421 از خطاهای 45x (مانند 450 صندوق پستی در دسترس نیست، 451 خطاهای پردازش محلی، 452 فضای ذخیره‌سازی ناکافی) را فراهم می‌آورد. چنین گروه‌بندی‌ای با این فهرست پیکربندی می‌شود: "421 4.. 5.. Warn". برای اطلاعات بیشتر در مورد کدهای پاسخ، RFC 2821 را ببینید.

همچنین بخش CONFIGURATION FILE را دربارهٔ استفاده از reject_reply_patterns در فایل پیکربندی ببینید.

--[no]sect_vars
تکمیل عنوان هر بخش Detailed با نام محدودکنندهٔ سطح آن بخش را فعال (غیرفعال) می‌کند. نام نمایش‌داده‌شده، گزینهٔ خط فرمان (یا متغیر فایل پیکربندی) است که برای محدود کردن خروجی آن بخش استفاده می‌شود. با توجه به تعداد زیاد محدودکننده‌های سطح موجود در postfix-logwatch، این یک سازوکار مناسب برای تعیین دقیق این است که کدام محدودکنندهٔ سطح بر یک بخش تأثیر می‌گذارد.
نام سرویس syslog را که postfix-logwatch برای تطبیق با خطوط syslog استفاده می‌کند مشخص می‌کند. فقط خطوط لاگی که نام سرویس آن‌ها با عبارت باقاعده پرل namepat مطابقت داشته باشد توسط postfix-logwatch استفاده خواهند شد؛ تمام خطوط غیر منطبق بدون هشدار نادیده گرفته می‌شوند. این ویژگی زمانی مفید است که یک بستهٔ Postfix از پیش نصب‌شده از نامی به غیر از پیش‌فرض (postfix) استفاده کند، یا زمانی که چندین نمونه از Postfix در حال استفاده هستند و گزارش‌گیری به تفکیک نمونه مورد نیاز باشد.

الگوی namepat باید با پارامتر پیکربندی syslog_name مشخص‌شده در فایل پارامترهای Postfix یعنی main.cf، فایل کنترلی اصلی master.cf یا مقدار پیش‌فرض مشخص‌شده در خروجی postconf -d syslog_name مطابقت داشته باشد.

نکته: اگر در عبارت باقاعدهٔ خود از پرانتز استفاده می‌کنید، اطمینان حاصل کنید که غیرگروه‌بند (cloistering / non-capturing) باشند و نه ضبط‌کننده (capturing): از (?:pattern) به جای (pattern) استفاده کنید.

--[no]unknown
نمایش نام 'unknown' تولیدشده توسط postfix را در جفت‌های قالب‌بندی‌شدهٔ IP/نام میزبان در گزارش‌های Detailed فعال (غیرفعال) می‌کند. پیش‌فرض: فعال.
چاپ اطلاعات نگارش postfix-logwatch..SS "محدودکننده‌های سطح (Level Limiters)"

خروجی هر بخش در گزارش Detailed توسط یک محدودکننده سطح کنترل می‌شود. نام متغیر محدودکننده سطح زمانی که گزینه sect_vars تنظیم شده باشد نمایش داده خواهد شد. محدودکننده‌های سطح یا از طریق خط فرمان در حالت مستقل با گزینه --limit limiter=levelspec تنظیم می‌شوند، یا از طریق متغیر فایل پیکربندی $postfix_limiter=levelspec. هر محدودکننده نیازمند یک آرگومان levelspec است که در ادامه در بخش LEVEL CONTROL شرح داده شده است.

فهرست محدودکننده‌های سطح در زیر آورده شده است.

چندین محدودکننده سطح وجود دارند که زیربخش‌های رد (reject) را کنترل می‌کنند (مانند rejectbody، rejectsender و غیره). از آنجا که فهرست گونه‌های رد تا زمان اجرا و پس از مشاهده reject_reply_patterns مشخص نیست، این محدودکننده‌های رد در زیر به صورت عمومی با پیشوند ### نمایش داده شده‌اند. برای استفاده از یکی از این محدودکننده‌های رد، ### را با یکی از کدهای پاسخ ردِ در حال اجرا جایگزین کنید، به طوری که هر نقطه با یک نویسه x جایگزین شود. به عنوان مثال، با استفاده از فهرست پیش‌فرض reject_reply_patterns به صورت "5.. 4.. Warn"، سه گونه از rejectbody معتبر خواهد بود: --limit 5xxrejectbody، --limit 4xxrejectbody و --limit warnrejectbody. برای راحتی، می‌توانید پیشوند ### را به طور کامل حذف کرده و به جای آن از گزینه خالی rejectXXX استفاده کنید، و تمام گونه‌های محدودکننده سطح رد به طور خودکار بر اساس فهرست reject_reply_patterns تولید خواهند شد. برای مثال، بخش خط فرمان:

... --reject_reply_patterns "421 5.." \
        --limit rejectrbl="1:10:"
به طور خودکار به صورت زیر تبدیل خواهد شد:
... --reject_reply_patterns "421 5.." \
        --limit 421rejectrbl="1:10:" --limit 5xxrejectrbl="1:10:"
به reject_reply_patterns در بالا، و توضیحات درون فایل پیکربندی postfix-logwatch.conf مراجعه کنید.

[ این بخش هنوز کامل نشده است ]

خطاها در دریافت داده‌های مشخصه (attribute) از سرویس.
پیام‌هایی که کنش BCC را در access، header_checks یا body_checks فعال کرده‌اند. (شاخه آزمایشی postfix 2.6)
برگشت‌های (bounces) محلی و دوردست. یک برگشت زمانی یک برگشت محلی در نظر گرفته می‌شود که رله یکی از موارد none، local، virtual، avcheck، maildrop یا 127.0.0.1 باشد.
گروه‌بندی مجدد تمام گونه‌های رد دائمی (5xx) بر اساس آدرس IP میزبان کلاینت.
خطاهای Postfix در برقراری ارتباط با یکی از سرویس‌های خود.
محدودیت‌های نرخ یا همزمانی سرویس Anvil.
اتصالات برقرار شده با سرور smtpd.
اتصالات قطع‌شده با سرور smtpd.
اتصالات قطع‌شده در حین ارتباطات smtp با MTA دوردست.
شکست‌های گزارش‌شده توسط smtp هنگام اتصال به MTA دوردست.
هشدارهای ثبت‌شده زمانی که فایل نگاشت پایگاه‌داده باینری نیازمند به‌روزرسانی postmap از فایل منبع جدیدتر باشد.
به تعویق افتادن‌های تحویل پیام. یک پیام منفرد deferred بارها دارای یک یا چند مورد deferrals خواهد بود.
اعتبارسنجی آدرس نشان می‌دهد که آدرس گیرنده قابل‌تحویل است.
تعداد پیام‌های تحویل داده شده به یک عامل تحویل مانند local یا virtual.
پیام‌هایی که کنش DISCARD را در access، header_checks یا body_checks فعال کرده‌اند.
هر یک از خطاهای متعددی که در طول جستجوهای DNS رخ داده است.
فهرست دامنه‌های فرستنده. (۲ سطح: دامنه فرستنده پاکت‌نامه، localpart)
فهرست فرستندگان پاکت‌نامه. (۱ سطح: فرستنده پاکت‌نامه)
پیام‌های خطای (error) عمومی Postfix.
خطاهای پیکربندی مهلک در main.cf یا master.cf.
پیام‌های مهلک (fatal) عمومی Postfix.
پیام‌هایی که کنش FILTER را در access، header_checks یا body_checks فعال کرده‌اند.
پیام‌های بازفرستاده شده توسط MDA از یک رده آدرس به رده دیگر (مانند local -> virtual).
XXXXXXXXXXX
پیام‌هایی که توسط postsuper به حالت تعلیق درآمدند، یا کنش HOLD را در access، header_checks یا body_checks فعال کرده‌اند.
نام میزبان نامعتبر شناسایی شد.
جستجوی نام میزبان به IP همتا (یعنی سیستم دوردستی که به smtpd متصل می‌شود) برنمی‌گردد. همچنین با نام DNS معکوس تأیید شده به جلو (FCRDNS) شناخته می‌شود. هنگامی که نام معکوس هیچ ورودی DNS ندارد، پیام «host not found, try again» گنجانده می‌شود؛ در غیر این صورت خیر (به عنوان مثال هنگامی که معکوس دارای آدرس IP دیگری است، اما نه آن آدرسی که Postfix انتظار دارد).
نحو غیرمجاز در آدرس ایمیل ارائه‌شده در طول گفتگوی MAIL FROM یا RCPT TO.
هرگونه خطای LDAP در حین جستجوی LDAP.
جستجوی MX برای یافتن بهترین کارگزار پست به منظور تحویل نامه منجر به ارسال به خودمان شود.
مشکل در جدول نگاشت access که نیازمند تصحیح است.
مواجه شدن Postfix با خطا هنگام تلاش برای ایجاد فایل پیام در دایرکتوری spool.
نام میزبانی یافت شد که به جای حروف، عددی بود.
پیام‌های وحشت‌زدگی (panic) عمومی Postfix.
راه‌حل‌های موقتی برای اجتناب از «fixup»های SMTP در Cisco PIX دوردست فعال شدند.
خلاصه‌سازی نتایج policyweight/policydweight.
خلاصه‌سازی نتایج PolicySPF.
خلاصه‌سازی نتایج Postgrey.
خلاصه‌سازی سرویس‌های postscreen و verify در نسخه 2.7.
خلاصه‌سازی سرویس dnsblog در نسخه 2.7.
پیام‌هایی که کنش PREPEND را در header_checks یا body_checks فعال کرده‌اند.
سرویس‌های Postfix که به طور غیرمنتظره خارج شده‌اند.
یک سرویس Postfix به حداکثر تعداد مجاز فرایندها رسیده یا از آن فراتر رفته است.
مشکلات در نوشتن فایل صف Postfix.
خطاهای جستجو برای RBLها.
پیام‌هایی که کنش REDIRECT را در access، header_checks یا body_checks فعال کرده‌اند.
###RejectBody
پیام‌هایی که کنش REJECT را در body_checks فعال کرده‌اند.
###RejectClient
پیام‌های رد شده توسط کنترل‌های دسترسی کلاینت (smtpd_client_restrictions).
###RejectConfigError
پیام‌های رد شده به دلیل خطاهای پیکربندی سرور.
###RejectContent
پیام‌های رد شده توسط message_reject_characters.
###RejectData
پیام‌های رد شده در مرحله DATA در گفتگوی SMTP (smtpd_data_restrictions).
###RejectEtrn
پیام‌های رد شده در مرحله ETRN در گفتگوی SMTP (smtpd_etrn_restrictions).
###RejectHeader
پیام‌هایی که کنش REJECT را در header_checks فعال کرده‌اند.
###RejectHelo
پیام‌های رد شده در مرحله HELO/EHLO در گفتگوی SMTP (smtpd_helo_restrictions).
###RejectInsufficientSpace
پیام‌های رد شده به دلیل کمبود فضای ذخیره‌سازی.
###RejectLookupFailure
پیام‌های رد شده به دلیل خطاهای موقت در جستجوی DNS.
###RejectMilter
ردهای Milter. هیچ کد پاسخ ردی برای این ردها موجود نیست، اما یک DSN گسترده 5.7.1 ارائه شده است. این ردها به اجبار در گروه ردهای عمومی 5xx قرار می‌گیرند. اگر reject_reply_patterns را طوری بازتعریف کنید که شامل الگوی 5.. نباشد، ردهای milter در خروجی ظاهر نخواهند شد.
###RejectRbl
پیام‌های رد شده به دلیل تطابق در RBL.
###RejectRecip
پیام‌های رد شده توسط کنترل‌های دسترسی گیرنده (smtpd_recipient_restrictions).
###RejectRelay
پیام‌های رد شده توسط کنترل‌های دسترسی رله.
###RejectSender
پیام‌های رد شده توسط کنترل‌های دسترسی فرستنده (smtpd_sender_restrictions).
###RejectSize
پیام‌های رد شده به دلیل حجم بیش از حد پیام.
###RejectUnknownClient
پیام‌های رد شده توسط کنترل‌های دسترسی کلاینت ناشناخته..IP "###RejectUnknownReverseClient" پیام‌های ردشده توسط کنترل‌های دسترسی کلاینت معکوس ناشناخته.
###RejectUnknownUser
پیام‌های ردشده توسط کنترل‌های دسترسی کاربر ناشناخته.
###RejectUnverifiedClient
پیام‌های ردشده توسط کنترل‌های دسترسی کلاینت تأییدنشده.
###RejectVerify
پیام‌های ردشده به دلیل شکست در اعتبارسنجی نشانی.
پیام‌هایی که کنش REPLACE را در header_checks یا body_checks فعال کرده‌اند.
پیام‌های بازگردانده‌شده به فرستنده به دلیل فراتر رفتن از زمان ماندگاری صف (maximal_queue_lifetime).
موفقیت‌های احراز هویت SASL؛ شامل روش SASL، نام کاربری و فرستنده در صورت وجود.
شکست‌های احراز هویت SASL.
پیام‌های ارسال‌شده از طریق عامل تحویل SMTP.
پیام‌های ارسال‌شده از طریق عامل تحویل LMTP.
خطاها در طول گفتگوی SMTP/ESMTP.
نقض پروتکل در طول گفتگوی SMTP/ESMTP.
خطاها در حین راه‌اندازی کارگزار Postfix.
اتصال‌هایی به smtpd که دچار پایان مهلت زمانی (timeout) شده‌اند.
اتصال‌های کلاینت TLS.
ارتباط TLS پیشنهادشده.
اتصال‌های سرور TLS.
اتصال‌های تأییدنشده TLS.
اعتبارسنجی نشانی نشان می‌دهد که نشانی گیرنده غیرقابل تحویل است.
پیام‌هایی که کنش WARN را در access، header_checks یا body_checks فعال کرده‌اند.
هشدارهای مربوط به خطاهای پیکربندی Postfix.
پیام‌های عمومی warning در Postfix.


بخش Detailed از گزارش شامل تعدادی زیربخش است که هر یک از آن‌ها هم به صورت سراسری و هم به طور مستقل کنترل می‌شوند. دو تنظیم بر خروجی ارائه‌شده در گزارش Detailed تأثیر می‌گذارند: یک سطح جزئیات سراسری (که با --detail مشخص می‌شود) و کنترل نهایی (چکش بزرگ) را برای محدود کردن خروجی بخش Detailed اعمال می‌کند، و تنظیمات جزئیات مختص زیربخش (چکش کوچک) که امکان محدودسازی بیشتر خروجی را برای هر زیربخش فراهم می‌سازد. هر زیربخش می‌تواند به یک عمق مشخص محدود شود و هر زیرسطح را می‌توان با حدود N تای برتر یا مقادیر آستانه محدود کرد. آرگومان levelspec برای هر یک از محدودکننده‌های سطحِ ذکرشده در بالا برای دستیابی به این هدف به کار می‌رود.

شاید بهتر باشد توضیح محدودسازی زیرسطح را با ساختار سلسله‌مراتبی شناخته‌شده زیر و چند مثال پایه ادامه دهیم:

level 0
   level 1
      level 2
         level 3
            level 4
            level 4
      level 2
         level 3
            level 4
            level 4
            level 4
         level 3
            level 4
         level 3
   level 1
      level 2
         level 3
            level 4

ساده‌ترین شکل محدودسازی خروجی، تمام خروجی‌های پایین‌تر از یک سطح مشخص را حذف می‌کند. برای مثال، یک levelspec که روی "2" تنظیم شده است، تنها داده‌های سطوح 0 تا 2 را نشان می‌دهد. این کار را مانند جمع‌کردن (collapse) هر مورد در زیرسطح 2 در نظر بگیرید که بدین ترتیب تمامی سطوح پایین‌تر (3، 4، ...) پنهان شده و خروجی زیر حاصل می‌شود:

level 0
   level 1
      level 2
      level 2
   level 1
      level 2

گاهی حجم خروجی در یک بخش بیش از حد زیاد است و حذف داده‌هایی که از یک مقدار آستانه مشخص فراتر نمی‌روند سودمند خواهد بود. یک حمله هرزنامه فرهنگ‌لغتی (dictionary spam attack) را در نظر بگیرید که فهرست‌های بسیار طولانی از نشانی‌های ایمیل یا IP گیرنده‌ای با تنها یک‌بار رخداد تولید می‌کند. هر زیرسطح در سلسله‌مراتب را می‌توان با تنظیم مناسب levelspec به صورت آستانه‌ای محدود کرد. تنظیم levelspec به مقدار "2::5" هر داده‌ای را در سطح 2 که تعداد دفعات رخداد آن از 5 بیشتر نباشد، حذف خواهد کرد.

شاید ایجاد فهرستی از N تای برتر، مانند ۱۰ فرستنده برتر، مورد نظر باشد. مقدار levelspec به صورت "3:10:" داده‌های سطح 3 را تنها به ۱۰ رخداد برتر محدود می‌کند.

با کنار گذاشتن این مثال‌های ساده، levelspec به صورت فهرستی از یک یا چند مورد از موارد زیر تعریف می‌شود که با فاصله یا کاما از یکدیگر جدا شده‌اند:

حداکثر سطحی را که باید برای این زیربخش نمایش داده شود تعیین می‌کند، با دامنه‌ای از 0 تا 10. اگر l برابر 0 باشد، هیچ سطحی در خروجی نمایش داده نمی‌شود و عملاً زیربخش غیرفعال می‌گردد (داده‌های سطح 0 پیشاپیش در گزارش Summary ارائه شده‌اند، بنابراین سطح 1 نخستین سطح کاربردی در گزارش Detailed در نظر گرفته می‌شود). مقادیر بالاتر، خروجی را تا سطح تعیین‌شده و شامل آن تولید خواهند کرد.
مشابه بالا، با این افزونه که n خروجی سطح 1 این بخش را به n مورد برتر محدود می‌کند. مقدار n می‌تواند هر عدد صحیح بزرگ‌تر از 1 باشد. (این شیوه محدودسازی کارایی کمتری نسبت به نحو زیر دارد. این قالب جهت سازگاری با نسخه‌های پیشین ارائه شده و به کاربران توصیه می‌شود از نحو زیر استفاده کنند).
این سه‌تایی، سطح l، تعداد برتر n و حداقل آستانه t را تعیین می‌کند. هر یک از مقادیر، اعداد صحیحی هستند که l محدودکننده سطح طبق توضیحات بالا، n محدودکننده N تای برتر برای سطح l، و t محدودکننده آستانه برای سطح l است. هنگامی که هر دو مقدار n و t مشخص شده باشند، n اولویت دارد و امکان ایجاد فهرست‌های N تای برتر را (بدون توجه به مقدار آستانه) فراهم می‌سازد. چنانچه مقدار l درج نشود، مقادیر مشخص‌شده برای n و/یا t برای تمامی سطوح موجود در زیربخش اعمال می‌شوند. این موضوع امکان نوعی تطبیق عام (wildcarding) ساده را فراهم می‌کند (مثلاً اعمال محدودیت‌های حداقل آستانه بر روی تمام سطوح). با این حال، محدودکننده‌های مشخص همواره بر محدودکننده‌های عام ارجحیت دارند. نخستین شکل از محدودکننده سطح می‌تواند در levelspec گنجانده شود تا بدون توجه به تعداد سه‌تایی‌های موجود، خروجی کلی را محدود کند.

هر سه شکل از این محدودکننده‌ها تنها زمانی مؤثر هستند که سطح جزئیات postfix-logwatch برابر با 5 یا بیشتر باشد (بخش Detailed تا زمانی که سطح جزئیات حداقل 5 نباشد فعال نمی‌گردد).

برای مشاهده سناریوهای کاربردی، بخش مثال‌ها (EXAMPLES) را ببینید..SH "فایل پیکربندی (CONFIGURATION FILE)" دستور postfix-logwatch می‌تواند تنظیمات پیکربندی را از یک فایل پیکربندی بخواند. در اصل، هر گزینه خط فرمان می‌تواند در یک فایل پیکربندی قرار گیرد، و این تنظیمات هنگام راه‌اندازی خوانده می‌شوند.

از آنجا که postfix-logwatch می‌تواند به صورت مستقل یا درون Logwatch اجرا شود، برای به حداقل رساندن سردرگمی، postfix-logwatch از قواعد ساختاری و قراردادهای فایل پیکربندی Logwatch پیروی می‌کند. این موارد عبارتند از:

  • خطوط خالی نادیده گرفته می‌شوند.
  • خطوطی که با # شروع می‌شوند نادیده گرفته می‌شوند.
  • تنظیمات به این صورت هستند:
    option = value
  • فاصله‌ها یا تب‌ها در دو طرف نویسه = نادیده گرفته می‌شوند.
  • بزرگی و کوچکی حروف هر value که درون نقل‌قول دوتایی قرار گیرد، حفظ خواهد شد.
  • تمام محتواهای دیگر به حروف کوچک تبدیل می‌شوند (عدم حفظ بزرگی و کوچکی، غیرحساس به حروف).
  • تمامی تنظیمات پیکربندی postfix-logwatch باید پیشوند "$postfix_" داشته باشند، در غیر این صورت postfix-logwatch آن‌ها را نادیده خواهد گرفت.
  • هنگام اجرا تحت Logwatch، هر مقداری که فاقد پیشوند "$postfix_" باشد توسط Logwatch مصرف می‌شود؛ Logwatch تنها تنظیماتی را (از طریق متغیر محیطی) به postfix-logwatch ارسال می‌کند که از نظر خودش معتبر باشند.
  • مقادیر True و Yes به 1، و مقادیر False و No به 0 تبدیل می‌شوند.
  • ترتیب تنظیمات درون فایل پیکربندی حفظ نمی‌شود (چرا که تنظیمات توسط Logwatch از طریق متغیرهای محیطی ارسال می‌شوند که هیچ ترتیب تعریف‌شده‌ای ندارند).

برای گنجاندن یک گزینه خط فرمان در یک فایل پیکربندی، پیشوند "$postfix_" را به نام گزینه خط فرمان اضافه کنید. تنظیم فایل پیکربندی و گزینه خط فرمان زیر با یکدیگر معادل هستند:

$postfix_Line_Style = Truncate
--line_style Truncate
محدودکننده‌های سطح نیز پیشوند $postfix_ دریافت می‌کنند، اما در خط فرمان با گزینه --limit مشخص می‌شوند:
$postfix_Sent = 2
--limit Sent=2

ترتیب پردازش گزینه‌های خط فرمان و فایل‌های پیکربندی به صورت زیر رخ می‌دهد: 1) فایل پیکربندی پیش‌فرض در صورت وجود خوانده می‌شود، مشروط بر اینکه گزینه --config_file در خط فرمان مشخص نشده باشد. 2) فایل‌های پیکربندی به ترتیبی که در خط فرمان آمده‌اند خوانده و پردازش می‌شوند. 3) گزینه‌های خط فرمان بر تمام گزینه‌هایی که پیش‌تر چه از طریق خط فرمان و چه از طریق فایل پیکربندی تنظیم شده‌اند، برتری داشته و آن‌ها را رونویسی می‌کنند.

گزینه‌های خط فرمان به ترتیبی که در خط فرمان مشاهده می‌شوند تفسیر می‌شوند، و گزینه‌های پسین گزینه‌های از پیش تنظیم‌شده را رونویسی خواهند کرد. استثنای قابل توجه در مورد متغیرهای محدودکننده است، که به ترتیب مشاهده تفسیر می‌شوند، اما این کار تنها پس از پردازش سایر گزینه‌ها صورت می‌پذیرد. این موضوع به --reject_reply_patterns اجازه می‌دهد تا فهرست پویای محدودکننده‌های گوناگون reject را تعیین کند.

همچنین گزینه --reject_reply_patterns را ببینید.

ابزار postfix-logwatch با کد وضعیت 0 خارج می‌شود، مگر اینکه خطایی رخ داده باشد که در این صورت یک وضعیت خروج غیرصفر بازگردانده خواهد شد.

نکته: postfix-logwatch داده‌های گزارش خود را از یک یا چند فایل گزارش مشخص‌شدهٔ Postfix، یا از STDIN می‌خواند.
برای اختصار، در صورت نیاز، مثال‌های زیر از واژهٔ file به عنوان آرگومان خط فرمان به معنای /path/to/postfix.log استفاده می‌کنند.
بدیهی است که باید file را با مسیر مناسب جایگزین کنید.

برای اجرای postfix-logwatch در حالت مستقل، به سادگی دستور زیر را اجرا کنید:

postfix-logwatch file

فهرست کاملی از گزینه‌ها و نحوهٔ استفادهٔ پایه‌ای از طریق دستور زیر در دسترس است:

postfix-logwatch --help

برای چاپ گزارشی که تنها شامل خلاصه‌ای از داده‌های گزارش Postfix است:

postfix-logwatch --detail 1 file

برای تولید یک گزارش خلاصه و یک گزارش تفصیلی سطح یک برای ۲۵ مِی (May 25th):

grep 'May 25' file | postfix-logwatch --detail 5

برای تولید فهرستی که فقط شامل ۱۰ دامنهٔ برتر ایمیل‌های ارسالی (Sent) باشد، ابتدا گزارش خلاصه و گزارش‌های تفصیلی غیرفعال می‌شوند. از آن‌جا که گزینه‌های خط فرمان از چپ به راست خوانده و فعال می‌شوند، بخش Sent دوباره تا سطح ۱ با یک محدودکنندهٔ ۱۰ تای برتر سطح ۱ فعال می‌شود:

postfix-logwatch --nosummary --nodetail --limit sent='1 1:10:' file

دستور زیر و خروجی نمونهٔ آن، مثالی پیچیده‌تر از محدودکنندهٔ سطح را نشان می‌دهد. این دستور ۳ نشانی ایمیل ارسالی برتر از ۵ دامنهٔ برتر را ارائه می‌دهد، به علاوه، تمام موارد سطح ۳ با تعداد دفعات تکرار ۲ یا کمتر پنهان (حذف) می‌شوند (در زیربخش Sent، این مورد مربوط به نشانی اصلی گیرندهٔ ایمیل یا Original To است). علامت‌های سه‌نقطه نشان‌دهندهٔ داده‌های N تای برتر یا محدودشده بر اساس آستانه هستند:

postfix-logwatch --nosummary --nodetail \
        --limit sent '1:5: 2:3: 3::2' file
1762   Sent via SMTP -----------------------------------
 352      example.com
 310         joe
 255            joe.bob@virtdomain.example.com
   7            info@virtdomain.example.com
  21         pooryoda3
  11         hot93uh
             ...
 244      sample.net
  97         buzz
  26         leroyjones
  14         sally
             ...
 152      example.net
  40         jim_jameson
  23         sam_sampson
  19         paul_paulson
             ...
  83      sample.us
  44         root
  39         jenny1
  69      dom3.example.us
  10         kay
   7         ron
   6         mrsmith
             ...
          ...

دستور بعدی هم از reject_reply_patterns و هم از محدودکننده‌های سطح برای مشاهدهٔ خطاهای رد ۴۲۱ مربوط به RBL استفاده می‌کند، که خروجی سطح ۲ را به مواردی با تعداد دفعات تکرار بیش از ۵ محدود می‌سازد (سطح ۲ در زیربخش Reject RBL، جفت نشانی IP / نام میزبان کلاینت است). این کار یک فهرست بسیار مناسب از متخلفان RBL ایجاد می‌کند که در خروجی نمونه نشان داده شده است (به استفاده از گزینهٔ خط فرمان اختصاری و بدون ابهام reject_reply_pat توجه کنید):

postfix-logwatch --reject_reply_pat '421 4.. 5.. Warn' \
        --nosummary --nodetail --limit 421rejectrbl='2 2::5' file
300   421 Reject RBL ---------------------------------------
243      zen.spamhaus.org=127.0.0.2
106         10.0.0.129       129.0.0.example.com
 41         192.168.10.70    hostx10.sample.net
 40         192.168.42.39    hostz42.sample.net
 15         10.1.1.152       dsl-10-1-1-152.example.us
 14         10.10.10.122     mail122.sample.com
  7         192.168.3.44     smalltime-spammer.example.com
            ...
 48      zen.spamhaus.org=127.0.0.4
 17         10.29.124.92     10-29-124-92.adsl-static.sample.us
            ...
  8      zen.spamhaus.org=127.0.0.11
            ...
  1      zen.spamhaus.org=127.0.0.10
            ...
نکته: نسخه‌های Logwatch پیش از 7.3.6، مگر در صورت پیکربندی دیگر، برای چاپ در STDOUT به‌جای ارسال گزارش‌ها از طریق ایمیل، به گزینهٔ --print نیاز داشتند. از نسخهٔ 7.3.6، STDOUT مقصد خروجی پیش‌فرض است و گزینهٔ --print با --output stdout جایگزین شده است. پیکربندی خود را بررسی کنید تا مشخص شود خروجی گزارش به کجا هدایت خواهد شد، و گزینهٔ مناسب را به دستورهای زیر اضافه کنید.

برای چاپ گزارش خلاصه‌ای از داده‌های لاگ امروز Postfix:

logwatch --service postfix --range today --detail 1

برای چاپ گزارشی از داده‌های لاگ امروز Postfix، با یک سطح از جزئیات در بخش Detailed:

logwatch --service postfix --range today --detail 5

برای چاپ گزارشی برای دیروز، با دو سطح جزئیات در بخش Detailed:

logwatch --service postfix --range yesterday --detail 6

برای چاپ گزارشی از ۱۲ دسامبر تا ۱۴ دسامبر، با چهار سطح جزئیات در بخش Detailed:

logwatch --service postfix --range \
        'between 12/12 and 12/14' --detail 8
برای چاپ گزارشی برای امروز، با تمام سطوح جزئیات:

logwatch --service postfix --range today --detail 10
مشابه بالا، اما خطوط طولانی را بدون برش باقی می‌گذارد:

logwatch --service postfix --range today --detail 11

برنامهٔ postfix-logwatch هنگام اجرا تحت Logwatch از متغیرهای محیطی زیر (که به‌طور خودکار تنظیم می‌شوند) استفاده می‌کند:

این سطح جزئیات مشخص‌شده با آرگومان خط فرمان --detail در Logwatch یا تنظیم Detail در فایل پیکربندی ...conf/services/postfix.conf است.
این سطح اشکال‌زدایی مشخص‌شده با آرگومان خط فرمان --debug در Logwatch است.
برنامهٔ Logwatch تمامی تنظیمات postfix_xxx موجود در فایل پیکربندی ...conf/services/postfix.conf را از طریق متغیر محیطی به فیلتر postfix (که در واقع .../scripts/services/postfix نام دارد) ارسال می‌کند.

/usr/local/bin/postfix-logwatch
برنامهٔ postfix-logwatch
/usr/local/etc/postfix-logwatch.conf
فایل پیکربندی postfix-logwatch در حالت مستقل

/etc/logwatch/scripts/services/postfix
فیلتر postfix در Logwatch
/etc/logwatch/conf/services/postfix.conf
فایل پیکربندی فیلتر postfix در Logwatch.SH "همچنین ببینید (SEE ALSO)"
logwatch(8)، تحلیل‌گر و گزارش‌دهنده گزارش‌های سیستمی

README، مروری کلی بر postfix-logwatch
Changes، تاریخچه فهرست تغییرات نسخه‌ها
Bugs، فهرستی از باگ‌های کنونی یا سایر کاستی‌ها
Makefile، نصب‌کننده مقدماتی
LICENSE، شرایط مجوز برای استفاده و بازتوزیع

تحت پوشش مجوز گنجانده‌شده MIT/X-Consortium:
http://www.opensource.org/licenses/mit-license.php

Mike Cappella

فیلتر اولیه Logwatch برای postfix توسط Kenneth Porter نوشته شده بود و طی سال‌ها مشارکت‌کنندگان زیادی داشته است. آن‌ها مطلقاً هیچ مسئولیتی در قبال خطاها، مشکلات یا خرابی‌های ایجادشده از زمانی که کد منبع توسط نویسنده فعلی دستکاری شده است، ندارند.