This document provides a historical overview of spam filtering techniques from 1994 to the present, including primitive heuristic filters, advanced heuristic filters, first generation Bayesian filters, and second generation Bayesian filters. It describes the key techniques used in each generation of filters such as tokenization, learning algorithms, evaluation methods, and common attacks from spammers. Current Bayesian filters have reached very high accuracy levels through improvements in preprocessing, tokenization, tuple-based combination of tokens, online evaluation that simulates normal use, and resistance to most attacks through statistical learning from large corpora.