Во-первых, модификатор "message" - это не то, что вам нужно, вместо этого вы хотите использовать "add_header", когда вы хотите добавить заголовок к сообщению в ACL. Прочтите http://www.exim.org/exim-html-current/doc/html/spec_html/ch42.html#SECTaddheadacl , если вам нужна дополнительная информация по этой части.
Однако я не Не думаю, что то, что вы пытаетесь сделать, будет работать так, как вы используете. В нутро exim, когда он обрабатывает каждый ACL, запускается ACL, затем, когда ACL завершается , все добавления и удаления заголовка выполнены. Вы выполняете оба эти действия в одном ACL DATA ACL, что означает, что заголовки, добавленные при первом сравнении, еще не были добавлены к сообщению во временных файлах, которые проверяет команда спама.
Один из вариантов - сделать сканирование спама, определите условие, при котором вы бы добавили заголовок, а затем добавьте этот результат к переменной, которая содержит оценку спама при сравнении, чтобы увидеть, является ли это спамом.
Второй вариант, и, на мой взгляд, лучший , означает иметь двух разных пользователей, которых вы используете для сканирования спама. Для одного у вас установлен рейтинг спама (например) 5.0. Для второго у вас установлен рейтинг спама 3,0. Это на 2 балла меньше обычного предела, что равносильно добавлению 2 баллов к оценке спама.
Тогда ваши строфы ACL могут выглядеть так (непроверенные):
warn condition = ${if !match {${lc:$h_envelope-to:}}{${lc:$h_to:}}{yes}{no}}
set $acl_m_env_ok = 1
spam = strict_user:true
warn condtion = ${if eq{$acl_m_env_ok}{1} {no}{yes}}
spam = normal_user:true
warn add_header = X-Spam-Score: $spam_score
add_header = X-Spam-Report: $spam_report
deny condition = ${if eq{$acl_m_env_ok}{1}}
condition = ${if >{$spam_score_int}{30}}
message = This message with mismatched header/envelope score $spam_score_points...REJECTED
deny condition = ${if >{$spam_score_int}{50}}
message = This message scored $spam_score points...REJECTED