For most of tests use:
exim -bh <IP>
For non-smtp tests:
Create a sample message with full headers and body, “sample.eml”. Make it to an address that you control, a test mailbox or something. Make it from the address that you want it to reject. Pass the message to Exim using the simple commandline:
# No real output exim -bm -t < "sample.eml" # Get verbose output, but still not much exim -v -bm -t < "sample.eml" # Here's where we figure things out: debug exim -d+all -bm -t < "sample.eml"
That last one will product a LOT of output, so maybe redirect it to a text file and view that file. Look to see how it's processing that non-smtp acl when it processes this message.
Another option would be to configure your app that is sending those messages to send using SMTP to 127.0.0.1 port 25, instead of passing a message to /usr/sbin/sendmail (which is the sendmail compatibility wrapper for exim). Then it would use the smtp rcpt acl.