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