Bug#838098: Allow hooking ACL condition blocks similarly to routers, transports and other settings

Rimas Kudelis rq at akl.lt
Sat Sep 17 10:39:27 UTC 2016


Package: exim4-config
Version: 4.87-3

Since Exim4 requires each ACL to be specified by name, and exim4-config 
ships some ACL's, it becomes a bit difficult for external packages to 
add to these ACL's. One option is to specify one of the 
CHECK_*_LOCAL_ACL_FILE macros, but ideally, this would be reserved for 
the user to set, and either way, if more than one package would define 
this, it would either break the configuration or lead to unexpected 
results (only one package's file being read).

What's even worse is that for example CHECK_RCPT_LOCAL_ACL_FILE is being 
read after the following statements:

   # Insist that any other recipient address that we accept is either in 
one of
   # our local domains, or is in a domain for which we explicitly allow
   # relaying. Any other domain is rejected as being unacceptable for 
relaying.
   require
     message = relay not permitted
     domains = +local_domains : +relay_to_domains


   # We also require all accepted addresses to be verifiable. This check 
will
   # do local part verification for local domains, but only check the domain
   # for remote domains.
   require
     verify = recipient


which makes it impossible to use add alternative accept rules before 
these ones.

I suggest to implement ACL's in the same fashion as other parts of the 
configuration. In particular, I'd like to see default ACL's split into 
multiple number-prefixed files, one of them being the header, and others 
containing one or more condition blocks. This way other packages could 
add their own files with their conditions easily, instead of having to 
patch the configuration files shipped by another package (which is what 
greylistd package does, to the best of my understanding). This would 
also allow packages to specify their own accept rules, without altering 
+local_domains or +relay_to_domains.

Exim 4 also allows having quite a few more ACL's than Debian currently 
ships. I think it makes sense to ship all of these by default, even if 
empty, so that other packages wouldn't have to specify them, thus being 
in risk of conflict with other packages doing that as well.



More information about the Pkg-exim4-maintainers mailing list