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

amavis-logwatch - ابزاری برای تجزیه لاگ و تحلیل Amavisd-new

amavis-logwatch [options] [logfile ...]


ابزار amavis-logwatch(1) یک تجزیه‌کنندهٔ لاگ Amavisd-new است که خلاصه‌ها، جزئیات و آمارهای مربوط به عملکرد Amavisd-new (که از این پس به سادگی Amavis نامیده می‌شود) را تولید می‌کند.

این ابزار می‌تواند به عنوان یک برنامهٔ مستقل، یا به عنوان یک ماژول فیلتر Logwatch برای ایجاد گزارش‌های خلاصه و تفصیلی Amavisd-new از داخل Logwatch به کار رود.

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

بخش عمده‌ای از داده‌های کاربردی زمانی در دسترس است که $log_level در Amavis حداقل روی ۲ تنظیم شده باشد. بخش Amavis Log Level را در ادامه ببینید.

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

بخش زیر از یک نمونه گزارش خلاصه (Summary) این ساختار را نشان می‌دهد:

****** Summary ********************************************
       9   Miscellaneous warnings
   20313   Total messages scanned ----------------  100.00%
1008.534M  Total bytes scanned                1,057,524,252
========   ================================================
    1190   Blocked -------------------------------    5.86%
      18     Malware blocked                          0.09%
       4     Banned name blocked                      0.02%
     416     Spam blocked                             2.05%
     752     Spam discarded (no quarantine)           3.70%
   19123   Passed --------------------------------   94.14%
      47     Bad header passed                        0.23%
   19076     Clean passed                            93.91%
========   ================================================
      18   Malware -------------------------------    0.09%
      18     Malware blocked                          0.09%
       4   Banned --------------------------------    0.02%
       4     Banned file blocked                      0.02%
    1168   Spam ----------------------------------    5.75%
     416     Spam blocked                             2.05%
     752     Spam discarded (no quarantine)           3.70%
   19123   Ham -----------------------------------   94.14%
      47     Bad header passed                        0.23%
   19076     Clean passed                            93.91%
========   ================================================
    1982   SpamAssassin bypassed
      32   Released from quarantine
       2   DSN notification (debug supplemental)
       2   Bounce unverifiable
    2369   Whitelisted
       2   Blacklisted
      12   MIME error
      58   Bad header (debug supplemental)
      40   Extra code modules loaded at runtime
این گزارش نشان می‌دهد که ۹ هشدار عمومی وجود داشته است و Amavis در مجموع ۲۰۳۱۳ پیام را با حجم کلی ۱۰۰۸.۵۳ مگابایت یا ۱,۰۵۷,۵۲۴,۲۵۲ بایت پویش کرده است. گروه خلاصه بعدی نمای کلی Blocked / Passed (مسدود شده / عبور داده شده) را نشان می‌دهد، با ۱۱۹۰ پیام مسدود شده (تفکیک‌شده به صورت ۱۸ پیام مسدود شده به عنوان بدافزار، ۴ پیام با نام‌های ممنوعه، ۴۱۶ پیام هرزنامه، و ۷۵۲ پیام دور ریخته شده)، و ۱۹۱۲۳ پیام عبور داده شده (۴۷ پیام با سرایند نامعتبر و ۱۹۰۷۶ پیام پاک).

گروه‌بندی خلاصه‌ای بعدی (اختیاری)، وضعیت نهایی پیام‌ها را بر اساس دسته‌بندی محتوا نشان می‌دهد. ۱۸ پیام بدافزار و ۴ پیام فایل ممنوعه وجود داشته است (که همگی مسدود شده‌اند)، ۱۱۶۸ پیام هرزنامه که ۴۱۶ مورد از آن‌ها مسدود (قرنطینه) شده و ۷۵۲ مورد دور ریخته شده‌اند. در نهایت، ۱۹۱۲۳ پیام به عنوان Ham (پیام سالم، یعنی غیر هرزنامه) در نظر گرفته شده‌اند که ۴۷ مورد از آن‌ها حاوی سرایندهای نامعتبر بوده‌اند.

خلاصه‌های شمارشی دیگری نیز برای انواع رویدادها فهرست شده‌اند.

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

بخش مسدودسازی هرزنامه (Spam blocked) زیر از یک نمونه گزارش Detailed، ساختار سطح‌بندی سلسله‌مراتبی پایه‌ای amavis-logwatch را نشان می‌دهد:

****** Detailed *******************************************
   19346   Spam blocked -----------------------------------
     756      from@example.com
      12         10.0.0.2
      12            <>
      12         192.168.2.2
      12            <>
       5         192.168.2.1
     ...

ابزار amavis-logwatch از ورودی استاندارد (STDIN) یا از logfile مشخص‌شدهٔ Amavis می‌خواند. می‌توان چندین آرگومان logfile را مشخص کرد که هر کدام به ترتیب پردازش می‌شوند. کاربری که amavis-logwatch را اجرا می‌کند باید دسترسی خواندن روی هر یک از فایل‌های لاگ مشخص‌شده را داشته باشد. گزینه‌های فهرست‌شده در زیر بر عملکرد amavis-logwatch تأثیر می‌گذارند. گزینه‌هایی که جلوتر در خط فرمان مشخص می‌شوند بر گزینه‌های پیشین اولویت دارند. هر گزینه‌ای را می‌توان تا اندازه‌ای که ابهامی ایجاد نکند خلاصه کرد.

--[no]autolearn
خروجی گزارش یادگیری خودکار (autolearn) را فعال (غیرفعال) می‌کند. این گزارش تنها زمانی در دسترس است که $log_templ پیش‌فرض Amavis برای ارائه نتایج یادگیری خودکار در گزارش‌ها تغییر یافته باشد. این کار را می‌توان با خارج کردن دو خط از حالت کامنت در خود برنامه Amavis (جایی که الگوهای گزارش پیش‌فرض قرار دارند)، یا با افزودن صحیح متغیر $log_templ به فایل amavisd.conf انجام داد. فایل README.customize مربوط به Amavis را ببینید و نزدیکی انتهای برنامه Amavisd را برای «autolearn» جستجو کنید.
--[no]by_ccat_summary
خلاصه بر اساس دسته‌بندی محتوا را در بخش Summary فعال (غیرفعال) می‌کند. پیش‌فرض: فعال.
استفاده از فایل پیکربندی جایگزین config_file به جای حالت پیش‌فرض. این گزینه می‌تواند بیش از یک بار استفاده شود. چندین فایل پیکربندی به ترتیبی که در خط فرمان ارائه شده‌اند پردازش خواهند شد. بخش CONFIGURATION FILE را در زیر ببینید.
نمایش اطلاعات اشکال‌زدایی حین اجرای amavis-logwatch. پارامتر keywords شامل یک یا چند کلمه کلیدی است که با کاما یا فاصله از هم جدا شده‌اند. برای دریافت فهرست کلمات کلیدی معتبر، از --debug xxx استفاده کنید که در آن xxx هر کلمه کلیدی نامعتبری است.
حداکثر سطح جزئیات را برای amavis-logwatch روی level تنظیم می‌کند. این گزینه سراسری بوده و بر سایر محدودکننده‌های خروجی شرح‌داده‌شده در زیر اولویت دارد.

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

--[no]first_recip_only
مشخص می‌کند که هنگام اسکن پیام‌های دارای چند گیرنده، مرتب‌سازی و نمایش تنها بر اساس اولین گیرنده انجام شود یا خیر.
چاپ اطلاعات نحوه استفاده و توضیح مختصری درباره گزینه‌های خط فرمان.
مشخص می‌کند که آدرس‌های IP در جفت‌های نشانی/نام میزبان، با پهنای فیلدِ 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 هم‌معنی هستند.
بخش Detailed گزارش و تمام گزارش‌های تکمیلی را غیرفعال می‌کند. این گزینه سازوکار مناسبی برای غیرفعال‌سازی سریع تمام بخش‌های زیرمجموعه گزارش Detailed فراهم می‌کند، به طوری که گزینه‌های بعدی در خط فرمان می‌توانند یک یا چند بخش را برای ایجاد گزارش‌های خاص دوباره فعال کنند.
گزارش مطابقت با قوانین SpamAssassin (SpamAssassin Rules Hit) را فعال می‌کند. آرگومان‌های جداشده با کامای S و H به ترتیب مقادیر N تای برتر برای گزارش‌های Spam و Ham هستند و می‌توانند هر عدد صحیح بزرگ‌تر یا مساوی ۰ یا کلیدواژه all باشند. کلیدواژه default از مقادیر پیش‌فرض توکار استفاده می‌کند.
گزارش مطابقت با قوانین SpamAssassin را غیرفعال می‌کند.
گزارش صدک‌های زمان‌بندی SpamAssassin را فعال می‌کند. این گزارش را می‌توان با آرگومان nrows به N سطر برتر محدود کرد. این گزارش به Amavis نسخه 2.6+ و SpamAssassin نسخه 3.3+ نیاز دارد.
صدک‌های نمایش‌داده‌شده در گزارش زمان‌بندی‌های SpamAssassin را مشخص می‌کند. آرگومان‌های P1 ... اعدادی صحیح شامل ۰ تا ۱۰۰ هستند. ترتیب آن‌ها در گزارش حفظ خواهد شد.
گزارش زمان‌بندی‌های SpamAssassin را غیرفعال می‌کند.
چاپ اطلاعات نسخه amavis-logwatch.
گزارش توزیع فراوانی امتیاز هرزنامه (Spam Score Frequency) را فعال می‌کند. آرگومان‌های B1 ... دسته‌های توزیع فراوانی هستند و می‌توانند هر عدد حقیقی باشند. ترتیب آن‌ها در گزارش حفظ خواهد شد. کلیدواژه default از مقادیر پیش‌فرض توکار استفاده می‌کند.
گزارش Spam Score Frequency را غیرفعال می‌کند.
گزارش صدک‌های امتیاز هرزنامه (Spam Score Percentiles) را فعال می‌کند. آرگومان‌های P1 ... صدک‌های نمایش‌داده‌شده در گزارش را مشخص می‌کنند و اعدادی صحیح از ۰ تا ۱۰۰ هستند. کلیدواژه default از مقادیر پیش‌فرض توکار استفاده می‌کند.
گزارش Spam Score Percentiles را غیرفعال می‌کند.
--[no]sect_vars
افزودن نام محدودکننده سطح هر بخش به عنوان آن در بخش Detailed را فعال (غیرفعال) می‌کند. نام نمایش‌داده‌شده، همان گزینه خط فرمان (یا متغیر فایل پیکربندی) است که برای محدود کردن خروجی آن بخش استفاده شده است. با توجه به تعداد زیاد محدودکننده‌های سطح موجود در amavis-logwatch، این روش سازوکار مناسبی برای تعیین دقیق محدودکننده‌ای است که بر یک بخش اثر می‌گذارد.
--[no]startinfo
گزارش راه‌اندازی Amavis را فعال (غیرفعال) می‌کند که جزئیات جدیدترین راه‌اندازی Amavis را نمایش می‌دهد.
--[no]summary
نمایش بخش Summary گزارش را فعال (غیرفعال) می‌کند. متغیر Amavis_Show_Summary در فایل پیکربندی استفاده می‌شود.
نام سرویس syslog را که amavis-logwatch برای تطبیق خطوط syslog استفاده می‌کند مشخص می‌سازد. تنها خطوط گزارشی که نام سرویس آن‌ها با عبارت منظم پرل namepat مطابقت داشته باشد توسط amavis-logwatch استفاده خواهند شد؛ تمام خطوط غیرمنطبق نادیده گرفته می‌شوند. این قابلیت زمانی سودمند است که بسته Amavis از پیش نصب‌شده از نامی به غیر از نام پیش‌فرض (amavis) استفاده کند.

نکته: اگر در عبارت منظم خود از پرانتز استفاده می‌کنید، مطمئن شوید که غیرگیرنده (non-capturing) هستند: به جای (pattern) از (?:pattern) استفاده کنید.

گزارش صدک‌های زمان‌بندی اسکن Amavis را فعال می‌کند. این گزارش را می‌توان با آرگومان percent به N درصد برتر محدود کرد.
صدک‌های نمایش‌داده‌شده در گزارش زمان‌بندی‌های اسکن را مشخص می‌کند. آرگومان‌های P1 ... اعدادی صحیح شامل ۰ تا ۱۰۰ هستند. ترتیب آن‌ها در گزارش حفظ خواهد شد.
گزارش زمان‌بندی‌های اسکن Amavis را غیرفعال می‌کند..IP "--version" نمایش اطلاعات نگارش amavis-logwatch.

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

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

بخش‌های دسته‌بندی محتوای اصلی Amavis (ccatmajor)، به ترتیب اولویت: VIRUS, BANNED, UNCHECKED, SPAM, SPAMMY, BADH, OVERSIZED, MTA, CLEAN.

پیام‌های مسدودشده یا عبورداده‌شده که حاوی بدافزار هستند (ccatmajor: VIRUS).
پیام‌های مسدودشده یا عبورداده‌شده که حاوی نام‌های ممنوع در بخش‌های MIME هستند (ccatmajor: BANNED).
پیام‌های مسدودشده یا عبورداده‌شده که توسط یک اسکنر ویروس یا SpamAssassin بررسی نشده‌اند (Amavis ccatmajor: UNCHECKED).
پیام‌های مسدودشده یا عبورداده‌شده که هرزنامه در نظر گرفته شده و به سطح حذف رسیده‌اند (Amavis ccatmajor: SPAM).
پیام‌های مسدودشده یا عبورداده‌شده که هرزنامه در نظر گرفته شده‌اند، اما به سطح حذف نرسیده‌اند (Amavis ccatmajor: SPAMMY).
پیام‌های مسدودشده یا عبورداده‌شده که حاوی سرایندهای نامعتبر ایمیل هستند (ccatmajor: BAD-HEADER).
پیام‌های مسدودشده یا عبورداده‌شده که بیش از حد بزرگ در نظر گرفته شده‌اند (Amavis ccatmajor: OVERSIZED).
پیام‌های مسدودشده یا عبورداده‌شده به دلیل شکست در تزریق مجدد به MTA (Amavis ccatmajor: MTA-BLOCKED). وقوع این رویداد نشان‌دهنده یک مشکل در پیکربندی است. [یادداشت: تصور نمی‌شود mtapassed رخ دهد، اما جهت کامل بودن ذکر شده است.]
پیام‌های مسدودشده یا عبورداده‌شده که در هیچ‌یک از دسته‌بندی‌های محتوای اصلی دیگر قرار نمی‌گیرند (Amavis ccatmajor: OTHER).
پیام‌های مسدودشده یا عبورداده‌شده که با یک شکست موقت مواجه شده‌اند (Amavis ccatmajor: TEMPFAIL).
پیام‌های مسدودشده یا عبورداده‌شده که پاک در نظر گرفته شده‌اند (Amavis ccatmajor: CLEAN؛ یعنی غیرهرزنامه، غیرویروسی).

سایر بخش‌ها، به ترتیب الفبا:

مشکلات اتصال به اسکنر(های) ضدویروس.
پایان مهلت زمانی در انتظار پاسخ از اسکنر(های) ضدویروس.
مشکلات استخراج آرشیو.
اطلاعات تکمیلی اشکال‌زدایی درباره پیام‌های حاوی سرایندهای نامعتبر ایمیل.
بسامد پیام‌ها بر اساس بخش‌های احتمالاتی بیزی (Bayesian).
نحو نامعتبر نشانی ایمیل.
پیام‌هایی که در فهرست سیاه (نرم) قرار گرفته‌اند. همچنین Whitelisted را در ادامه ببینید.
وضعیت رسیدگی به پیام‌های برگشتی (DSN) دریافتی.
تفکیک پیوست‌های MIME بر اساس نوع/زیرنوع.
خطاهای رخ‌داده با DCC یا بازگردانده‌شده از آن.
خطاهای رخ‌داده در طول فرایند بی‌خطرسازی (defang).
پیام‌های بی‌خطرسازی‌شده (بی‌ضرر شده).
خطاهای رخ‌داده هنگام تلاش برای ارسال اعلان وضعیت تحویل.
اعلان وضعیت تحویل (DSN) که به‌طور عمدی فرونشانی شده است.
ماژول‌های کد اضافی که Amavis در زمان اجرا بارگذاری کرده است.
نشانی‌های فرستنده جعلی، بر اساس تشخیص Amavis.
رویدادهای مهلک. این موارد در بالای گزارش نمایش داده می‌شوند، زیرا ممکن است نیازمند توجه باشند.
شکست‌ها در تحویل به یک نشانی محلی.
تفکیک بدافزار بر اساس اسکنر(هایی) که بدافزار را شناسایی کرده‌اند.
خطاهای رخ‌داده در حین استخراج MIME.
رویدادهای سراسیمگی (Panic). این موارد در بالای گزارش نمایش داده می‌شوند، زیرا ممکن است نیازمند توجه باشند.
تطابق‌های اثرانگشت غیرفعال (p0f)، گروه‌بندی‌شده بر اساس نوع محتوای ایمیل (ویروس، بررسی‌نشده، ممنوع، هرزنامه، سالم)، سپس بر اساس رده سیستم‌عامل، و در نهایت بر اساس نشانی IP. نکته: سیستم‌های Windows بر اساس نگارش سیستم‌عامل ویندوز تفکیک می‌شوند، در حالی که نگارش‌های سایر سیستم‌عامل‌ها به‌صورت کلی گروه‌بندی می‌گردند.
پیام‌هایی که از قرنطینه Amavis آزاد شده‌اند.
اطلاعات تشخیصی گزارش‌شده از سوی SpamAssassin.
پاسخ‌های SMTP دریافت شده در طول گفتگو با MTA. این ورودی‌های لاگ اساساً مربوط به اشکال‌زدایی هستند.
دایرکتوری‌های موقتی حفظ‌شده توسط Amavis در هنگامی که مؤلفه‌ای با مشکل یا شکست مواجه می‌شود. دایرکتوری‌های فهرست‌شده و ورودی‌های گزارش متناظر آن‌ها باید برای بررسی مشکلات ارزیابی شوند.
پیام‌هایی که اسکن آن‌ها توسط یک اسکنر ویروس ممکن نبوده است.
رویدادهای هشدار که در هشدارهای خاص زیر دسته‌بندی نشده‌اند. این موارد در بالای گزارش نمایش داده می‌شوند، زیرا ممکن است نیازمند توجه باشند.
نشانی‌های ایمیل ناقص که به منظور ایمنی توسط Amavis اصلاح شده‌اند.
تلاش‌ها برای آزادسازی یک پیام قرنطینه‌شده که فاقد سرایند X-Quarantine-ID بوده است.
پیکربندی یا ابزار ناامن استفاده‌شده توسط Amavis.
شکست‌ها در طول مکالمه SMTP با MTA.
شکست در برقراری ارتباط با، یا پاسخ‌های خطای دریافتی از، سرویس SQL..IP "Whitelisted" پیام‌هایی که (به‌صورت نرم) در فهرست سفید قرار گرفته‌اند. همچنین Blacklisted در بالا را ببینید.


بخش 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 را نشان می‌دهد. می‌توانید این را مانند جمع کردن هر مورد در زیرسطح 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 مورد برتر، مانند 10 فرستنده برتر، مطلوب باشد. مقدار "3:10:" برای levelspec، داده‌های سطح 3 را تنها به 10 مورد با بیشترین تکرار محدود می‌کند.

پس از گذر از این مثال‌های ساده، یک 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 برای محدود کردن خروجی گنجانده شود.

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

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

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

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

برای گنجاندن یک گزینهٔ خط فرمان در فایل پیکربندی، پیشوند «$amavis_» را به نام گزینهٔ خط فرمان اضافه کنید. تنظیمات فایل پیکربندی و گزینهٔ خط فرمان زیر معادل یکدیگرند:

$amavis_Line_Style = Truncate
--line_style Truncate
محدودکننده‌های سطح (Level limiters) نیز با $amavis_ پیشوندگذاری می‌شوند، اما در خط فرمان با گزینهٔ --limit مشخص می‌گردند:
$amavis_SpamBlocked = 2
--limit SpamBlocked=2

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

گزینه‌های خط فرمان هنگام مواجهه در خط فرمان تفسیر می‌شوند، و گزینه‌های بعدی گزینه‌های قبلاً تنظیم‌شده را بازنویسی خواهند کرد.

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

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

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

amavis-logwatch file

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

amavis-logwatch --help

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

amavis-logwatch --detail 1 file

برای تولید یک گزارش خلاصه و یک گزارش جزئیات تک‌سطحی برای ۲۵ مه:

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

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

amavis-logwatch --nosummary --nodetail \
   --limit spamblocked '1 1:10:' file

دستور زیر و خروجی نمونهٔ آن، مثال پیچیده‌تری از محدودکنندهٔ سطح را نشان می‌دهد. این دستور ۴ گیرندهٔ برتر مسدودشده به عنوان هرزنامه (سطح ۱)، و در زیر هر گیرنده ۲ آدرس IP ارسال‌کنندهٔ برتر (سطح ۲)، و سرانجام زیر آن تنها نشانی‌های envelope from (سطح ۳) با تعداد رخداد بیشتر از ۶ را ارائه می‌دهد. علامت‌های سه‌نقطه نشان‌دهندهٔ داده‌های Nتای برتر یا محدودشده با آستانه هستند:

amavis-logwatch --nosummary --nodetail \
        --limit spamblocked '1:4: 2:2: 3::6' file
19346   Spam blocked -----------------------------------
  756      joe@example.com
   12         10.0.0.1
   12            <>
   12         10.99.99.99
   12            <>
	     ...
  640      fred@example.com
    8         10.0.0.1
    8            <>
    8         192.168.3.19
    8            <>
	     ...
  595      peter@sample.net
    8         10.0.0.1
    8            <>
    7         192.168.3.3
    7            <>
	     ...
  547      paul@example.us
    8         192.168.3.19
    8            <>
    7         10.0.0.1
    7            <>
 	      ...
	   ...
نکته: نسخه‌های Logwatch پیش از 7.3.6، مگر اینکه طور دیگری پیکربندی شده باشند، به گزینه --print برای چاپ در STDOUT به‌جای ارسال گزارش‌ها از طریق ایمیل نیاز داشتند. از نسخه 7.3.6 به بعد، STDOUT مقصد پیش‌فرض خروجی است و گزینه --print با --output stdout جایگزین شده است. پیکربندی خود را بررسی کنید تا مشخص شود خروجی گزارش به کجا هدایت می‌شود، و گزینه مناسب را به دستورهای زیر اضافه کنید.

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

logwatch --service amavis --range today --detail 1

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

logwatch --service amavis --range today --detail 5

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

logwatch --service amavis --range yesterday --detail 6

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

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

logwatch --service amavis --range today --detail 10
مشابه بالا، اما خطوط طولانی را بدون برش رها می‌کند:

logwatch --service amavis --range today --detail 11

هنگامی که مقدار متغیر $log_level فراتر از مقدار پیش‌فرض 0 افزایش یابد، Amavis اطلاعات لاگ بیشتری ارائه می‌دهد. این اطلاعات توسط ابزار amavis-logwatch برای ارائه گزارش‌های اضافی استفاده می‌شود که با مقدار پیش‌فرض $log_level=0 در دسترس نیستند. مقدار 2 برای $log_level پیشنهاد می‌شود.

اگر ترجیح می‌دهید حجم پیام‌های زائد (noise) را در لاگ‌های اصلی ایمیل یا لاگ‌های Amavis خود افزایش ندهید، می‌توانید syslog را به‌گونه‌ای پیکربندی کنید که خروجی Amavis را در چندین فایل لاگ ثبت کند؛ به‌طوری که ورودی‌های پایه به لاگ(های) اصلی ایمیل شما و ورودی‌های دارای جزئیات بیشتر به یک فایل لاگ اختصاصی Amavis جهت تغذیه ابزار amavis-logwatch هدایت شوند.

یک راه مناسب برای انجام این کار، تغییر متغیرهای پیکربندی Amavis در فایل amavisd.conf به صورت زیر است:

amavisd.conf:
    $log_level = 2;
    $syslog_facility = 'local5';
    $syslog_priority = 'debug';

این کار $log_level را به 2 افزایش داده و ورودی‌های لاگ Amavis را به یک facility جایگزین در syslog (مانند local5،‏ user) ارسال می‌کند، که سپس می‌تواند به یک یا چند فایل لاگ، از جمله فایل لاگ اصلی ایمیل شما هدایت شود:

syslog.conf:
    #mail.info                         -/var/log/maillog
    mail.info;local5.notice            -/var/log/maillog
    local5.info                        -/var/log/amavisd-info.log

پیام‌های معمول Amavis با $log_level برابر 0 هم به maillog و هم به فایل amavisd-info.log هدایت خواهند شد، اما پیام‌های با $log_level بالاتر فقط به فایل amavisd-info.log فرستاده می‌شوند. برای اطلاعات بیشتر درباره لاگ‌گیری در Amavis، فایل RELEASE_NOTES را در توزیع Amavis برای عبارت زیر جستجو کنید:

    "syslog priorities are now dynamically derived"

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

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

/etc/logwatch/scripts/services/amavis
فیلتر amavis در Logwatch
/etc/logwatch/conf/services/amavis.conf
فایل پیکربندی فیلتر amavis در Logwatch

logwatch(8)، تحلیل‌گر و گزارش‌دهنده لاگ‌های سیستم

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

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

Mike Cappella

فیلتر اولیه Logwatch برای amavis توسط Jim O'Halloran نوشته شده و در طول سال‌ها مشارکت‌کنندگان بسیاری داشته است. از زمانی که نویسنده فعلی کد منبع را تغییر داده است، آن‌ها مطلقا هیچ مسئولیتی در قبال خطاها، مشکلات یا خرابی‌های احتمالی ندارند.