> i have to provide an http-interface to display a status report of filtered
> messages (e.g. viruses or messages with unwanted file extensions)
> i also use the exiscan acl patch for some checks
>
> the best way to do this is to store this information in a database (isnt it?)
> so i set up some lookups in the acl:
>
> (example)
>
> ## blacklisted sender hosts
> SECDB_BLACKLISTED = insert into email_blacklisted ( \
> server, sender_host, sender_address, dnslist, f_date, f_time ) \
> values ( \
> '${quote_mysql:${primary_hostname}}', \
> '${quote_mysql:${sender_host_address}}', \
> '${quote_mysql:${reply_address}}', \
> '${quote_mysql:${dnslist_domain}}', \
> now(), \
> now() );
>
> deny message = your host is blacklisted at $dnslist_domain
> dnslists = relays.ordb.org
> condition = ${lookup mysql{SECDB_BLACKLISTED}{1}}
^^
You don't have a failure condition.
change to: ${lookup mysql{SECDB_BLACKLISTED}{1}{1}}
(I prefer the words "yes" and "no" instead of 0 and 1)
> where SECDB_BLACKLISTED is a "insert" query and expanded
>
> is there a better solution? i'm not happy with this one because exim
> gives temporary errors if there's a problem with the database
> thats okay! the acl is a way to control access and not to log into database.
> anyway .. i searched the specification up and down but did'nt find any other
> way