This is exim 4.14 (I have not tested 4.20, but I assume the problem still
exists)
Lets say:
acl_smtp_mail = acl_mail
acl_mail:
accept hosts = 127.0.0.2
#I used .2 for use in -bh exim does this for real as well as
#testing
acl = acl_drop
acl_drop:
<some acl tests>
drop message = bad sender
senders = bad@localhost
<some more acl tests>
I get this:
mail from:<bad@localhost>
>>> using ACL "acl_check_mail"
>>> processing "accept"
>>> check hosts = 127.0.0.1
>>> host in "127.0.0.1"? yes (matched "127.0.0.1")
>>> check acl = acl_drop
>>> using ACL "acl_drop"
>>> processing "drop"
>>> check senders = bad@localhost
>>> localhost in "localhost"? yes (matched "localhost")
>>> bad@localhost in "bad@localhost"? yes (matched "bad@localhost")
>>> drop: condition test succeeded
>>> accept: condition test error
451 Temporary local problem - please try later
LOG: H=localhost (x) [127.0.0.1] temporarily rejected MAIL <bad@localhost>:
bad sender
Changing drop to deny, it works as expected.