.\" ========================================================================
.\"
.IX Title "PFLOGSUMM 1"
-.TH PFLOGSUMM 1 "2010-03-20" "1.1.3" "User Contributed Perl Documentation"
+.TH PFLOGSUMM 1 "2012-02-01" "1.1.4" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.SH "NAME"
pflogsumm.pl \- Produce Postfix MTA logfile summary
.PP
-Copyright (C) 1998\-2010 by James S. Seymour, Release 1.1.3.
+Copyright (C) 1998\-2010 by James S. Seymour, Release 1.1.4
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
-.Vb 10
+.Vb 8
\& pflogsumm.pl \-[eq] [\-d <today|yesterday>] [\-\-detail <cnt>]
-\& [\-\-bounce_detail <cnt>] [\-\-deferral_detail <cnt>]
-\& [\-h <cnt>] [\-i|\-\-ignore_case] [\-\-iso_date_time] [\-\-mailq]
-\& [\-m|\-\-uucp_mung] [\-\-no_bounce_detail] [\-\-no_deferral_detail]
-\& [\-\-no_no_msg_size] [\-\-no_reject_detail] [\-\-no_smtpd_warnings]
-\& [\-\-problems_first] [\-\-rej_add_from] [\-\-reject_detail <cnt>]
-\& [\-\-smtp_detail <cnt>] [\-\-smtpd_stats]
-\& [\-\-smtpd_warning_detail <cnt>] [\-\-syslog_name=string]
-\& [\-u <cnt>] [\-\-verbose_msg_detail] [\-\-verp_mung[=<n>]]
-\& [\-\-zero_fill] [file1 [filen]]
+\& [\-\-bounce\-detail <cnt>] [\-\-deferral\-detail <cnt>]
+\& [\-h <cnt>] [\-i|\-\-ignore\-case] [\-\-iso\-date\-time] [\-\-mailq]
+\& [\-m|\-\-uucp\-mung] [\-\-no\-no\-msg\-size] [\-\-problems\-first]
+\& [\-\-rej\-add\-from] [\-\-reject\-detail <cnt>] [\-\-smtp\-detail <cnt>]
+\& [\-\-smtpd\-stats] [\-\-smtpd\-warning\-detail <cnt>]
+\& [\-\-syslog\-name=string] [\-u <cnt>] [\-\-verbose\-msg\-detail]
+\& [\-\-verp\-mung[=<n>]] [\-\-zero\-fill] [file1 [filen]]
\&
\& pflogsumm.pl \-[help|version]
\&
.SH "OPTIONS"
.IX Header "OPTIONS"
.Vb 1
-\& \-\-bounce_detail <cnt>
+\& \-\-bounce\-detail <cnt>
\&
\& Limit detailed bounce reports to the top <cnt>. 0
\& to suppress entirely.
\& \-d today generate report for just today
\& \-d yesterday generate report for just "yesterday"
\&
-\& \-\-deferral_detail <cnt>
+\& \-\-deferral\-detail <cnt>
\&
\& Limit detailed deferral reports to the top <cnt>. 0
\& to suppress entirely.
\&
\& \-\-detail <cnt>
\&
-\& Sets all \-\-*_detail, \-h and \-u to <cnt>. Is
+\& Sets all \-\-*\-detail, \-h and \-u to <cnt>. Is
\& over\-ridden by individual settings. \-\-detail 0
\& suppresses *all* detail.
\&
\&
\& 0 = none.
\&
-\& See also: "\-u" and "\-\-*_detail" options for further
+\& See also: "\-u" and "\-\-*\-detail" options for further
\& report\-limiting options.
\&
\& \-\-help Emit short usage message and bail out.
\& know: lame.)
\&
\& \-i
-\& \-\-ignore_case Handle complete email address in a case\-insensitive
+\& \-\-ignore\-case Handle complete email address in a case\-insensitive
\& manner.
\&
\& Normally pflogsumm lower\-cases only the host and
\& option causes the entire email address to be lower\-
\& cased.
\&
-\& \-\-iso_date_time
+\& \-\-iso\-date\-time
\&
\& For summaries that contain date or time information,
\& use ISO 8601 standard formats (CCYY\-MM\-DD and HH:MM),
\& rather than "Mon DD CCYY" and "HHMM".
\&
\& \-m modify (mung?) UUCP\-style bang\-paths
-\& \-\-uucp_mung
+\& \-\-uucp\-mung
\&
\& This is for use when you have a mix of Internet\-style
\& domain addresses and UUCP\-style bang\-paths in the log.
\& \-\-no_deferral_detail
\& \-\-no_reject_detail
\&
-\& These switches are depreciated in favour of
-\& \-\-bounce_detail, \-\-deferral_detail and
-\& \-\-reject_detail, respectively.
+\& These switches are deprecated in favour of
+\& \-\-bounce\-detail, \-\-deferral\-detail and
+\& \-\-reject\-detail, respectively.
\&
\& Suppresses the printing of the following detailed
\& reports, respectively:
\& See also: "\-u" and "\-h" for further report\-limiting
\& options.
\&
-\& \-\-no_no_msg_size
+\& \-\-no\-no\-msg\-size
\&
\& Do not emit report on "Messages with no size data".
\&
\& normally reported by pflogsumm as "Messages with no
\& size data."
\&
-\& \-\-no_smtpd_warnings
+\& \-\-no\-smtpd\-warnings
\&
-\& This switch is depreciated in favour of
-\& smtpd_warning_detail
+\& This switch is deprecated in favour of
+\& smtpd\-warning\-detail
\&
\& On a busy mail server, say at an ISP, SMTPD warnings
\& can result in a rather sizeable report. This option
\& turns reporting them off.
\&
-\& \-\-problems_first
+\& \-\-problems\-first
\&
\& Emit "problems" reports (bounces, defers, warnings,
\& etc.) before "normal" stats.
\&
-\& \-\-rej_add_from
+\& \-\-rej\-add\-from
\& For those reject reports that list IP addresses or
\& host/domain names: append the email from address to
\& each listing. (Does not apply to "Improper use of
\& note: headings for warning, fatal, and "master"
\& messages will always be printed.
\&
-\& \-\-reject_detail <cnt>
+\& \-\-reject\-detail <cnt>
\&
\& Limit detailed smtpd reject, warn, hold and discard
\& reports to the top <cnt>. 0 to suppress entirely.
\&
-\& \-\-smtp_detail <cnt>
+\& \-\-smtp\-detail <cnt>
\&
\& Limit detailed smtp delivery reports to the top <cnt>.
\& 0 to suppress entirely.
\&
-\& \-\-smtpd_stats
+\& \-\-smtpd\-stats
\&
\& Generate smtpd connection statistics.
\&
\& reports. For multiple\-day reports: "per\-hour" numbers
\& are daily averages (reflected in the report heading).
\&
-\& \-\-smtpd_warning_detail <cnt>
+\& \-\-smtpd\-warning\-detail <cnt>
\&
\& Limit detailed smtpd warnings reports to the top <cnt>.
\& 0 to suppress entirely.
\&
-\& \-\-syslog_name=name
+\& \-\-syslog\-name=name
\&
-\& Set syslog_name to look for for Postfix log entries.
+\& Set syslog\-name to look for for Postfix log entries.
\&
\& By default, pflogsumm looks for entries in logfiles
\& with a syslog name of "postfix," the default.
\&
\& \-u <cnt> top <cnt> to display in user reports. 0 == none.
\&
-\& See also: "\-h" and "\-\-*_detail" options for further
+\& See also: "\-h" and "\-\-*\-detail" options for further
\& report\-limiting options.
\&
-\& \-\-verbose_msg_detail
+\& \-\-verbose\-msg\-detail
\&
\& For the message deferral, bounce and reject summaries:
\& display the full "reason", rather than a truncated one.
\&
\& Note: this can result in quite long lines in the report.
\&
-\& \-\-verp_mung do "VERP" generated address (?) munging. Convert
-\& \-\-verp_mung=2 sender addresses of the form
+\& \-\-verp\-mung do "VERP" generated address (?) munging. Convert
+\& \-\-verp\-mung=2 sender addresses of the form
\& "list\-return\-NN\-someuser=some.dom@host.sender.dom"
\& to
\& "list\-return\-ID\-someuser=some.dom@host.sender.dom"
\&
\& \-\-version Print program name and version and bail out.
\&
-\& \-\-zero_fill "Zero\-fill" certain arrays so reports come out with
+\& \-\-zero\-fill "Zero\-fill" certain arrays so reports come out with
\& data in columns that that might otherwise be blank.
.Ve
.SH "RETURN VALUE"
\&
\& (rejected / (delivered + rejected + discarded)) * 100
\&
-\& There are some issues with the use of \-\-syslog_name. The problem is
-\& that, even with $syslog_name set, Postfix will sometimes still log
-\& things with "postfix" as the syslog_name. This is noted in
+\& There are some issues with the use of \-\-syslog\-name. The problem is
+\& that, even with Postfix\*(Aq $syslog_name set, it will sometimes still
+\& log things with "postfix" as the syslog_name. This is noted in
\& /etc/postfix/sample\-misc.cf:
\&
\& # Beware: a non\-default syslog_name setting takes effect only
.SH "REQUIREMENTS"
.IX Header "REQUIREMENTS"
.Vb 3
-\& For certain options (e.g.: \-\-smtpd_stats), Pflogsumm requires the
+\& For certain options (e.g.: \-\-smtpd\-stats), Pflogsumm requires the
\& Date::Calc module, which can be obtained from CPAN at
\& http://www.perl.com.
\&
pflogsumm.pl - Produce Postfix MTA logfile summary
-Copyright (C) 1998-2010 by James S. Seymour, Release 1.1.3.
+Copyright (C) 1998-2010 by James S. Seymour, Release 1.1.4
=head1 SYNOPSIS
pflogsumm.pl -[eq] [-d <today|yesterday>] [--detail <cnt>]
- [--bounce_detail <cnt>] [--deferral_detail <cnt>]
- [-h <cnt>] [-i|--ignore_case] [--iso_date_time] [--mailq]
- [-m|--uucp_mung] [--no_bounce_detail] [--no_deferral_detail]
- [--no_no_msg_size] [--no_reject_detail] [--no_smtpd_warnings]
- [--problems_first] [--rej_add_from] [--reject_detail <cnt>]
- [--smtp_detail <cnt>] [--smtpd_stats]
- [--smtpd_warning_detail <cnt>] [--syslog_name=string]
- [-u <cnt>] [--verbose_msg_detail] [--verp_mung[=<n>]]
- [--zero_fill] [file1 [filen]]
+ [--bounce-detail <cnt>] [--deferral-detail <cnt>]
+ [-h <cnt>] [-i|--ignore-case] [--iso-date-time] [--mailq]
+ [-m|--uucp-mung] [--no-no-msg-size] [--problems-first]
+ [--rej-add-from] [--reject-detail <cnt>] [--smtp-detail <cnt>]
+ [--smtpd-stats] [--smtpd-warning-detail <cnt>]
+ [--syslog-name=string] [-u <cnt>] [--verbose-msg-detail]
+ [--verp-mung[=<n>]] [--zero-fill] [file1 [filen]]
pflogsumm.pl -[help|version]
=head1 OPTIONS
- --bounce_detail <cnt>
+ --bounce-detail <cnt>
Limit detailed bounce reports to the top <cnt>. 0
to suppress entirely.
-d today generate report for just today
-d yesterday generate report for just "yesterday"
- --deferral_detail <cnt>
+ --deferral-detail <cnt>
Limit detailed deferral reports to the top <cnt>. 0
to suppress entirely.
--detail <cnt>
- Sets all --*_detail, -h and -u to <cnt>. Is
+ Sets all --*-detail, -h and -u to <cnt>. Is
over-ridden by individual settings. --detail 0
suppresses *all* detail.
0 = none.
- See also: "-u" and "--*_detail" options for further
+ See also: "-u" and "--*-detail" options for further
report-limiting options.
--help Emit short usage message and bail out.
know: lame.)
-i
- --ignore_case Handle complete email address in a case-insensitive
+ --ignore-case Handle complete email address in a case-insensitive
manner.
Normally pflogsumm lower-cases only the host and
option causes the entire email address to be lower-
cased.
- --iso_date_time
+ --iso-date-time
For summaries that contain date or time information,
use ISO 8601 standard formats (CCYY-MM-DD and HH:MM),
rather than "Mon DD CCYY" and "HHMM".
-m modify (mung?) UUCP-style bang-paths
- --uucp_mung
+ --uucp-mung
This is for use when you have a mix of Internet-style
domain addresses and UUCP-style bang-paths in the log.
--no_deferral_detail
--no_reject_detail
- These switches are depreciated in favour of
- --bounce_detail, --deferral_detail and
- --reject_detail, respectively.
+ These switches are deprecated in favour of
+ --bounce-detail, --deferral-detail and
+ --reject-detail, respectively.
Suppresses the printing of the following detailed
reports, respectively:
See also: "-u" and "-h" for further report-limiting
options.
- --no_no_msg_size
+ --no-no-msg-size
Do not emit report on "Messages with no size data".
normally reported by pflogsumm as "Messages with no
size data."
- --no_smtpd_warnings
+ --no-smtpd-warnings
- This switch is depreciated in favour of
- smtpd_warning_detail
+ This switch is deprecated in favour of
+ smtpd-warning-detail
On a busy mail server, say at an ISP, SMTPD warnings
can result in a rather sizeable report. This option
turns reporting them off.
- --problems_first
+ --problems-first
Emit "problems" reports (bounces, defers, warnings,
etc.) before "normal" stats.
- --rej_add_from
+ --rej-add-from
For those reject reports that list IP addresses or
host/domain names: append the email from address to
each listing. (Does not apply to "Improper use of
note: headings for warning, fatal, and "master"
messages will always be printed.
- --reject_detail <cnt>
+ --reject-detail <cnt>
Limit detailed smtpd reject, warn, hold and discard
reports to the top <cnt>. 0 to suppress entirely.
- --smtp_detail <cnt>
+ --smtp-detail <cnt>
Limit detailed smtp delivery reports to the top <cnt>.
0 to suppress entirely.
- --smtpd_stats
+ --smtpd-stats
Generate smtpd connection statistics.
reports. For multiple-day reports: "per-hour" numbers
are daily averages (reflected in the report heading).
- --smtpd_warning_detail <cnt>
+ --smtpd-warning-detail <cnt>
Limit detailed smtpd warnings reports to the top <cnt>.
0 to suppress entirely.
- --syslog_name=name
+ --syslog-name=name
- Set syslog_name to look for for Postfix log entries.
+ Set syslog-name to look for for Postfix log entries.
By default, pflogsumm looks for entries in logfiles
with a syslog name of "postfix," the default.
-u <cnt> top <cnt> to display in user reports. 0 == none.
- See also: "-h" and "--*_detail" options for further
+ See also: "-h" and "--*-detail" options for further
report-limiting options.
- --verbose_msg_detail
+ --verbose-msg-detail
For the message deferral, bounce and reject summaries:
display the full "reason", rather than a truncated one.
Note: this can result in quite long lines in the report.
- --verp_mung do "VERP" generated address (?) munging. Convert
- --verp_mung=2 sender addresses of the form
+ --verp-mung do "VERP" generated address (?) munging. Convert
+ --verp-mung=2 sender addresses of the form
"list-return-NN-someuser=some.dom@host.sender.dom"
to
"list-return-ID-someuser=some.dom@host.sender.dom"
--version Print program name and version and bail out.
- --zero_fill "Zero-fill" certain arrays so reports come out with
+ --zero-fill "Zero-fill" certain arrays so reports come out with
data in columns that that might otherwise be blank.
=head1 RETURN VALUE
(rejected / (delivered + rejected + discarded)) * 100
- There are some issues with the use of --syslog_name. The problem is
- that, even with $syslog_name set, Postfix will sometimes still log
- things with "postfix" as the syslog_name. This is noted in
+ There are some issues with the use of --syslog-name. The problem is
+ that, even with Postfix' $syslog_name set, it will sometimes still
+ log things with "postfix" as the syslog_name. This is noted in
/etc/postfix/sample-misc.cf:
# Beware: a non-default syslog_name setting takes effect only
=head1 REQUIREMENTS
- For certain options (e.g.: --smtpd_stats), Pflogsumm requires the
+ For certain options (e.g.: --smtpd-stats), Pflogsumm requires the
Date::Calc module, which can be obtained from CPAN at
http://www.perl.com.
my $hasDateCalc = $@ ? 0 : 1;
my $mailqCmd = "mailq";
-my $release = "1.1.3";
+my $release = "1.1.4";
# Variables and constants used throughout pflogsumm
use vars qw(
$smtpdPerHr[$_] = [0,0,0];
}
-$progName = "pflogsumm.pl";
+($progName = $0) =~ s/^.*\///;
+
$usageMsg =
"usage: $progName -[eq] [-d <today|yesterday>] [--detail <cnt>]
- [--bounce_detail <cnt>] [--deferral_detail <cnt>]
- [-h <cnt>] [-i|--ignore_case] [--iso_date_time] [--mailq]
- [-m|--uucp_mung] [--no_bounce_detail] [--no_deferral_detail]
- [--no_no_msg_size] [--no_reject_detail] [--no_smtpd_warnings]
- [--problems_first] [--rej_add_from] [--reject_detail <cnt>]
- [--smtp_detail <cnt>] [--smtpd_stats]
- [--smtpd_warning_detail <cnt>] [--syslog_name=string]
- [-u <cnt>] [--verbose_msg_detail] [--verp_mung[=<n>]]
- [--zero_fill] [file1 [filen]]
+ [--bounce-detail <cnt>] [--deferral-detail <cnt>]
+ [-h <cnt>] [-i|--ignore-case] [--iso-date-time] [--mailq]
+ [-m|--uucp-mung] [--no-no-msg-size] [--problems-first]
+ [--rej-add-from] [--reject-detail <cnt>] [--smtp-detail <cnt>]
+ [--smtpd-stats] [--smtpd-warning-detail <cnt>]
+ [--syslog-name=string] [-u <cnt>] [--verbose-msg-detail]
+ [--verp-mung[=<n>]] [--zero-fill] [file1 [filen]]
$progName --[version|help]";
+# Accept either "_"s or "-"s in --switches
+foreach (@ARGV) {
+ last if($_ eq "--");
+ tr/_/-/ if(/^--\w/);
+}
+
# Some pre-inits for convenience
$isoDateTime = 0; # Don't use ISO date/time formats
GetOptions(
- "bounce_detail=i" => \$opts{'bounceDetail'},
+ "bounce-detail=i" => \$opts{'bounceDetail'},
"d=s" => \$opts{'d'},
- "deferral_detail=i" => \$opts{'deferralDetail'},
+ "deferral-detail=i" => \$opts{'deferralDetail'},
"detail=i" => \$opts{'detail'},
"e" => \$opts{'e'},
"help" => \$opts{'help'},
"h=i" => \$opts{'h'},
- "ignore_case" => \$opts{'i'},
+ "ignore-case" => \$opts{'i'},
"i" => \$opts{'i'},
- "iso_date_time" => \$isoDateTime,
+ "iso-date-time" => \$isoDateTime,
"mailq" => \$opts{'mailq'},
"m" => \$opts{'m'},
- "no_bounce_detail" => \$opts{'noBounceDetail'},
- "no_deferral_detail" => \$opts{'noDeferralDetail'},
- "no_no_msg_size" => \$opts{'noNoMsgSize'},
- "no_reject_detail" => \$opts{'noRejectDetail'},
- "no_smtpd_warnings" => \$opts{'noSMTPDWarnings'},
- "problems_first" => \$opts{'pf'},
+ "no-bounce-detail" => \$opts{'noBounceDetail'},
+ "no-deferral-detail" => \$opts{'noDeferralDetail'},
+ "no-no-msg-size" => \$opts{'noNoMsgSize'},
+ "no-reject-detail" => \$opts{'noRejectDetail'},
+ "no-smtpd-warnings" => \$opts{'noSMTPDWarnings'},
+ "problems-first" => \$opts{'pf'},
"q" => \$opts{'q'},
- "rej_add_from" => \$opts{'rejAddFrom'},
- "reject_detail=i" => \$opts{'rejectDetail'},
- "smtp_detail=i" => \$opts{'smtpDetail'},
- "smtpd_stats" => \$opts{'smtpdStats'},
- "smtpd_warning_detail=i" => \$opts{'smtpdWarnDetail'},
- "syslog_name=s" => \$opts{'syslogName'},
+ "rej-add-from" => \$opts{'rejAddFrom'},
+ "reject-detail=i" => \$opts{'rejectDetail'},
+ "smtp-detail=i" => \$opts{'smtpDetail'},
+ "smtpd-stats" => \$opts{'smtpdStats'},
+ "smtpd-warning-detail=i" => \$opts{'smtpdWarnDetail'},
+ "syslog-name=s" => \$opts{'syslogName'},
"u=i" => \$opts{'u'},
- "uucp_mung" => \$opts{'m'},
- "verbose_msg_detail" => \$opts{'verbMsgDetail'},
- "verp_mung:i" => \$opts{'verpMung'},
+ "uucp-mung" => \$opts{'m'},
+ "verbose-msg-detail" => \$opts{'verbMsgDetail'},
+ "verp-mung:i" => \$opts{'verpMung'},
"version" => \$opts{'version'},
- "zero_fill" => \$opts{'zeroFill'}
+ "zero-fill" => \$opts{'zeroFill'}
) || die "$usageMsg\n";
# internally: 0 == none, undefined == -1 == all
# These go away eventually
if(defined($opts{'noBounceDetail'})) {
$opts{'bounceDetail'} = 0;
- warn "$progName: \"no_bounce_detail\" is depreciated, use \"bounce_detail=0\" instead\n"
+ warn "$progName: \"no_bounce_detail\" is deprecated, use \"bounce-detail=0\" instead\n"
}
if(defined($opts{'noDeferralDetail'})) {
$opts{'deferralDetail'} = 0;
- warn "$progName: \"no_deferral_detail\" is depreciated, use \"deferral_detail=0\" instead\n"
+ warn "$progName: \"no_deferral_detail\" is deprecated, use \"deferral-detail=0\" instead\n"
}
if(defined($opts{'noRejectDetail'})) {
$opts{'rejectDetail'} = 0;
- warn "$progName: \"no_reject_detail\" is depreciated, use \"reject_detail=0\" instead\n"
+ warn "$progName: \"no_reject_detail\" is deprecated, use \"reject-detail=0\" instead\n"
}
if(defined($opts{'noSMTPDWarnings'})) {
$opts{'smtpdWarnDetail'} = 0;
- warn "$progName: \"no_smtpd_warnings\" is depreciated, use \"smtpd_warning_detail=0\" instead\n"
+ warn "$progName: \"no_smtpd_warnings\" is deprecated, use \"smtpd-warning-detail=0\" instead\n"
}
# If --detail was specified, set anything that's not enumerated to it
*Delta_DHMS = *Date::Calc::Delta_DHMS;
} elsif(defined($opts{'smtpdStats'})) {
- # If user specified --smtpd_stats but doesn't have Date::Calc
+ # If user specified --smtpd-stats but doesn't have Date::Calc
# installed, die with friendly help message.
die <<End_Of_HELP_DATE_CALC;
-The option "--smtpd_stats" does calculations that require the
+The option "--smtpd-stats" does calculations that require the
Date::Calc Perl module, but you don't have this module installed.
If you want to use this extended functionality of Pflogsumm, you
will have to install this module. If you have root privileges
} else {
# RFC 3339 timestamp format?
next unless((($msgYr, $msgMon, $msgDay, $msgHr, $msgMin, $msgSec, $logRmdr) =
- /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:[\+\-](?:\d{2}):(?:\d{2})|Z) \S+ (.+)$/o) == 10);
+ /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.\d+)?(?:[\+\-](?:\d{2}):(?:\d{2})|Z) \S+ (.+)$/o) == 10);
# RFC 3339 months start at "1", we index from 0
--$msgMon;
}
- unless((($cmd, $qid) = $logRmdr =~ m#^(?:postfix|$syslogName)/([^\[:]*).*?: ([^:\s]+)#o) == 2 ||
+ unless((($cmd, $qid) = $logRmdr =~ m#^(?:postfix|$syslogName)(?:/(?:smtps|submission))?/([^\[:]*).*?: ([^:\s]+)#o) == 2 ||
(($cmd, $qid) = $logRmdr =~ m#^((?:postfix)(?:-script)?)(?:\[\d+\])?: ([^:\s]+)#o) == 2)
{
#print UNPROCD "$_";
++${$msgsPerDay{$revMsgDateStr}}[0];
++$msgsRcvd;
$rcvdMsg{$qid} = gimme_domain($1); # Whence it came
+ # DEBUG DEBUG DEBUG
+ #print STDERR "Received: $qid\n";
} elsif(my($rejSubTyp) = $logRmdr =~ /\[\d+\]: \w+: (reject(?:_warning)?|hold|discard): /o) {
if($rejSubTyp eq 'reject') {
proc_smtpd_reject($logRmdr, \%rejects, \$msgsRjctd,
++$dlvPerHr[$msgHr];
++${$msgsPerDay{$revMsgDateStr}}[1];
++$msgsDlvrd;
+ # DEBUG DEBUG DEBUG
+ #print STDERR "Delivered: $qid\n";
if($msgSizes{$qid}) {
${$recipDom{$domAddr}}[$msgSizeI] += $msgSizes{$qid};
${$recipUser{$addr}}[$msgSizeI] += $msgSizes{$qid};
if((my @octets = ($norm1 =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/o)) == 4) {
# Dotted-quad IP address
- return(pack('C4', @octets));
+ return(pack('U4', @octets));
} else {
# Possibly hostname or user@dom.ain
return(join( '', map { lc $_ } reverse split /[.@]/, $norm1 ));