I've taken to breaking up my ACLs into tiny ACLs like one might break up a
large function into several smaller ones; less duplication of logic and so
forth where multiple ACLs have the same prerequisites. So far this is
working fairly well, but I just ran into a small problem with acl conditions
inside acl_smtp_notquit.
Here's a quick test case:
acl_deny:
deny
acl_smtp_notquit:
accept acl = acl_deny
warn logwrite = How rude!
This spits 'ACL for not-QUIT returned ERROR: "deny" is not allowed in a QUIT
or not-QUIT ACL' into my mail log. That would make sense had I written
"acl_smtp_notquit: deny ...", but I didn't, so I'm a bit confused.
According to the exim spec section 40.23, regarding acl conditions:
The named or inline ACL is run. If it returns "accept" the condition is
true; if it returns "deny" the condition is false.
By my understanding, that means "acl = acl_deny" should be considered false,
causing the accept to fail and control to fall through to the following
warn.
So what I'm wondering is, quite simply, am I misunderstanding the
documentation here and the current behavior is correct, or have I stumbled
upon a bug?
This is using Exim 4.68.