The problem:
Because the "spam = ${acl_m1}" line is within a "warn" statement, if SA scanning fails for any reason (spamd dies, connection failure, overloaded SA that reached max connections, etc) then instead of rejecting the email, its accepted.
Here is a possible solution:
Edit /etc/exim.conf, search for the string "detected message as spam" and the above "warn" statement change it to "deny".
So it should look like:
Code:
deny
condition = ${if eq {${acl_m0}}{1}{1}{0}}
spam = ${acl_m1}
log_message = "SpamAssassin as ${acl_m1} detected message as spam ($spam_score)"
...
if SA fails for any reason, the email should be rejected with a temporary failure, thus request the remote server to re-send the email again at a later time, so you won't loose any real emails.