I am writing an ACL to do sender reputation tracking. It uses pygossip and exim's readsocket to communicate with it, and it works pretty well except for one issue that I'm having with defining a sub-acl.
My ACL will return an accept or defer after the rcpt to (when it looks up the reputation of the sender). It does the lookup and comes up with an answer, no problem so far.
However, the part that is throwing me is the logic of using a sub-acl. In my exim.conf, I call it like so:
warn acl = acl_check_pygossip
However, per the docs, if the sub-acl returns a defer, the warn statement really just converts it to a false, and it keeps processing past that ACL. What I need it to do is continue past the acl = acl_check_pygossip on accept, but defer it if it returns defer.
I can't quite wrap my head around the logic required to do this. Any bright ideas?