Thoughts on the following changes to smtp-forward? These diffs were taken against the svn smtp-forward checked out yesterday.
Thanks.
--- 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!"); }