On Sun, 18 Sep 2005, Brian Candler wrote: > > - invoking another user-written filter at RCPT stage would allow users to > customise policy for message rejection. For example, Exim could previously > set $acl_m0 to the number of RBL lists which a message has triggered, and > then the user could write > > if $acl_m0 is not below 3 then fail endif > > to bounce messages matching 3 or more RBLs. Right now, if you want to give > this sort of control to users you have to write complex ACLs which perform > external lookups for these parameters.
Actually, if you change the userforward router in the right way, you can cause it to run the user's filter as part of recipient verification. This requires a bit of care, because the filter must be run as the exim user, not as the recipient user. Essentially what you have to do is remove no_verify (so that the filter run is attempted) and check_local_user (to avoid the side-effect of Exim trying to switch to the recipient user's id), and add a require_files check (because the built-in check in the redirect router's file option isn't quite what you want). > - if there were string expansions or 'if' conditions for RBL lookups and > suchlike, users could directly set their RCPT TO policies without help from > the ACL. Isn't dnsdb enough for this? However the syntax is not for the faint of heart... > <sky colour="blue"> > I wonder what Exim 5 would look like if the ACL language and the filter > language were merged? > </sky> Exim has about 5 little languages: filters (2 kinds), ACLs, string expansions, and matching lists. You could view the first two as the statement part of a language and the latter two as the expression part, so this count is a little inflated. I used to think that Tcl could be made into a decent configuration language for Exim, but my preference for typed statically checked languages means I now think Haskell is the right answer. In both cases, Exim just becomes a library of functions with a main program that sets things up and calls the postmaster's configuration code at appropriate times. Tony. -- <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> http://dotat.at/ ${sg{\N${sg{\ N\}{([^N]*)(.)(.)(.*)}{\$1\$3\$2\$1\$3\n\$2\$3\$4\$3\n\$3\$2\$4}}\ \N}{([^N]*)(.)(.)(.*)}{\$1\$3\$2\$1\$3\n\$2\$3\$4\$3\n\$3\$2\$4}} -- ## List details at http://www.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://www.exim.org/eximwiki/
