Jürgen Herz wrote:
>>> acl_c0 contains various key/value pairs like uid and mailbox for calling
>>> maildrop in the transporters. It's populated by a ldap lookup (in
>>> acl_smtp_rcpt) and I'm using that to test if the message is for one of
>>> the virtual users.
>> ...which in the case of a locally-generated message won't be populated -
>> RCPT only exists in an SMTP transaction.
>>
>> Can you call it somewhere else in the flow, or use the non-smtp ACL to
>> fill in the gaps?
>
> I wrote that I also added a similar lookup in acl_not_smtp. I guess I
> wasn't clear that I also populate acl_c0 there with the same values.
> Might it be that the local_parts fails because exim doesn't have a local
> part in this situation?
In acl_not_smtp there is no $local_part and no $domain defined, because
there can potentially be multiple recipients and that acl is run only
once. $recipients contains a comma separated list of the recipients.
Without going into the reasons why, I have an odd situation in my own
configuration, which you might be able to build on. Sometimes I want to
do recipient verification callouts for mail that has been submitted
locally. This can't be done in acl_not_smtp nor the routers so what I
did was create a router:
reroute_locally:
driver = manualroute
domains = ! +local_domains
condition = ${if eq{$interface_address}{}}
transport = remote_smtp
route_list = * "127.0.0.1"
self = send
no_verify
That way, even locally generated mail ends up passing through the
"normal" acl's
Mike