On Wed, 25 Dec 2002, Vadim Vygonets wrote:
> Is there any way to parallelize routing, like remote_max_parallel
> parallelizes delivery?
No. The only way to get parallel routing is to submit multiple copies of
the message.
> This, and the ability to start transports
> for addresses as soon as routing is known would be great, maybe
> grouping the addresses by domains.
If an MTA supports partial domains and "widening", as Exim does, and
this involves rewriting addresses in header lines as a result of
routing, it is not possible to start delivery until all the routing is
done. Example: a message contains this line
To: ph10@cam, vadik-exim@???
and has the same envelope recipients. It is sent from a machine within
cam.ac.uk, so the @cam is widened to @cam.ac.uk. If Exim routed
vadik-exim@??? first, and immediately sent off the message, it
would arrive with an unaltered To: line, which contains an address that
is invalid in our domain. What actually happens is that Exim does all
the routing, and rewrites the To: line as part of the widening. This
means that all recipients get the same message, with fully qualified
addresses.
That's the theory. It works most of the time. It might go wrong if an
address suffers a defer while routing, because Exim doesn't wait - it
sends the message to the other recipients. If the deferred address
subsequently causes a widening re-write later, the copies of the message
sent earlier are wrong. Exim takes this chance, because widening is
usually for local domains, and they don't ususually have routing delays.
This kind of widening was common, and therefore important, when I
started writing Exim. I don't know if is it as common these days.
However, the linearity of routing is part of the fundamental design,
which I suspect would be quite difficult to change.
Philip
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.