Re: [EXIM] Wish-list "votes" (Was: Future development)

Página superior
Eliminar este mensaje
Responder a este mensaje
Autor: Philip Hazel
Fecha:  
A: Sean Witham
Cc: David Sheryn, exim-users
Asunto: Re: [EXIM] Wish-list "votes" (Was: Future development)
On Thu, 9 Jul 1998, Sean Witham wrote:

> > If an address is handled by a specific router or director, an option
> > on that driver is able to request that rewriting take place on the
> > addresses in the envelope and headers, exactly like the "global"
> > rewriting rules. This rewriting will happen in the single copy of the
>
> Not for me I need them to be different from the global rules and thus
> NOT be visible to all recipients !


OK, I now have it down that there are two different requirements here.

> > That is simpler, but unfortunately not much. The problem is that when a
> > message is deferred, the headers are re-written to the spool file for
> > use at the next delivery attempt, so all this rewriting would be
> > recorded, and if you've rewritten envelope addresses, they will be
> > different next time. Either there has to be some extremely careful
> > documentation of the consequences of all of this, or this rewriting has
> > to be done on a copy of the headers and envelope so that they don't get
> > saved. This is now getting similar to the problem I saw before :-(
> >
> do the term fork and vfork come to mind ?


No. I can't see that that would help at all. It's the fact that only one
copy of the headers exist and are saved for retries that makes this
hard.

> It does look like at least
> the cloneing of the envelope and the headers is required and even the
> the rest of the body of message is not need I can see it be simpler to
> clone the lot.


Indeed. Sharing a copy of the body between different messages would
require a whole redesign of the way Exim handles its spool files,
including the way it locks messages. It just ain't built that way.

There are also all sorts of horrid complications. Consider a message to
two recipients containing

To: x@abcd, y@???

Now, if you clone that at the start so that there are two copies the
headers, and then if routing of x@abcd discovers that this is an
abbreviated address which really should be x@???, then that
rewrite won't get done in the copy of the headers being used for the
y@??? address. So the only way to do this "properly" would be

(a) Have one copy of the headers and addresses.

(b) Do all the routing and directing, and any header rewriting that
happens as a result of the routing, as is done now. If any routers or
directors specify your special kind of rewriting, remember the fact with
each address.

(c) Make a copy of the headers for each address (and a copy of the
envelope).

(d) Apply the special rewriting.

(e) Do the deliveries with the special copy of the headers for each
address and the possibly rewritten envelope address(es). For remote
deliveries, only batch up into multiple RCPT commands if the headers and
sender are the same.

(f) If the message is deferred, save the one "main" copy of the headers,
and the original envelopes. I'm not sure if any rewriting data would
have to be saved too. Maybe not, since the routing is going to be
redone.

(g) And other things I haven't thought of.

All this is _massive_ redesign in the guts of Exim. Sufficient, I would
think, to warrant calling it Exim2 or something. Consequently I am not
at the moment very enthusiastic.

-- 
Philip Hazel                   University Computing Service,
P.Hazel@???          New Museums Site, Cambridge CB2 3QG,
ph10@??? (sic)       England.  Phone: +44 1223 334714



--
*** Exim information can be found at http://www.exim.org/ ***