| PFLOGSUMM(1) | User Contributed Perl Documentation | PFLOGSUMM(1) |
نام (NAME)
pflogsumm - تولید خلاصه از فایلهای لاگ Postfix MTA
حق نشر (C) 1998-2026 متعلق به James S. Seymour، نسخهٔ 1.2.0
خلاصه دستور (SYNOPSIS)
pflogsumm [--config <file>] [--bounce-detail <cnt>] [--colwidth <n>] [-d|--date-range <date [range]>] [--deferral-detail <cnt>] [--detail <cnt>] [--dow0mon] [-e|--extended-detail] [--expired-detail <cnt>] [-h|--host-cnt <cnt>] [-i|--ignore-case] [--iso-date-time] [-m|--uucp-mung] [--mailq] [--no-no-msg-size] [--problems-first] [--pscrn-detail <cnt>] [--pscrn-stats] [-q|--quiet] [--rej-add-from] [--rej-add-to] [--reject-detail <cnt>] [--smtpd-stats] [--srs-mung] [--ssl-tls-stats] [--syslog-name <string>] [-u|--user-cnt <cnt>] [--unprocd-file <filename>] [--use-orig-to] [--verbose-msg-detail] [--verp-mung [n]] [--warning-detail <cnt>] [-x|--debug <file>] [--zero-fill] [file1 [filen]]
pflogsumm --[dump-config|help|version] نکته: در مواردی که هر دو شکل کوتاه و بلند گزینهها وجود دارند، تنها شکل دوم (کوتاه) در بالا نمایش داده شده است. برای معادلهای شکل بلند به صفحهٔ man مراجعه کنید. در صورت تعیین نشدن فایل، ورودی از stdin خوانده میشود. خروجی به stdout و خطاها به stderr هدایت میشوند.
توضیحات (DESCRIPTION)
Pflogsumm یک تحلیلگر و خلاصهساز لاگ برای Postfix MTA است. این ابزار
به گونهای طراحی شده است که یک نمای کلی از فعالیتهای Postfix با جزئیات
کافی فراهم آورد تا مدیر سیستم را از نقاط مشکلساز احتمالی مطلع سازد.
Pflogsumm خلاصهها و در برخی موارد گزارشهای تفصیلی از حجم ترافیک
سرور ایمیل، ایمیلهای ردشده و برگشتخورده، و هشدارها، خطاها و خطاهای
بحرانی (panics) سرور تولید میکند.
--bounce-detail <cnt>
محدود کردن گزارشهای تفصیلی برگشت پیام (bounce) به <cnt> مورد نخست.
مقدار 0 برای بازداری و عدم نمایش کامل.
--config <config file>
مسیر فایل پیکربندیِ حاوی گزینههای pflogsumm.
از تمام گزینههای استاندارد خط فرمان (بدون «-» یا «--» ابتدایی)
پشتیبانی میکند. گزینههایی مانند «config»، «dump-config»، «help»
و «version» نیز از نظر فنی در اینجا کار میکنند، هرچند در این زمینه
چندان مفید نیستند.
آرگومانهای خط فرمان مقادیر فایل پیکربندی را بازنویسی (override)
میکنند، مگر در مورد گزینههای بولی (boolean).
--colwidth <n>
حداکثر عرض خروجی گزارش. پیشفرض 80 ستون است.
0 = نامحدود.
نکته: --verbose-msg-detail این مقدار را بازنویسی میکند.
-d <arg>
--date-range <arg>
محدود کردن گزارش به تاریخ یا بازه زمانی مشخصشده.
مقادیر پذیرفتهشده:
today
yesterday
"this week" / "last week"
"this month" / "last month"
YYYY-MM[-DD]
"YYYY-MM[-DD] YYYY-MM[-DD]"
این گزینهها عملکردی مطابق نامشان دارند، اما با یک
نکته هشداردهنده مهم:
تاریخها و بازههای زمانی به سبک ISO 8601 / RFC 3339 ممکن است
هنگام استفاده با قالبهای سنتی لاگ که فاقد اطلاعات سال هستند
("month day-of-month") نتایج دقیقی نداشته باشند.
در چنین مواردی، pflogsumm فرض میکند ورودیهای لاگ مربوط
به سال جاری هستند. برای نمونه، اگر ماه جاری آوریل باشد و لاگ
شامل ورودیهای «Apr NN» از سال گذشته باشد، به عنوان آوریل
*جاری* تفسیر خواهند شد.
بنابراین، پالایش مبتنی بر تاریخ در فایلهای لاگ سبک سنتی/قدیمی
تنها برای ورودیهایی با قدمت کمتر از حدود 365 روز قابل اعتماد است.
آرگومانهای حاوی فاصله باید در علامت نقلقول قرار گیرند!
آرگومانهای this/last week/month برای بینیازی از نقلقول
میتوانند به جای فاصله از زیرخط (underscore) استفاده کنند؛ مثلاً:
--date-range last_week
بازههای تاریخی ISO 8601/RFC 3339 برای خوانایی بهتر میتوانند
به صورت اختیاری از خط پیوند یا کلمه "to" استفاده کنند؛ مثلاً:
"2025-08-01 to 2025-08-08"
اگر روز اختیاری (DD) حذف شود، بازه شامل کل ماه میشود؛ مثلاً:
2025-08 == 2025-08-01 تا 2025-08-31
"2025-07 - 2025-08" == 2025-07-01 - 2025-08-31
--debug <file>
فعالسازی اشکالزدایی و ثبت در <file>
همچنین ببینید: -x
--dow0mon
روز نخست هفته به جای یکشنبه، دوشنبه در نظر گرفته میشود.
(تنها برای محاسبات this/last week استفاده میشود.)
--deferral-detail <cnt>
محدود کردن گزارشهای تفصیلی تعویق (deferral) به <cnt> مورد نخست.
0 برای بازداری کامل.
--detail <cnt>
تنظیم تمام گزینههای --*-detail و -h و -u روی <cnt>. با
تنظیمات جداگانه لغو (override) میشود. مقدار --detail 0
از نمایش *تمام* جزئیات جلوگیری میکند.
--dump-config
تخلیه پیکربندی در STDOUT و خروج.
این گزینه هم به عنوان کمکی برای اشکالزدایی و هم روشی برای
ایجاد نخستین فایل پیکربندی شما کاربرد دارد. برای مورد دوم:
به سادگی خط فرمان همیشگی pflogsumm خود را اجرا کرده، گزینه
--dump-config را به آن بیفزایید و خروجی STDOUT را به یک فایل هدایت کنید.
برای تمیزتر شدن خروجی: تنظیمات پیشفرض ستنشده را حذف کنید:
pflogsumm --dump-config <add'l args> |grep -v ' = $'
--expired-detail <cnt>
محدود کردن گزارشهای تفصیلی انقضای زمان صف پیام به <cnt> مورد نخست.
0 برای بازداری کامل.
-e
--extended-detail
جزئیات گسترده (مفرط؟ بیش از حد؟)
تولید گزارشهای تفصیلی. در حال حاضر، این فقط شامل یک گزارش به ازای
هر پیام است که بر پایه دامنه فرستنده، سپس کاربر درون دامنه و سپس
بر اساس شناسه صف (queue i.d.) مرتب شده است.
هشدار: دادههای جمعآوریشده برای ایجاد این گزارش میتوانند در صورت
پردازش تعداد زیادی از ورودیهای لاگ، به سرعت مقدار بسیار زیادی
حافظه مصرف کنند!
-h <cnt>
--host-cnt <cnt>
تعداد <cnt> مورد برتر برای نمایش در گزارشهای میزبان/دامنه.
0 = هیچکدام.
همچنین ببینید: گزینههای «-u» و «--*-detail» برای گزینههای بیشتر
جهت محدودسازی گزارش.
--help نمایش پیام کوتاه نحوه استفاده و خروج.
(بر حسب تصادفی خوشایند، «-h» به تنهایی عملکردی مشابه دارد، زیرا
به یک آرگومان عددی نیاز دارد :-). بله، میدانم: نچسب است.)
-i
--ignore-case
مدیریت آدرس کامل رایانامه بدون حساسیت به حروف بزرگ و کوچک
(case-insensitive).
به طور معمول pflogsumm تنها بخشهای میزبان و دامنه را به حروف
کوچک تبدیل کرده و به بخش کاربر کاری ندارد. این گزینه باعث میشود
کل نشانی ایمیل به حروف کوچک تبدیل شود.
--iso-date-time
برای خلاصههایی که شامل اطلاعات تاریخ یا زمان هستند، استفاده از
قالبهای استاندارد ISO 8601 (به صورت CCYY-MM-DD و HH:MM)،
به جای «Mon DD CCYY» و «HHMM».
-m اصلاح (دستکاری؟) bang-pathهای سبک UUCP
این گزینه برای زمانی است که ترکیبی از آدرسهای دامنه اینترنتی و
bang-pathهای سبک UUCP در لاگ وجود دارد. فیدهای بالادستی UUCP
گاهی آدرسهای دامنه اینترنتی را به bang-path تبدیل میکنند. این گزینه
گاهی میتواند این دستکاری را به حالت اول بازگرداند. برای نمونه:
«somehost.dom!username@foo» (که در آن «foo» میزبان بالادستی بعدی
و «somehost.dom» مبدأ رایانامه بوده است) به «foo!username@somehost.dom»
تبدیل خواهد شد. این گزینه بر گزارش تفصیلی گسترده (-e) نیز تأثیر میگذارد
تا مرتبسازی بر اساس دامنه و نام دقیقتر صورت گیرد.
همچنین ببینید: --uucp-mung
--mailq اجرای دستور "mailq" در پایان گزارش.
صرفاً قابلیتی برای راحتی کار است. (فرض میکند که "mailq" در
مسیر $PATH قرار دارد. در صورت تمایل برای تعیین این مسیر متغیر
"$mailqCmd" را ببینید.)
--no-no-msg-size
عدم تولید گزارش برای "Messages with no size data".
اندازه پیام تنها توسط مدیر صف (qmgr) گزارش میشود. ممکن است پیام
آنقدر پس از (آخرین) ورودی لاگ qmgr تحویل داده شود که اطلاعات آن در
لاگ(های) پردازششده در یک اجرای خاص از pflogsumm وجود نداشته باشد.
این امر باعث به هم ریختن «Recipients by message size» و مجموع
«bytes delivered» میشود. این موارد به طور معمول توسط pflogsumm
تحت عنوان "Messages with no size data" گزارش میشوند.
--problems-first
تولید گزارشهای «مشکلات» (برگشتها، تعویقها، هشدارها و غیره)
پیش از آمارهای «عادی».
--pscrn-detail <cnt>
محدود کردن گزارش تفصیلی postscreen به <cnt> سطر نخست از هر رویداد.
0 برای بازداری کامل.
نکته: موارد رد شده (rejects) توسط postscreen در هر صورت جمعآوری
و گزارش میشوند.
--pscrn-stats
جمعآوری و انتشار آمارهای خلاصهشده postscreen.
نکته: موارد رد شده (rejects) توسط postscreen در هر صورت جمعآوری
و گزارش میشوند.
--rej-add-from
برای آن دسته از گزارشهای رد که آدرسهای IP یا نامهای میزبان/دامنه
را فهرست میکنند: افزودن آدرس فرستنده (from) ایمیل به هر ورودی.
(شامل گزارش "Improper use of SMTP command pipelining" نمیشود.)
-q
--quiet
حالت بیصدا - عدم چاپ سربرگها برای گزارشهای خالی
نکته: سربرگهای مربوط به پیامهای warning، fatal و "master"
همواره چاپ خواهند شد.
--rej-add-to
برای گزارشهای رد فرستنده: افزودن آدرس گیرنده مد نظر.
--reject-detail <cnt>
محدود کردن گزارشهای تفصیلی reject، warn، hold و discard در smtpd
به <cnt> مورد نخست. 0 برای بازداری کامل.
--smtp-detail <cnt>
منسوخ شده است (Deprecated)
--smtpd-stats
تولید آمار اتصالات smtpd.
گزارش "per-day" برای گزارشهای تکروزه تولید نمیشود. برای گزارشهای
چندروزه: ارقام "per-hour" میانگینهای روزانه هستند (که در سربرگ
گزارش منعکس شده است).
--smtpd-warning-detail <cnt>
منسوخ شده است. به جای آن از --warning-detail استفاده کنید.
محدود کردن گزارشهای تفصیلی هشدارهای smtpd به <cnt> مورد نخست.
0 برای بازداری کامل.
--srs-mung
بازگردانی دستکاری آدرسهای SRS.
اگر در نصب Postfix شما یک پلاگین SRS فعال باشد، بسیاری از آدرسها
در گزارش شامل نشانیهای ایمیل در قالب SRS خواهند بود، حتی برای
نشانیهای غیرمحلی (مانند فرستندهها). این گزینه سعی میکند تغییرات
را به حالت اول برگرداند.
آدرسهایی به فرمت:
SRS0=A6cv=PT=sender.example.com=support@srs.example.net
به مقدار اصلی خود بازنویسی خواهند شد:
support@sender.example.com
--syslog-name=name
تعیین syslog-name برای جستجوی ورودیهای لاگ Postfix.
به طور پیشفرض، pflogsumm به دنبال ورودیهایی در فایلهای لاگ میگردد
که نام syslog آنها برابر با مقدار پیشفرض "postfix" باشد. اگر مقدار
غیرپیشفرضی برای پارامتر "syslog_name" در پیکربندی Postfix خود تنظیم
کردهاید، از این گزینه برای اعلام آن به pflogsumm استفاده کنید.
توضیحات پیرامون استفاده از این گزینه را در بخش «نکات (NOTES)»
در ادامه ببینید.
--ssl-tls-stats
گزارش آمار SMTP TLS و خطاهای SMTPD SSL/TLS.
-u <cnt>
--user-cnt <cnt>
تعداد <cnt> مورد برتر برای نمایش در گزارشهای کاربر. 0 == هیچکدام.
همچنین ببینید: گزینههای «-h» و «--*-detail» برای تنظیمات بیشترِ
محدودکننده گزارش.
--unprocd-file <filename>
خروجی دادن خطوط پردازشنشده فایل لاگ به فایل <filename>
--use-orig-to
در هر جایی که فیلدهای "orig_to" یافت شوند، گزارش آن به جای
آدرس "to".
--uucp-mung
اصلاح (دستکاری؟) bang-pathهای سبک UUCP
همچنین ببینید: -m
--verbose-msg-detail
برای خلاصههای تعویق، برگشت و رد پیام: نمایش «دلیل» کامل به جای
یک متن کوتاه و ناقص.
نکته: این گزینه میتواند باعث طولانی شدن خطوط در گزارش شود.
--verp-mung [n]
اگر n = 1 باشد یا تعیین نشود، دستکاری پایه آدرس «VERP» انجام میگیرد
و نشانیهای فرستنده به شکل:
"list-return-NN-someuser=some.dom@host.sender.dom"
به این شکل تبدیل میشوند:
"list-return-ID-someuser=some.dom@host.sender.dom"
به بیان دیگر: مقدار عددی با "ID" جایگزین میشود.
اگر n = 2 باشد، تبدیل تهاجمیتر بوده و آدرس را به چیزی مانند زیر
تبدیل میکند:
"list-return@host.sender.dom"
در رابطه با این گزینه بخش «نکات (NOTES)» را ببینید.
--version چاپ نام برنامه و نسخه و سپس خروج.
--warning-detail <cnt>
محدود کردن گزارشهای تفصیلی هشدارها به <cnt> مورد نخست.
0 برای بازداری کامل.
-x <file> فعالسازی اشکالزدایی در <file>
همچنین ببینید: --debug
--zero-fill «پر کردن با صفر» (Zero-fill) آرایههایی خاص تا گزارشها با
دادههایی در ستونهایی نمایش یابند که در غیر این صورت خالی میماندند..Ve
مقدار بازگشتی (RETURN VALUE)
دستور Pflogsumm مقدار خاصی را به پوسته برنمیگرداند.
خطاها (ERRORS)
پیامهای خطا به stderr ارسال میشوند.
مثالها (EXAMPLES)
تولید یک گزارش از فعالیتهای روز گذشته:
pflogsumm -d yesterday /var/log/maillog
گزارشی از فعالیتهای هفته پیش:
pflogsumm -d last_week /var/log/maillog.0
آنچه تا این لحظه در امروز رخ داده است:
pflogsumm -d today /var/log/maillog
مدخل crontab برای تولید گزارش فعالیتهای روز گذشته
در ۱۰ دقیقه پس از نیمهشب:
10 0 * * * /usr/local/sbin/pflogsumm -d yesterday /var/log/maillog
2>&1 |/usr/bin/mailx -s "`uname -n` daily mail stats" postmaster
مدخل crontab برای تولید یک گزارش از فعالیتهای هفته پیش:
10 4 * * 0 /usr/local/sbin/pflogsumm -d "last week" /var/log/maillog.0
2>&1 |/usr/bin/mailx -s "`uname -n` weekly mail stats" postmaster
(دو مثال crontab بالا در عمل هر کدام باید در یک خط
منفرد باشند. آنها به دلیل محدودیتهای قالببندی صفحه
به دو یا چند خط تقسیم شدهاند.)
استفاده از یک فایل پیکربندی:
pflogsumm --config /usr/local/etc/pflogusmm/daily.conf
استفاده از یک فایل پیکربندی و بازنویسی گزینههای فایل پیکربندی در
خط فرمان:
pflogsumm --config /usr/local/etc/pflogsumm/daily.conf
--detail 30
این کار *تمام* تنظیمات detail در فایل پیکربندی را بازنویسی کرده
و مقدار همه آنها را روی 30 قرار میدهد.
pflogsumm --config /usr/local/etc/pflogsumm/daily.conf
--detail 30 --host-cnt 10
این کار تمام تنظیمات detail در فایل پیکربندی را بازنویسی کرده
و همه را روی 30 قرار میدهد؛ همچنین تنظیم سراسری detail نیز به نوبه خود
برای host count با مقدار 10 بازنویسی میشود.
همچنین ببینید (SEE ALSO)
pffrombyto, pftobyfrom پرسشهای متداول pflogsumm: pflogsumm-faq.txt.
نکات (NOTES)
برخی گزینهها، مانند بازه زمانی، هم نام کوتاهشکل و هم
بلندشکل دارند. به منظور رعایت اختصار، تنها شکلهای کوتاه
گزینهها در خلاصه دستور (SYNOPSIS) و در خروجی "help"
دستور pflogsumm نشان داده شدهاند.
ابزار Pflogsumm هیچ تلاشی برای به دام انداختن/تجزیه مدخلهای لاگ
غیر Postfix انجام نمیدهد. مگر اینکه "postfix/" در مدخل لاگ وجود داشته
باشد، در غیر این صورت نادیده گرفته خواهد شد.
بسیار مهم است که لاگها با ترتیب زمانی (chronological) به pflogsumm ارائه
شوند تا اندازه پیامها در زمان نیاز در دسترس
باشند.
برای مقاصد نمایشی: مقادیر صحیح با فراتر رفتن از مقادیری معین، به
نمادهای "kilo" و "mega" تبدیل میشوند. من مرزهای مسلماً اختیاری
512k و 512m را به عنوان نقاط انجام این کار انتخاب کردم--با این فرض
که 512x بزرگترین عددی (از نظر تعداد رقم) است که اکثر افراد میتوانند در یک نگاه به راحتی
متوجه شوند. اینها "k" و "m" محاسباتی هستند، نه ۱۰۰۰ و ۱٬۰۰۰٬۰۰۰.
شما میتوانید به راحتی همه اینها را با برخی مقادیر ثابت در نزدیکی
ابتدای برنامه تغییر دهید.
گزارشهای "Items-per-day" برای گزارشهای یکروزه تولید
نمیشوند. برای گزارشهای چندروزه: ارقام "Items-per-hour" میانگینهای
روزانه هستند (که در سربرگهای گزارش بازتاب یافته است).
پیامهای رد شده (rejects)، هشدارهای رد شدن (reject warnings)، نگهداشتهشدهها (holds)
و دور انداختهشدهها (discards) همگی زیر ستون "rejects" برای خلاصههای
ترافیک ساعتی (Per-Hour) و روزانه (Per-Day) گزارش میشوند.
تبدیل Verp ممکن است همیشه منجر به کاهش صحیح آدرس و
تعداد آدرس نشود.
تبدیل Verp همواره در وضعیت آزمایشی قرار دارد. استفاده
از این گزینه ممکن است منجر به آمارهای نادرست در ارتباط با
تعداد "senders" گردد.
مدیریت مسیرهای bang به سبک UUCP نیاز به کار بیشتری دارد. به ویژه اگر
Postfix با "swap_bangpath = yes" اجرا نشود و/یا با "append_dot_mydomain = yes"
اجرا *شود*، ممکن است گزارش تفصیلی بر پایه پیام به درستی بر اساس
دامنه و کاربر مرتب نشود. (همچنین گمان میکنم به MTA بالادستی نیز بستگی
داشته باشد.)
ارقامی نظیر "درصد رد شده" (percent rejected) و "درصد دور انداخته شده" (percent discarded) تنها
تقریبی هستند. آنها به شرح زیر محاسبه میشوند (مثال برای
"percent rejected"):
percent rejected =
(rejected / (delivered + rejected + discarded)) * 100
مشکلاتی در استفاده از --syslog-name وجود دارد. مشکل این است
که حتی با تنظیم $syslog_name در Postfix، گاهی لاگها همچنان
با "postfix" به عنوان syslog_name ثبت میشوند. به این مورد در
/etc/postfix/sample-misc.cf اشاره شده است:
# Beware: a non-default syslog_name setting takes effect only
# after process initialization. Some initialization errors will be
# logged with the default name, especially errors while parsing
# the command line and errors while accessing the Postfix main.cf
# configuration file.
در نتیجه، pflogsumm همواره باید هم به دنبال "postfix," در لاگها باشد،
و هم هر آنچه که برای syslog_name ارائه شده است.
جایی که این قضیه تبدیل به یک مشکل میشود زمانی است که کاربران دو یا چند
نمونه از Postfix را اجرا میکنند که در یک فایل مشترک لاگ میاندازند. در چنین شرایطی:
. هیچکدام از نمونهها نباید از نام پیشفرض "postfix" برای syslog استفاده کنند
و...
. مدخلهای لاگی که دچار موارد شرح داده شده در
sample-misc.cf میشوند تحت عنوان "postfix" گزارش خواهند شد؛ بنابراین اگر
pflogsumm را دو بار اجرا کنید (یکبار برای هر syslog_name)، چنین
مدخلهایی در هر گزارش نمایش داده خواهند شد.
صفحه خانگی Pflogsumm در این آدرس قرار دارد:
http://jimsun.LinxNet.com/postfix_contrib.html
حداقل به Perl 5.10 و Date::Calc نیاز دارد
برای --config، برنامه Pflogsumm به ماژول Config::Simple نیاز دارد.
هر دو مورد بالا را میتوان از CPAN در http://www.perl.com
یا از مخزن توزیع خود دریافت کرد.
برنامه Pflogsumm در حال حاضر تحت Perl 5.38 نوشته و آزمایش شده است.
از نسخه 19990413-02، برنامه pflogsumm با Perl 5.003 کار میکرد، اما
سازگاری در آینده تضمین نمیشود.
مجوز (LICENSE)
این برنامه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همانطور که توسط Free Software Foundation منتشر شده است، چه نسخه ۲ مجوز یا (به انتخاب خودتان) هر نسخه بعدی، بازتوزیع کرده و/یا تغییر دهید. این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به GNU General Public License مراجعه کنید. شما باید یک نسخه از GNU General Public License را همراه با این برنامه دریافت کرده باشید؛ در غیر این صورت به نشانی زیر مکاتبه کنید: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. یک نسخه برخط از GNU General Public License را میتوان در http://www.fsf.org/copyleft/gpl.html یافت.
| 2026-04-22 | 1.2.0 |