sa-compile - compile SpamAssassin ruleset into native code
sa-compile [options]
Options:
--list Output base string list to STDOUT --sudo Use 'sudo' for privilege escalation --keep-tmps Keep temporary files instead of deleting -C path, --configpath=path, --config-file=path Path to standard configuration dir -p prefs, --prefspath=file, --prefs-file=file Set user preferences file --siteconfigpath=path Path for site configs (default: /etc/mail/spamassassin) --updatedir=path Directory to place updates (default: /home/parker/perl5/perlbrew/perls/perl-5.14.1/var/spamassassin/compiled/<perlversion>/3.003003) --cf='config line' Additional line of configuration -D, --debug [area=n,...] Print debugging messages -V, --version Print version -h, --help Print usage message
sa-compile uses re2c
to compile the site-wide parts of the SpamAssassin
ruleset. No part of user_prefs or any files included from user_prefs can be
built into the compiled set.
This compiled set is then used by the
Mail::SpamAssassin::Plugin::Rule2XSBody
plugin to speed up
SpamAssassin's operation, where possible, and when that plugin is loaded.
re2c
can match strings much faster than perl code, by constructing a DFA to
match many simple strings in parallel, and compiling that to native object
code. Not all SpamAssassin rules are amenable to this conversion, however.
This requires re2c
(see http://re2c.org/
), and the C
compiler used to build Perl XS modules, be installed.
Note that running this, and creating a compiled ruleset, will have no
effect on SpamAssassin scanning speeds unless you also edit your v320.pre
file and ensure this line is uncommented:
loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody
Output the extracted base strings to STDOUT, instead of generating the C extension code.
Use sudo(8)
to run code as 'root' when writing files to the compiled-rules
storage area (which is /home/parker/perl5/perlbrew/perls/perl-5.14.1/var/spamassassin/compiled/5.014/3.003003
by default).
Produce less diagnostic output. Errors will still be displayed.
Keep temporary files after the script completes, instead of deleting them.
Use the specified path for locating the distributed configuration files.
Ignore the default directories (usually /usr/share/spamassassin
or similar).
Use the specified path for locating site-specific configuration files. Ignore
the default directories (usually /etc/mail/spamassassin
or similar).
By default, sa-compile
will use the system-wide rules update directory:
/home/parker/perl5/perlbrew/perls/perl-5.14.1/var/spamassassin/compiled/5.014/3.003003
If the updates should be stored in another location, specify it here.
Note that use of this option is not recommended; if sa-compile is placing the
compiled rules the wrong directory, you probably need to rebuild SpamAssassin
with different Makefile.PL
arguments, instead of overriding sa-compile's
runtime behaviour.
Add additional lines of configuration directly from the command-line, parsed after the configuration files are read. Multiple --cf arguments can be used, and each will be considered a separate line of configuration.
Read user score preferences from prefs (usually
$HOME/.spamassassin/user_prefs
) .
Produce debugging output. If no areas are listed, all debugging information is printed. Diagnostic output can also be enabled for each area individually; area is the area of the code to instrument.
For more information about which areas (also known as channels) are available, please see the documentation at http://wiki.apache.org/spamassassin/DebugChannels.
Print help message and exit.
Print sa-compile version and exit.
Mail::SpamAssassin(3)
spamassassin(1)
spamd(1)
Mail::SpamAssassin
re2c
Mail::SpamAssassin::Plugin::Rule2XSBody
See <http://issues.apache.org/SpamAssassin/>
The Apache SpamAssassin(tm) Project <http://spamassassin.apache.org/>
SpamAssassin is distributed under the Apache License, Version 2.0, as
described in the file LICENSE
included with the distribution.