SpamAssassin — эффективное средство для фильтрации спама, основанное на взаимодействии ключевых компонентов — оценочного демона, транспортного агента и базы шаблонов писем. SpamAssassin написан на языке Perl и используется для фильтрации входящей почты одному или нескольким пользователям.
SpamAssassin поставляется с большим набором правил, которые определяют, какие письма являются спамом, а какие нет. Большинство правил основано на регулярных выражениях, которые сопоставляются телу или заголовку сообщения, но SpamAssassin также использует и другие методики. В документации SpamAssassin эти правила называются «tests».
Каждый тест имеет некоторую «стоимость». Если сообщение успешно проходит тест, эта «стоимость» добавляется к общему балу. Стоимость может быть положительной или отрицательной, положительные значения называются «spam», отрицательные «ham». Сообщение проходит через все тесты, подсчитывается общий бал. Чем выше бал, тем больше вероятность, что сообщение является спамом.
У SpamAssassin'а есть настраиваемый порог, при превышении которого письмо будет классифицировано как спам. Обычно порог таков, что письмо должно подойти по нескольким критериям; срабатывание только одного теста недостаточно для превышения порога.