--- sendmail.43 Wed Jan 29 15:01:13 2003 +++ sendmail Wed Jan 29 16:50:57 2003 @@ -22,6 +22,7 @@ my %notLocal; while (defined($ThisLine = )) { + ($QueueID) = ($ThisLine =~ m/^([a-zA-Z0-9]+): / ); $ThisLine =~ s/^[a-zA-Z0-9]+: //; if ( ( $ThisLine =~ m/^to=.*stat=/ ) or ( $ThisLine =~ m/^alias database [^ ]* (auto)?rebuilt by/ ) or @@ -35,16 +36,18 @@ ( $ThisLine =~ m/: Service unavailable$/) or #( $ThisLine =~ m/did not issue MAIL\/EXPN\/VRFY\/ETRN during connection/ ) or ( $ThisLine =~ m/Broken pipe|Connection (reset|timed out)/ ) or - ( $ThisLine =~ m/^clone [a-zA-Z0-9]+, owner=/ ) or - ( $ThisLine =~ m/^from=.*nrcpts=0.*$/ ) ) { + ( $ThisLine =~ m/^clone [a-zA-Z0-9]+, owner=/ ) ) { # We don't care about these - } elsif ( ($Bytes) = ($ThisLine =~ /^from=.*size=([0-9]+).*$/) ) { - $MsgsSent++; - $BytesTransferred += $Bytes; + } elsif ( ($Bytes, $NumRcpts, $RelayHost) = ($ThisLine =~ /^from=.*size=([0-9]+).*nrcpts=([0-9]+).*relay=(\[[0-9\.]+\]|[^ ]* \[[0-9\.]+\]|[^ ]+).*$/) ) { + if ($NumRcpts > 0) { + $MsgsSent++; + $BytesTransferred += $Bytes; + }; + chomp($Relays{$QueueID} = $RelayHost); } elsif ( $ThisLine =~ m/X-Virus-Scanned: by amavisd-milter/) { $Amavis++; } elsif ( ($User) = ($ThisLine =~ /^<([^ ]*)>... User unknown$/) ) { - $UnknownUsers{$User}++; + $UnknownUsers{$User}{$QueueID}++; } elsif ( ($Host) = ($ThisLine =~ /\(Name server: ([^ ]+): host not found\)/)) { $UnknownHosts{$Host}++; } elsif ( ($Domain) = ($ThisLine =~ /Domain of sender address ([^ ]+) does not resolve/)) { @@ -167,9 +170,17 @@ } if (keys %UnknownUsers) { + foreach $Usr (sort keys %UnknownUsers) { + foreach $QueueID (sort keys %{ $UnknownUsers{$Usr} }) { + $SortedUsers{$Usr}{$Relays{$QueueID}}++; + } + } print "\n\nUnknown users:\n"; - foreach $ThisOne (sort keys %UnknownUsers) { - print " " . $ThisOne . ": " . $UnknownUsers{$ThisOne} . " Times(s)\n"; + foreach $Usr (sort keys %SortedUsers) { + print "\n $Usr\n"; + foreach $RelayHost (sort keys %{ $SortedUsers{$Usr} }) { + print " from $RelayHost $SortedUsers{$Usr}{$RelayHost} time(s).\n"; + } } }