]> git.ipfire.org Git - thirdparty/AWStats.git/commitdiff
Better management of error records with sendmail.
authoreldy <>
Sun, 25 Jan 2004 15:15:09 +0000 (15:15 +0000)
committereldy <>
Sun, 25 Jan 2004 15:15:09 +0000 (15:15 +0000)
tools/maillogconvert.pl

index 11ef636ebcd637ad2c8b051b6dd30a6da58cc0b3..5e4f33027265408fb326bdf2fcb9a7f0dda6b5d6 100644 (file)
@@ -262,34 +262,11 @@ while (<>) {
                        $mail{$mailid}{'mon'}=$mon;
                        $mail{$mailid}{'day'}=$day;
                        $mail{$mailid}{'time'}=$time;
+                       if (! defined($mail{$mailid}{'size'})) { $mail{$mailid}{'size'}='?'; }
                        debug("For id=$mailid, found a postfix error incoming message: code=$mail{$mailid}{'code'} from=$mail{$mailid}{'from'} to=$mail{$mailid}{'to'} time=$mail{$mailid}{'time'}");
                }
        }
        #
-       # See if we received sendmail reject error
-       #
-       elsif (/, reject/) {
-               $MailType||='sendmail';
-               # Example: 
-               # sm-mta:   Jul 27 04:06:05 androneda sm-mta[6641]: h6RB44tg006641: ruleset=check_mail, arg1=<7ms93d4ms@topprodsource.com>, relay=crelay1.easydns.com [216.220.57.222], reject=451 4.1.8 Domain of sender address 7ms93d4ms@topprodsource.com does not resolve
-               # sm-mta:       Jul 27 06:21:24 androneda sm-mta[11461]: h6RDLNtg011461: ruleset=check_rcpt, arg1=<nobody@nova.dice.net>, relay=freedom.myhostdns.com [66.246.77.42], reject=550 5.7.1 <nobody@nova.dice.net>... Relaying denied
-               # sendmail: Sep 30 04:21:32 halley sendmail[3161]: g8U2LVi03161: ruleset=check_rcpt, arg1=<amber3624@netzero.net>, relay=moon.partenor.fr [10.0.0.254], reject=550 5.7.1 <amber3624@netzero.net>... Relaying denied
-               my ($mon,$day,$time,$id,$ruleset,$arg,$relay_s,$code)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-]+\s+(?:sendmail|sm-mta)\[\d+\]:\s+(.*?):\sruleset=(\w+),\s+arg1=(.*),\s+relay=(.*),\s+(reject=.*)/;
-               $mailid=$id;
-               if ($mailid) {
-                       if ($ruleset eq 'check_mail') { $mail{$id}{'from'}=$arg; }
-                       if ($ruleset eq 'check_rcpt') { $mail{$id}{'to'}=$arg; }
-                       $mail{$id}{'relay_s'}=$relay_s;
-                       # $code='reject=550 5.7.1 <amber3624@netzero.net>... Relaying denied'
-                       if ($code =~ /=(\d\d\d)\s+/) { $mail{$id}{'code'}=$1; }
-                       else { $mail{$id}{'code'}=999; }        # Unkown error
-                       $mail{$id}{'mon'}=$mon;
-                       $mail{$id}{'day'}=$day;
-                       $mail{$id}{'time'}=$time;
-                       debug("For id=$id, found a sendmail error incoming message: code=$mail{$id}{'code'} from=$mail{$id}{'from'} to=$mail{$id}{'to'} relay_s=$mail{$id}{'relay_s'}");
-               }
-       }
-       #
        # See if we received postfix email bounced error
        #
        elsif (/stat(us)?=bounced/) {
@@ -305,9 +282,43 @@ while (<>) {
                        $mail{$mailid}{'mon'}=$mon;
                        $mail{$mailid}{'day'}=$day;
                        $mail{$mailid}{'time'}=$time;
+                       if (! defined($mail{$mailid}{'size'})) { $mail{$mailid}{'size'}='?'; }
                        debug("For id=$mailid, found a postfix bounced incoming message: code=$mail{$mailid}{'code'} to=$mail{$mailid}{'to'} relay_r=$mail{$mailid}{'relay_r'}");
                }
        }
+       #
+       # See if we received sendmail reject error
+       #
+       elsif (/, reject/) {
+               $MailType||='sendmail';
+               # Example: 
+               # sm-mta:   Jul 27 04:06:05 androneda sm-mta[6641]: h6RB44tg006641: ruleset=check_mail, arg1=<7ms93d4ms@topprodsource.com>, relay=crelay1.easydns.com [216.220.57.222], reject=451 4.1.8 Domain of sender address 7ms93d4ms@topprodsource.com does not resolve
+               # sm-mta:       Jul 27 06:21:24 androneda sm-mta[11461]: h6RDLNtg011461: ruleset=check_rcpt, arg1=<nobody@nova.dice.net>, relay=freedom.myhostdns.com [66.246.77.42], reject=550 5.7.1 <nobody@nova.dice.net>... Relaying denied
+               # sendmail: Sep 30 04:21:32 halley sendmail[3161]: g8U2LVi03161: ruleset=check_rcpt, arg1=<amber3624@netzero.net>, relay=moon.partenor.fr [10.0.0.254], reject=550 5.7.1 <amber3624@netzero.net>... Relaying denied
+
+               # sendmail:     Jan 10 07:37:48 smtp sendmail[32440]: ruleset=check_relay, arg1=[211.228.26.114], arg2=211.228.26.114, relay=[211.228.26.114], reject=554 5.7.1 Rejected 211.228.26.114 found in dnsbl.sorbs.net
+               # sendmail: Jan 10 07:37:08 smtp sendmail[32439]: ruleset=check_relay, arg1=235.Red-213-97-175.pooles.rima-tde.net, arg2=213.97.175.235, relay=235.Red-213-97-175.pooles.rima-tde.net [213.97.175.235], reject=550 5.7.1 Mail from 213.97.175.235 refused. Rejected for bad WHOIS info on IP of your SMTP server - see http://www.rfc-ignorant.org/\r
+               # sendmail: Jan 10 17:15:42 smtp sendmail[12770]: ruleset=check_relay, arg1=[63.218.84.21], arg2=63.218.84.21, relay=[63.218.84.21], reject=553 5.3.0 Rejected - see http://spamhaus.org/
+               my ($mon,$day,$time,$id,$ruleset,$arg,$relay_s,$code)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-]+\s+(?:sendmail|sm-mta)\[\d+\][:\s]*(.*?):\sruleset=(\w+),\s+arg1=(.*),\s+relay=(.*),\s+(reject=.*)/;
+               # sendmail: Jan 10 18:00:34 smtp sendmail[5759]: i04Axx2c005759: Milter: data, reject=511 Virus found in email!\r
+               if (! $mon) { ($mon,$day,$time,$id,$ruleset,$code)=m/(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+[\w\-]+\s+(?:sendmail|sm-mta)\[\d+\]:\s+(.*?):\s\w+:\s(\w+),\s+(reject=.*)/; }
+               $mailid=(! $id && $mon?'999':$id);      # id not provided in log, we take '999'
+               if ($mailid) {
+                       if ($ruleset eq 'check_mail') { $mail{$mailid}{'from'}=$arg; }
+                       if ($ruleset eq 'check_rcpt') { $mail{$mailid}{'to'}=$arg; }
+                       if ($ruleset eq 'check_relay') { }
+                       if ($ruleset eq 'data') { }
+                       $mail{$mailid}{'relay_s'}=$relay_s;
+                       # $code='reject=550 5.7.1 <amber3624@netzero.net>... Relaying denied'
+                       if ($code =~ /=(\d\d\d)\s+/) { $mail{$mailid}{'code'}=$1; }
+                       else { $mail{$mailid}{'code'}=999; }    # Unkown error
+                       $mail{$mailid}{'mon'}=$mon;
+                       $mail{$mailid}{'day'}=$day;
+                       $mail{$mailid}{'time'}=$time;
+                       if (! defined($mail{$mailid}{'size'})) { $mail{$mailid}{'size'}='?'; }
+                       debug("For id=$mailid, found a sendmail error incoming message: code=$mail{$mailid}{'code'} from=$mail{$mailid}{'from'} to=$mail{$mailid}{'to'} relay_s=$mail{$mailid}{'relay_s'}");
+               }
+       }
 
        #
        # See if we send a sendmail (with ctladdr tag) email
@@ -563,8 +574,9 @@ while (<>) {
                        $to=$mail{$mailid}{'to'};
                        if ($mail{$mailid}{'from'} && $mail{$mailid}{'to'}) { $canoutput=1; }
                        if ($mail{$mailid}{'from'} && $mail{$mailid}{'code'} > 1) { $canoutput=1; }
+                       if ($mailid && $mail{$mailid}{'code'} > 1) { $canoutput=1; }
                }
-               
+
                # If we can
                if ($canoutput) {
                        &OutputRecord($mail{$mailid}{'year'}?$mail{$mailid}{'year'}:$year,$mail{$mailid}{'mon'},$mail{$mailid}{'day'},$mail{$mailid}{'time'},$mail{$mailid}{'from'},$to,$mail{$mailid}{'relay_s'},$mail{$mailid}{'relay_r'},$code,$mail{$mailid}{'size'},$mail{$mailid}{'forwardto'},$mail{$mailid}{'extinfo'});