pflogsumm - Produce Postfix MTA logfile summary
-Copyright (C) 1998-2025 by James S. Seymour, Release 1.1.9
+Copyright (C) 1998-2025 by James S. Seymour, Release 1.1.10
=head1 SYNOPSIS
my $hasDateCalc = $@ ? 0 : 1;
my $mailqCmd = "mailq";
-my $release = "1.1.9";
+my $release = "1.1.10";
# Variables and constants used throughout pflogsumm
use vars qw(
proc_smtpd_reject($logRmdr, \%rejects, \$msgsRjctd,
\$rejPerHr[$msgHr],
\${$msgsPerDay{$revMsgDateStr}}[4]);
+ delete($rcvdMsg{$qid}) if($rcvdMsg{$qid}); # If it's rejected later in the game
} elsif($rejSubTyp eq 'reject_warning') {
proc_smtpd_reject($logRmdr, \%warns, \$msgsWrnd,
\$rejPerHr[$msgHr],
}
}
+# Experimental:
+#
+# If messages were "received" but undelivered, unforwarded, and not
+# rejected in cleanup, odds are nothing was ever really received—not
+# even a 0-length message.
+#
+if(my $noSizeCnt = scalar grep { !exists $rcvdMsg{$_}{'size'} } keys %rcvdMsg) {
+ $msgsRcvd -= $noSizeCnt;
+}
+
# debugging
if($unProcd) {
close($unProcd) ||
$_ = $_[0];
my $bracketRegex = '([^\s\[]+)\[((?:\d{1,3}\.){3}\d{1,3}|[\da-fA-F:]+(?:::(?:[\da-fA-F:]+)?)?|[\da-fA-F:]+:(?:\d{1,3}\.){3}\d{1,3})\]';
my $slashSepRegex = '([^\s\/]+)\/((?:\d{1,3}\.){3}\d{1,3}|[\da-fA-F:]+(?:::(?:[\da-fA-F:]+)?)?|[\da-fA-F:]+:(?:\d{1,3}\.){3}\d{1,3})';
+ # Rejects and so-on from postscreen pass these in
+ my $addrOnlyRegex = '^\[((?:\d{1,3}\.){3}\d{1,3}|[\da-fA-F:]+(?:::(?:[\da-fA-F:]+)?)?|[\da-fA-F:]+:(?:\d{1,3}\.){3}\d{1,3})\]';
my ($fqdn, $ipaddr);
- unless((($fqdn, $ipaddr) = /$bracketRegex/i) == 2) {
- ($fqdn, $ipaddr) = /$slashSepRegex/i;
+ unless(((($fqdn, $ipaddr) = /$bracketRegex/i) == 2) ||
+ (($fqdn, $ipaddr) = /$slashSepRegex/i) == 2)
+ {
+ ($ipaddr) = /$addrOnlyRegex/i;
}
$fqdn = "unknown" unless($fqdn);
$ipaddr = "unknown" unless($ipaddr);
$rejData .= " ($from)" if($opts{'rejAddFrom'});
++$rejects->{$rejTyp}{$rejReas}{$rejData};
} else {
-# print STDERR "dbg: unknown reject reason $rejReas !\n\n";
+ #print STDERR "dbg: unknown/un-enumerated reject reason $rejReas, \$rejFrom: \"$rejFrom\"!\n\n";
my $rejData = gimme_domain($rejFrom);
if($opts{'rejAddFrom'} && $opts{'rejAddTo'} && $to) {
$rejData .= " ($from -> $to)";
.\" ========================================================================
.\"
.IX Title "PFLOGSUMM 1"
-.TH PFLOGSUMM 1 2025-05-27 1.1.9 "User Contributed Perl Documentation"
+.TH PFLOGSUMM 1 2025-05-29 1.1.10 "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 \- Produce Postfix MTA logfile summary
.PP
-Copyright (C) 1998\-2025 by James S. Seymour, Release 1.1.9
+Copyright (C) 1998\-2025 by James S. Seymour, Release 1.1.10
.SH SYNOPSIS
.IX Header "SYNOPSIS"
.Vb 8