Re: [Exim] Exim version 4.14

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Rick Ennis
CC: Nico Erfurth, exim-users
Subject: Re: [Exim] Exim version 4.14
On Thu, 13 Mar 2003, Rick Ennis wrote:

> So that means they don't persist between the acls and the routers? But what
> about $address_data? Looking at entry 38 under the 4.11 ChangeLog...
>
> > 38. After verify=recipient in an ACL, the value of $address_data is the
> last
> >       value that was set while routing the address.

>
> Does that not mean back in the acl?


I see your confusion, and I'm glad to have done so, because it shows me
that I have to explain this carefully in the next edition of the manual.

1. When the routers are run as part of a verify=xxx condition an an ACL,
the $acl_xxx variables are available to the routers, and $address_data
comes back, as you say.

2. Once a message is accepted, however, the $acl_variables are
forgotten. When the routers are run as part of the delivery process, the
$acl_variables are not available. This is the case that Nico and I were
discussing.

> 1) I tried setting
> address_data = $local_part
> in my router that's doing the verify. But I didn't have much luck with
> expand_string("$address_data") in local_scan.


That's because $address_data is cleared at the end of the ACL (because
it's a per-recipient thing, and there may be multiple recipients).

> 2) I tried the same thing as #1 above, but added
> warn set acl_m1 = $address_data
> in an acl immediately after my verify = recipient.
> I then used expand_string("$acl_m1") in local_scan and still didn't get what
> I wanted.


At first sight, I would have expected that to work.

> Is there a standard solution to this one? There must be a way to get at the
> routed address from within local_scan b/c the verifying stage has to have
> already completed. Am I just being dense?


Well, the list of recipients is available to local_scan()...


--
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.