> > This made me think, shouldn't the DENY code log the deny reason,
> > instead of modifying every plugin to log the reason?
> 
> Only if you can make it consistent and change all the different
> handlers to DTRT.   (IMO).

Like this patch?

Index: Qpsmtpd/SMTP.pm
===================================================================
RCS file: /cvs/public/qpsmtpd/lib/Qpsmtpd/SMTP.pm,v
retrieving revision 1.47
diff -u -u -2 -r1.47 SMTP.pm
--- Qpsmtpd/SMTP.pm     27 Nov 2004 06:38:32 -0000      1.47
+++ Qpsmtpd/SMTP.pm     28 Nov 2004 06:10:57 -0000
@@ -56,4 +56,5 @@
     my ($rc, $msg) = $self->run_hooks("unrecognized_command", $cmd);
     if ($rc == DENY) {
+      $self->log(LOGINFO, "DENY (unrecognized_command): $msg");
       $self->respond(521, $msg);
       $self->disconnect;
@@ -93,9 +94,13 @@
     my ($rc, $msg) = $self->run_hooks("connect");
     if ($rc == DENY) {
-      $self->respond(550, ($msg || 'Connection from you denied, bye bye.'));
+      $msg ||= 'Connection from you denied, bye bye.';
+      $self->log(LOGINFO, "DENY (connect): $msg");
+      $self->respond(550, $msg);
       return $rc;
     }
     elsif ($rc == DENYSOFT) {
-      $self->respond(450, ($msg || 'Connection from you temporarily denied, 
bye bye.'));
+      $msg ||= 'Connection from you temporarily denied, bye bye.';
+      $self->log(LOGINFO, "DENYSOFT (connect): $msg");
+      $self->respond(450, $msg);
       return $rc;
     }
@@ -137,6 +142,8 @@
     # do nothing
   } elsif ($rc == DENY) {
+    $self->log(LOGINFO, "DENY (helo): $msg");
     $self->respond(550, $msg);
   } elsif ($rc == DENYSOFT) {
+    $self->log(LOGINFO, "DENYSOFT (helo): $msg");
     $self->respond(450, $msg);
   } else {
@@ -157,6 +164,8 @@
     # do nothing
   } elsif ($rc == DENY) {
+    $self->log(LOGINFO, "DENY (ehlo): $msg");
     $self->respond(550, $msg);
   } elsif ($rc == DENYSOFT) {
+    $self->log(LOGINFO, "DENYSOFT (ehlo): $msg");
     $self->respond(450, $msg);
   } else {
@@ -250,22 +259,26 @@
     }
     elsif ($rc == DENY) {
+      $msg && $msg .= "(" . $from->format . ")";
       $msg ||= $from->format . ', denied';
-      $self->log(LOGINFO, "deny mail from " . $from->format . " ($msg)");
+      $self->log(LOGINFO, "DENY (mail): $msg");
       $self->respond(550, $msg);
     }
     elsif ($rc == DENYSOFT) {
+      $msg && $msg .= "(" . $from->format . ")";
       $msg ||= $from->format . ', temporarily denied';
-      $self->log(LOGINFO, "denysoft mail from " . $from->format . " ($msg)");
+      $self->log(LOGINFO, "DENYSOFT (mail): $msg");
       $self->respond(450, $msg);
     }
     elsif ($rc == DENY_DISCONNECT) {
+      $msg && $msg .= "(" . $from->format . ")";
       $msg ||= $from->format . ', denied';
-      $self->log(LOGINFO, "deny mail from " . $from->format . " ($msg)");
+      $self->log(LOGINFO, "DENY_DISCONNECT (mail): $msg");
       $self->respond(550, $msg);
       $self->disconnect;
     }
     elsif ($rc == DENYSOFT_DISCONNECT) {
+      $msg && $msg .= "(" . $from->format . ")";
       $msg ||= $from->format . ', temporarily denied';
-      $self->log(LOGINFO, "denysoft mail from " . $from->format . " ($msg)");
+      $self->log(LOGINFO, "DENYSOFT_DISCONNECT (mail): $msg");
       $self->respond(450, $msg);
       $self->disconnect;
@@ -297,13 +310,15 @@
   elsif ($rc == DENY) {
     $msg ||= 'relaying denied';
+    $self->log(LOGINFO, "DENY (rcpt): $msg");
     $self->respond(550, $msg);
   }
   elsif ($rc == DENYSOFT) {
     $msg ||= 'relaying denied';
+    $self->log(LOGINFO, "DENYSOFT (rcpt): $msg");
     return $self->respond(450, $msg);
   }
   elsif ($rc == DENY_DISCONNECT) {
-      $msg ||= 'delivery denied';
-      $self->log(LOGINFO, "delivery denied ($msg)");
+      $msg ||= 'relaying denied';
+      $self->log(LOGINFO, "DENY_DISCONNECT (rcpt): $msg");
       $self->respond(550, $msg);
       $self->disconnect;
@@ -311,5 +326,5 @@
   elsif ($rc == DENYSOFT_DISCONNECT) {
     $msg ||= 'relaying denied';
-    $self->log(LOGINFO, "delivery denied ($msg)");
+    $self->log(LOGINFO, "DENYSOFT_DISCONNECT (rcpt): $msg");
     $self->respond(450, $msg);
     $self->disconnect;
@@ -352,5 +367,7 @@
   }
   elsif ($rc == DENY) {
-    $self->respond(554, $msg || "Access Denied");
+    $msg ||= "Access Denied";
+    $self->log(LOGINFO, "DENY (vrfy): $msg");
+    $self->respond(554, $msg);
     $self->reset_transaction();
     return 1;
@@ -397,20 +414,28 @@
   }
   elsif ($rc == DENY) {
-    $self->respond(554, $msg || "Message denied");
+    $msg ||= "Message denied";
+    $self->log(LOGINFO, "DENY (data): $msg");
+    $self->respond(554, $msg);
     $self->reset_transaction();
     return 1;
   }
   elsif ($rc == DENYSOFT) {
-    $self->respond(451, $msg || "Message denied temporarily");
+    $msg ||= "Message denied temporarily";
+    $self->log(LOGINFO, "DENYSOFT (data): $msg");
+    $self->respond(451, $msg);
     $self->reset_transaction();
     return 1;
   } 
   elsif ($rc == DENY_DISCONNECT) {
-    $self->respond(554, $msg || "Message denied");
+    $msg ||= "Message denied";
+    $self->log(LOGINFO, "DENY_DISCONNECT (data): $msg");
+    $self->respond(554, $msg);
     $self->disconnect;
     return 1;
   }
   elsif ($rc == DENYSOFT_DISCONNECT) {
-    $self->respond(451, $msg || "Message denied temporarily");
+    $msg ||= "Message denied temporarily";
+    $self->log(LOGINFO, "DENYSOFT_DISCONNECT (data): $msg");
+    $self->respond(451, $msg);
     $self->disconnect;
     return 1;
@@ -513,8 +538,12 @@
   }
   elsif ($rc == DENY) {
-    $self->respond(552, $msg || "Message denied");
+    $msg ||= "Message denied";
+    $self->log(LOGINFO, "DENY (data_post): $msg");
+    $self->respond(552, $msg);
   }
   elsif ($rc == DENYSOFT) {
-    $self->respond(452, $msg || "Message denied temporarily");
+    $msg ||= "Message denied temporarily";
+    $self->log(LOGINFO, "DENYSOFT (data_post): $msg");
+    $self->respond(452, $msg);
   } 
   else {
@@ -547,8 +576,12 @@
   }
   elsif ($rc == DENY) {
-    $self->respond(552, $msg || "Message denied");
+    $msg ||= "Message denied";
+    $self->log(LOGINFO, "DENY (queue): $msg");
+    $self->respond(552, $msg);
   }
   elsif ($rc == DENYSOFT) {
-    $self->respond(452, $msg || "Message denied temporarily");
+    $msg ||= "Message denied temporarily";
+    $self->log(LOGINFO, "DENYSOFT (queue): $msg");
+    $self->respond(452, $msg);
   } 
   else {

Reply via email to