logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

sa-compile - compile SpamAssassin ruleset into native code

Authors

       The Apache SpamAssassin(tm) Project <https://spamassassin.apache.org/>

Bugs

       See <https://issues.apache.org/SpamAssassin/>

Description

       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 "https://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

       Additionally, "sa-compile" will not restart "spamd" or otherwise cause a scanner to reload the now-
       compiled ruleset automatically.

Name

       sa-compile - compile SpamAssassin ruleset into native code

Options

--list
           Output the extracted base strings to STDOUT, instead of generating the C extension code.

       --sudo
           Use  sudo(8)  to  run  code as 'root' when writing files to the compiled-rules storage area (which is
           "/var/lib/spamassassin/compiled/5.040/4.000001" by default).

       --quiet
           Produce less diagnostic output.  Errors will still be displayed.

       --keep-tmps
           Keep temporary files after the script completes, instead of deleting them.

       -Cpath, --configpath=path, --config-file=path
           Use the specified path  for  locating  the  distributed  configuration  files.   Ignore  the  default
           directories (usually "/usr/share/spamassassin" or similar).

       --siteconfigpath=path
           Use  the  specified  path  for  locating  site-specific  configuration  files.   Ignore  the  default
           directories (usually "/etc/spamassassin" or similar).

       --updatedir
           By default, "sa-compile" will use the system-wide rules update directory:

                   /var/lib/spamassassin/compiled/5.040/4.000001

           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.

       --cf='configline'
           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.

       -pprefs, --prefspath=prefs, --prefs-file=prefs
           Read user score preferences from prefs (usually "$HOME/.spamassassin/user_prefs") .

       -D [area,...], --debug [area,...]
           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 <https://wiki.apache.org/spamassassin/DebugChannels>.

       -h, --help
           Print help message and exit.

       -V, --version
           Print sa-compile version and exit.

Prerequisites

       "Mail::SpamAssassin" "re2c" "Mail::SpamAssassin::Plugin::Rule2XSBody"

See Also

Mail::SpamAssassin(3) spamassassin(1) spamd(1)

Synopsis

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: /usr/etc/spamassassin)
         --updatedir=path              Directory to place updates
                 (default: /var/lib/spamassassin/compiled/<perlversion>/4.000001)
         --cf='config line'            Additional line of configuration
         -D, --debug [area=n,...]      Print debugging messages
         -V, --version                 Print version
         -h, --help                    Print usage message

See Also