Patch to smtp-forward

[email protected] (Tony Lambiris)
Newsgroups perl.qpsmtpd
Message-ID <[email protected]>
Thoughts on the following changes to smtp-forward? These diffs were taken
against the svn smtp-forward checked out yesterday.

Thanks.
smtp-forward.patch (text/x-patch, 1.7 KB)
--- smtp-forward	2010-09-13 17:16:07.516676585 -0400
+++ /tmp/smtp-forward	2010-09-14 13:40:37.436676584 -0400
@@ -20,6 +20,13 @@
 =cut
 
 use Net::SMTP;
+use Net::Cmd;
+
+sub trap {
+  my ($smtp) = @_;
+
+  $smtp->code =~ /5[0-9][0-9]/ ? return(DENY, $smtp->message) : return(DENYSOFT, $smtp->message);
+}
 
 sub init {
   my ($self, $qp, @args) = @_;
@@ -52,18 +59,18 @@
                             Timeout => 60,
                             Hello => $self->qp->config("me"),
                            ) || die $!;
-  $smtp->mail( $transaction->sender->address || "" ) or return(DECLINED, "Unable to queue message ($!)");
+  $smtp->mail( $transaction->sender->address || "" ) or return( trap($smtp) );
   for ($transaction->recipients) {
-    $smtp->to($_->address) or return(DECLINED, "Unable to queue message ($!)");
+    $smtp->to($_->address) or return( trap($smtp) );
   }
-  $smtp->data() or return(DECLINED, "Unable to queue message ($!)");
-  $smtp->datasend($transaction->header->as_string) or return(DECLINED, "Unable to queue message ($!)");
+  $smtp->data() or return( trap($smtp) );
+  $smtp->datasend($transaction->header->as_string) or return( trap($smtp) );
   $transaction->body_resetpos;
   while (my $line = $transaction->body_getline) {
-    $smtp->datasend($line) or return(DECLINED, "Unable to queue message ($!)");
+    $smtp->datasend($line) or return( trap($smtp) );
   }
-  $smtp->dataend() or return(DECLINED, "Unable to queue message ($!)");
-  $smtp->quit() or return(DECLINED, "Unable to queue message ($!)");
+  $smtp->dataend() or return( trap($smtp) );
+  $smtp->quit() or return( trap($smtp) );
   $self->log(LOGINFO, "finished queueing");
   return (OK, "Queued!");
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.