Re: Queue Routing?

[email protected] (Steve Kemp)
Newsgroups perl.qpsmtpd
Message-ID <[email protected]>
On Sat Apr 07, 2012 at 09:43:32 -0700, Michael Papet wrote:

> Is there an elegant way to chain queue plugins together this way?

  Use notes.  At the point you make a decision you would set a
 note to record which option you wish to go for, something like:

        ...
         $transaction->notes( "delivery",  "forward" );
       or
         $transaction->notes( "delivery",  "locally" );


  Then in the two queue handlers you'd update their hook routines
 as follows:

   queue/smtp-forward:

sub hook_queue {
  my ($self, $transaction) = @_;

    # add something like this to terminate this plugin if the
    # mail is not to be forwarded
    my $delivery  =$transaction->notes("delivery") || "unknown";
    return DECLINED unless( $delivery =~ /forward/i );
    ...

  }

  Ditto for queue/maildir:


  sub hook_queue {
    my ($self, $transaction) = @_;

    # add something like this to terminate this plugin if the
    # mail is not to be delivered locally
    my $delivery  = $transaction->notes("delivery") || "unknown";
    return DECLINED unless( $delivery =~ /locally/i );
    ...
}


  Passing notes in the transaction objects seems like it makes 
 the most sense because they are designed to maintain state across
 related/unrelated plugin calls - and as you can see the changes you'll
 need to make to the existing plugins is pretty minimal.


Steve
--
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.