Re: [exim] Recipient Checking

Top Page
Delete this message
Reply to this message
Author: Phil Pennock
Date:  
To: Daniel Aquino
CC: exim-users
Subject: Re: [exim] Recipient Checking
On 2007-12-12 at 19:23 -0500, Daniel Aquino wrote:
> On Dec 12, 2007 3:48 AM, Phil Pennock <exim-users@???> wrote:
>
> > You can use an "accept" Router with "verify_only" on it, with
> > ${readsocket}. Untested:
> > verify_against_my_funky_daemon:
> > driver = accept
> > verify_only
> > domains = +local_domains
> > condition = ${readsocket{/path/to/socket}{$local_part@$domain}}
> > The socket response should be 'yes' or some other Exim true value.
> > No transport required because it's only used for verification.
>
> When you say verify_only...
> That will still send back recipient failures correct?


Provided that your RCPT ACL looks anything like the default/normal one
and has something like "require verify = recipient" as a stanza in it,
or some equivalent.

The routers are run at address verification time in verify mode; see
"3.9 Processing an address for verification" in The Exim Specification
(spec.txt, etc). Also 3.8 for more on delivery in general.

> > The documentation on the ${readsocket} expansion item explains the
> > tuning you can do; eg, changing response timeout.
>
> I hope I can turn off caching...


Exim tends to be pretty conservative and only caches local lookups where
safe to do so. Remote lookups are cached to be considerate to others
and remote delivery failures are remembered. For named lists, Exim
determines if it can reasonably expect the result to be the same every
time; you have to explicitly turn on this caching if there's even a hint
that it won't be the same ("10.7 Named list caching").

To see what's actually going on, run "exim -d+all -be"; this will log
(almost) everything going on whilst providing you with the interactive
expansion testing mode. Supply something like:
${readsocket{/var/run/clamav/clamd}{PING}}
a couple of times, see that each time it connects to the socket and
writes something.

If you want to turn *on* this caching, you'd need to embed it in
something like a localpartlist_cache (and use a local_parts option on
the Driver) or an addresslist_cache.

-Phil