
READ "UPGRADE" IF YOU ARE UPGRADING FROM A PREVIOUS VERSION

Cron job
--------

There is a cron job in /etc/cron.daily/spamassassin that will
automatically run sa-update and reload spamd every day if it is
enabled. To enable this script, edit
/etc/default/spamassassin. sa-update, when run as root, downloads the
latest set of rules distributed by upstream to a directory under
/var/lib/spamassassin. This script will work correctly with sa-compile
(see below).

sa-compile
----------

This package now includes a new plugin to greatly improve the
performance of SpamAssassin by compiling a ruleset using re2c. Please
read the "sa-compile" manpage for more information. To enable this
enhancement, you will need to uncomment a line in
/etc/spamassassin/v320.pre and make sure the following packages are
installed:

 aptitude install re2c libc6-dev gcc make

The "compiled" ruleset is used whenever possible to speed spamassassin
up. If you disable or change a rule in the configuration, the compiled
version will no longer be used. If you create or change a rule, you
will want to run sa-compile to generate the compiled version to
improve performance, but if you don't you will simply use the
un-compiled version.

Trusted Networks
----------------

SpamAssassin has a built in guessing algorithm to determine which
Received headers in a message are trustworthy and which are not. You
should ensure that the configuration option trusted_networks and
internal_networks are set correctly, especially if you are
experiencing false positives from tests referring to Received headers.

Please read man Mail::SpamAssassin::Conf for more information on this.

Plugins
-------

As of version 3.1.0, much of the functionality in SpamAssassin
relating to external programs and perl modules has been removed and
placed in plugins. For example, Razor, DCC and Pyzor have been
"pluginized".

Plugins can be enabled and disabled in /etc/spamassassin/init.pre and
/etc/spamassassin/v310.pre. You may wish to read through those files
to see which plugins you might want to install. In general, plugins
may have dependencies that you may need to install for them to
function. For example, the Razor2 plugin requires that you install
razor. You should read the manpage before enabling a plugin.

Please note that DCC is disabled by default as it is not free.

Configuring spamd
-----------------

spamd, the daemonized form of spamassassin, is generally the preferred
way of running spamassassin. Please read man spamd and README.spamd
for more information. Init scripts are provided with this package in
/etc/init.d/spamassassin. To change the command line options, please
edit /etc/default/spamassassin.

If you intend to use Bayes sitewide, it is recommended that you set up
an SQL-based Bayes storage module. (You may also want to store scores
and other prefences in SQL too.) Please read the documentation in
/usr/share/doc/spamassassin/sql/ for more information.

Please note that SQL storage is not very private -- anyone that has
access to the database can read and write it freely, meaning users
could corrupt other users' Bayes databases.

Poor Performance
----------------

If you experience poor performance with spamd, please ensure that you
have not set the --max-children option too high. spamd now uses a
"Apache httpd style scaling" algorithm to prefork children, so these
children will always be present. Please note also that there seems to be
a bug with respect to how memory usage is reported by the kernel to
programs such as top. Multiple spamd children share much more memory
than is indicated.

One common problem with spamd is that load spikes whenever the Bayes
database needs to be sync'd. This is especially true right after an
upgrade. It's often a good idea to do this manually right after you
upgrade with the command: sa-learn --sync for each user/Bayes DB. (You
can use the --dbpath option to specify the database path)

You can also disable automatic expiry by setting the
"bayes_auto_expire 0" option in your configuration and running
sa-learn --force-expire from a cronjob. See
http://wiki.spamassassin.org/BayesForceExpire

Mail stream integration
-----------------------

There is also a very incomplete set of examples in the examples/
directory. More examples are welcome! Please file a bug against
spamassassin with the minor or wishlist severity and attach a file or
patch.

There is a large amount of information on setting spamassassin up with
your mail system at
http://wiki.apache.org/spamassassin/UsingSpamAssassin.

Configuration Files
-------------------

To add rules, change scores or edit the report template, edit
/etc/spamassassin/local.cf. Please don't touch the files in
/usr/share/spamassassin, as you will NOT be prompted to overwrite them
on upgrade. Configuration file details are available in the
Mail::SpamAssassin::Conf(3) man page.

User-specific configuration is the automatically created
~/.spamassassin/user_prefs, which is copied from
/etc/spamassassin/user_prefs.template. It is automatically created
whenever spamassassin is called, or when spamc is used with 'spamd
-c'.

Semi-free RBLs
--------------

The spamhaus SURBL blacklists are both offer free service to relatively
small mail systems (less than approximately 1,000 mailboxes or 250,000
emails per day).  Larger systems require a paid service.  These
blacklists are enabled by default in this package, but should be
disabled if you run a large system and do not pay for these services.

Non-free RBLs
-------------

By default, spamassassin checks certain free RBLs. Other, commercial
RBLs can easily be enabled. See the README for more
information. Furthermore, SpamAssassin supports using third-party
programs Razor, DCC and Pyzor, but Razor and DCC are disabled by
default since they are not free for non-personal use. Feel free to
enable them in /etc/spamassassin/init.pre

IPv6
----

Some users have reported difficulty running spamd with an IPv6
listening address. As a work around, please ensure you have
libio-socket-inet6-perl installed.

 -- Duncan Findlay <duncf@debian.org>, Mon, 21 May 2007 23:53:57 -0400
