SpamAssassin is a Perl program that scores email messages on the basis of several different criteria, including heuristics, Bayesian, distributed checksums, blackhole listing service checks, and blacklists/whitelists. It allows administrators and certain users to generate their own rules for helping to determine whether or not a message should be considered spam.
For our coverage, SpamAssassin is run on a per-user basis by Procmail (Sendmail/Postfix) or .qmail files (qmail). It is configured to run on a system-wide basis by milter/MIMEDefang (Sendmail), amavisd-new (Postfix), or Qmail-Scanner (qmail). SpamAssassin has many configuration parameters in three separate classes. The as-distributed settings can produce a reasonable and working implementation for most organizations. Rules can be defined by administrators and certain users, allowing customized scoring rules to be enabled.