On Wed, 10 Sep 2003, Sam Michaels wrote:
> I have to give Philip Hazel (can I call you Phil?)
Sure. I answer to all sorts of names. :-)
> I'd be nice if there was something similar to smtp_ratelimit_* where the
> master process keeps tracks of things and will set a variable if the
> threshold is reached.
Please note: there is no "master process" in Exim. You do not have to
run a daemon.
> In an ACL...let's say the acl_smtp_connect:
> deny message = Service unavailable
> condition = ${if {$acl_ratelimit_deny_reached}{1}{0}}
>
> 'acl_ratelimit_deny' will make $acl_ratelimit_deny_reached be true if the
> host received a 'deny' inside ANY of the ACL checks 5 times within 10
> minutes and will be active for 24 hours.
You could probably build something for yourself that played these kinds
of games, by writing a program to maintain the information in a DBM
file, and using ${run to update it (taking care with locking).
Another way to maintain the data would be via a program that tails the
Exim reject log file.
> Obviously you'd need to create another db to keep track of the ratelimits
Another db => another bottleneck, but I suppose if it is only updated
for denials, it may not be too bad. However, we seem to be denying at a
heck of a rate these days. It is fast becoming the norm, with "real"
mail being the exception. :-(
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
Get the Exim 4 book: http://www.uit.co.uk/exim-book