WJCarpenter wrote:
> Tony Finch wrote:
>> On Sat, 9 Feb 2008, WJCarpenter wrote:
>>
>>> Is there any way to customize that (or at least get the recipient
>>> address to be mentioned)?
>>>
>> Use the ACL message modifier and include $local_part@$domain
>> and $acl_verify_message.
>>
>
> Thanks for the suggestion, but I'm already doing that. The case I'm
> asking about is specifically for a DNS failure ("451 host lookup did not
> complete"). It bypasses my ACL message completely and is returned
> literally as the RCPT TO: response.
>
The general case here is that you are running into an error returned
*within* the acl clause (even if the DNS lookup fail was cached earlier).
To avoid that, pre-build a string into an acl_<variable> in earlier
'warn' verb clause(s) where any error(s) returned affecteth not your
ultimate error message.
You can progressively concatenate as you go into a single (or few) such
variables.
Then concatenate that (such as it is) with any other text as need be
within the ultimate deny/defer/ acl clause.
e.g.
warn
set acl_c1 = $sender_host_address $sender_host_name
warn
set acl_c1 = Traffic from $acl_c1 for $local_part@$domain
Later:
deny
message = Rules were broken for $acl_c1
Where a failed lookup in or before the 'warn' may leave nothing more in
the acl_c(x) than the connecting IP address alone, but we do not care,
and those tests are not called again in the 'deny' that returns the
message we built.
(fragments shown not specifically tested, but we do similar stuff all
day, every day).
Bill