On Sat, 25 Aug 2007, Dave Evans wrote:
> Clearly there are all sorts of gotchas as reasons why this doesn't work in all
> cases: however, it would be nice if (thinking out loud):
>
> If the message has exactly one recipient, and that recipient gets routed to an
> 'smtp' transport,
Hold it right there. We are still in the SMTP input dialogue, right?
In that situation, Exim routes addresses in "verify" mode, not in
"delivery mode". So the result of routing might well be different. So we
have to build a new interface to re-run the routers in delivery mode,
just for this case.
> then when smtp_data_acl returns 'accept', put the message on
> the queue and attempt delivery immediately. If, within some specifiable
> timeout (like the callout timeout options), the delivery attempt finishes,
> then return accept/defer/deny to the connected SMTP client, and remove the
> message from the queue.
What do you do if the connection from the SMTP client has timed out in
the meantime? You'd have to remember the message id so that when the
client sends the message again, you don't try to deliver it again. If
lots of MTAs adopt this scheme, you may end up with a whole chain going
on... and all sorts of chaos might ensue.
> /me likes wishing out loud :-)
... but I fear there are nasty problems that require a more complicated
approach than just a small tinker.
--
Philip Hazel University of Cambridge Computing Service
Get the Exim 4 book: http://www.uit.co.uk/exim-book