On Sat, Aug 25, 2007 at 10:02:38AM +0100, Philip Hazel wrote:
> > Recipient callout verification takes care of nonexisting users (if no better
> > method is possible) as well as other errors that can be detected at RCPT
> > time. Later errors will result in an NDR, but to completely eliminate them
> > you will need to complete all deliveries, whether local or remote, before
> > returning an OK status. That can take a long time and would require a rather
> > fundamental redesign.
>
> Indeed. Remember that "a long time" might be days... The "better method"
> referred to might be a shared database, LDAP or otherwise.
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, 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. If the delivery attempt does not complete within that
period, presumably you'd have to return 'accept' to the SMTP client, and
continue the delivery attempt in the background: i.e. more or less normal
handling from then on.
Maybe the "only if routed to an smtp transport" requirement isn't necessary,
even.
/me likes wishing out loud :-)
--
Dave Evans
Power Internet Limited, registered in England #03053650 at Norfolk House,
82 Saxon Gate West, Central Milton Keynes, Buckinghamshire, MK9 2DL.
For more information, see
http://www.powernet.co.uk/~davide/about-powernet