Index: pflogsumm/pflogsumm.pl
===================================================================
--- pflogsumm.orig/pflogsumm.pl
+++ pflogsumm/pflogsumm.pl
@@ -713,7 +713,7 @@ while(<>) {
 			  \${$msgsPerDay{$revMsgDateStr}}[4]);
     } elsif($cmd eq 'master') {
 	++$masterMsgs{(split(/^.*master.*: /, $logRmdr))[1]};
-    } elsif($cmd eq 'smtpd') {
+    } elsif($cmd eq 'smtpd' || $cmd eq 'postscreen') {
 	if($logRmdr =~ /\[\d+\]: \w+: client=(.+?)(,|$)/) {
 	    #
 	    # Warning: this code in two places!
@@ -1536,14 +1536,14 @@ sub gimme_domain {
     # split domain/ipaddr into separates
     # newer versions of Postfix have them "dom.ain[i.p.add.ress]"
     # older versions of Postfix have them "dom.ain/i.p.add.ress"
-    unless((($domain, $ipAddr) = /^([^\[]+)\[((?:\d{1,3}\.){3}\d{1,3})\]/) == 2 ||
-           (($domain, $ipAddr) = /^([^\/]+)\/([0-9a-f.:]+)/i) == 2) {
+    unless((($domain, $ipAddr) = /^([^\[]*)\[((?:\d{1,3}\.){3}\d{1,3})\]/) == 2||
+           (($domain, $ipAddr) = /^([^\/]*)\/([0-9a-f.:]+)/i) == 2) {
 	# more exhaustive method
-        ($domain, $ipAddr) = /^([^\[\(\/]+)[\[\(\/]([^\]\)]+)[\]\)]?:?\s*$/;
+        ($domain, $ipAddr) = /^([^\[\(\/]*)[\[\(\/]([^\]\)]+)[\]\)]:?\d*$/;
     }
  
     # "mach.host.dom"/"mach.host.do.co" to "host.dom"/"host.do.co"
-    if($domain eq 'unknown') {
+    if($domain eq "" || $domain eq 'unknown') {
         $domain = $ipAddr;
 	# For identifying the host part on a Class C network (commonly
 	# seen with dial-ups) the following is handy.
@@ -1656,9 +1656,10 @@ sub proc_smtpd_reject {
 	    # those--incl. stuff that'll screw up subsequent parsing.  So just
 	    # get rid of it right off.
 	    $rejReas =~ s/^(\d{3} <).*?(>:)/$1$2/;
+	    $rejReas =~ s/^(?:\d{3} \d\.\d\.\d )(Protocol error);.*$/$1/;
 	    $rejReas =~ s/^(?:.*?[:;] )(?:\[[^\]]+\] )?([^;,]+)[;,].*$/$1/;
 	    $rejReas =~ s/^((?:Sender|Recipient) address rejected: [^:]+):.*$/$1/;
-	    $rejReas =~ s/(Client host|Sender address) .+? blocked/blocked/;
+	    $rejReas =~ s/(client|Client host|Sender address) .+? blocked/blocked/;
 	} elsif($rejTyp eq "MAIL") {	# *more* special treatment :-( grrrr...
 	    $rejReas =~ s/^\d{3} (?:<.+>: )?([^;:]+)[;:]?.*$/$1/;
 	} else {
