Wietse Venema:
> Ralph Seichter:
> > * Wietse Venema:
> > 
> > > What problem are you trying to solve?
> > 
> > Milters A, B and C in my example scenario can trigger asynchronous
> > actions in backend systems, the results of which become available only
> > after a delay caused by processing, which takes about 3 minutes. These
> > results are required by milter D, and it is not feasible to have Postfix
> > hold the original sender's session in an active state for this amount of
> > time.

Edited for clarity, and one additional suggestion:

> Use milter_header_checks to trigger a FILTER action. 
> 
>     internet -> smtpd(with milters A-C) -> cleanup -> queue
> 
> If the message has no magical headeer, it is delivered as usual.
> 
>     queue -> smtp -> network
>     queue -> local -> mailbox
> 
> Otherwise it is sent though a content filter than can be empty
> 
>     queoe -> smtp(with large timeout) -> 
>       smtpd(with milter D, with large milter timeout) -> cleanup -> queue
> 
> and then it is delivered as usual.
> 
> This requires that Milter D blocks until the nedessary info is available.

Perhaps better, Milter D defers the message immrediately, and Postfix retries 
a few minutes later, until the necessary data is available.

You may need to tweak queue_run_delay, minimal_backoff_time and
maximal_backoff_time. 

        Wietse

Reply via email to