I was having trouble with Exim not adding headers to SpamAssassin-checked emails. One day, when I should have really been doing something else, I read Chapter 40 of Exim’s specification, and all became clear.
Here’s what my appropriate ACL (in /etc/mail/exim.conf) looks now, almost completely by-the-book:
acl_check_data:
# ...
# malware section
# ...
# Add headers to a message if it is judged to be spam. Before enabling this,
# you must install SpamAssassin. You may also need to set the spamd_address
# option above.
# spams are never big and spamassassin can die on big emails, so we
# limit its use under 100kb
accept condition = ${if >={$message_size}{100k}{yes}{no}}
# put headers in all messages (no matter if spam or not)
warn spam = spamd:true
add_header = X-Spam-Score: $spam_score ($spam_bar)
add_header = X-Spam-Report: $spam_report
# add second subject line with *SPAM* marker when message
# is over threshold
warn spam = spamd
add_header = Subject: *SPAM* $h_Subject:
# reject spam at high scores (> 20)
deny message = This message scored $spam_score spam points.
spam = spamd:true
condition = ${if >{$spam_score_int}{200}{1}{0}}
# Accept the message.
accept
Advertisements