Когда около года назад я начал пользоваться SpamAssassin, мне не нравилось то, что явный спам даже при высоких показателях Bayes-фильтра не удалялся, а просто помечался системой, если не набиралось достаточного количества других формальных критериев (блэклисты, дайджест-сети и т.п.)
С другой стороны, при средних значениях Bayes и двух-трех совпавших формальных признаках сообщение также не “дотягивало” до кол-ва очков, необходимых для удаления.
Проанализировав содержимое того, что отмечалось Thunderbird-ом как Junk Mail уже после прохождения фильтра на сервере, я пришел к довольно простой идее: если сообщение имеет показатель Bayes-фильтра больше 50, и одновременно является спамом по одному или более формальных признаков, вероятность того, что сообщение - спам, существенно увеличивается, и соответственно нужно увеличивать кол-во начисляемых SpamAssassin баллов. Реализовать это оказалось несложно.
Ниже - несколько примеров созданных в файле local.cf правил.
Пример #1
meta BAYES_HIGH_BADRELAY ( BAYES_80 || BAYES_95 || BAYES_99 ) && UNPARSEABLE_RELAY describe BAYES_HIGH_BADRELAY Unparsable relay in message with high Bayes score score BAYES_HIGH_BADRELAY 0 0 3.3 3.3 meta BAYES_AVRG_BADRELAY ( BAYES_50 || BAYES_60 ) && UNPARSEABLE_RELAY describe BAYES_AVRG_BADRELAY Unparsable relay in message with average Bayes score score BAYES_AVRG_BADRELAY 0 0 1.7 1.7
Физический смысл: если письмо содержит некорректный заголовок Received и Bayes-вероятность того, что это спам, составляет больше 80%, увеличить кол-во баллов на 3,3. При аналогичной ситуации для Bayes-вероятности больше 60% - то же самое, но увеличить только на 1.7.
Пример #2
meta BAYES_HIGH_RAZOR2 ( BAYES_99 || BAYES_95 || BAYES_80 ) && RAZOR2_CHECK describe BAYES_HIGH_RAZOR2 High Bayes probability matches Razor2 check score BAYES_HIGH_RAZOR2 0 0 0 3.5 meta BAYES_AVG_RAZOR2 ( BAYES_60 || BAYES_50 ) && RAZOR2_CHECK describe BAYES_AVG_RAZOR2 Average Bayes probability matches Razor2 check score BAYES_AVG_RAZOR2 0 0 0 2.7
Аналогично, при одновременном совпадении определенной вероятности по результатам Bayes-анализа и положительным результатам теста в дайджест сети, увеличивать кол-во баллов для сообщения.
Вышеописанный подход очень хорошо расчищает входящий почтовый трафик, и в то же время застрахован от false positives, т.к. опирается на уже существующие и проверенные базовые правила. Минусом, конечно, является то, что приходится анализировать проходящую через фильтр почту.