Mail::SpamAssassin::Conf::Parser - parse SpamAssassin configuration


  (see Mail::SpamAssassin)


Mail::SpamAssassin is a module to identify spam using text analysis and several internet-based realtime blacklists.

This class is used internally by SpamAssassin to parse its configuration files. Please refer to the Mail::SpamAssassin documentation for public interfaces.


This is the structure of a config-setting block. Each is a hashref which may contain these keys:

the name of the setting it modifies, e.g. ``required_score''. this also doubles as the default for 'command' (below). THIS IS REQUIRED.

The command string used in the config file for this setting. Optional; 'setting' will be used for the command if this is omitted.

An [aryref] of other aliases for the same command. optional.

The type of this setting:
           - $CONF_TYPE_STRING: string
           - $CONF_TYPE_NUMERIC: numeric value (float or int)
           - $CONF_TYPE_BOOL: boolean (0 or 1)
           - $CONF_TYPE_TEMPLATE: template, like "report"
           - $CONF_TYPE_ADDRLIST: address list, like "whitelist_from"
           - $CONF_TYPE_HASH_KEY_VALUE: hash key/value pair,
             like "describe" or tflags

If this is set, a 'code' block is assigned based on the type.

Note that $CONF_TYPE_HASH_KEY_VALUE-type settings require that the value be non-empty, otherwise they'll produce a warning message.

A subroutine to deal with the setting. Only used if type is not set. ONE OF code OR type IS REQUIRED. The arguments passed to the function are ($self, $key, $value, $line), where $key is the setting (*not* the command), $value is the value string, and $line is the entire line.

There are two special return values that the code subroutine may return to signal that there is an error in the configuration:

$Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE -- this setting requires that a value be set, but one was not provided.

$Mail::SpamAssassin::Conf::INVALID_VALUE -- this setting requires a value from a set of 'valid' values, but the user provided an invalid one.

Any other values -- including undef -- returned from the subroutine are considered to mean 'success'.

The default value for the setting. may be omitted if the default value is a non-scalar type, which should be set in the Conf ctor. note for path types: using ``__userstate__'' is recommended for defaults, as it allows Mail::SpamAssassin module users who set that configuration setting, to receive the correct values.

Set to 1 if this setting requires 'allow_user_rules' when run from spamd.

Set to 1 if this setting can only be set in the system-wide config when run from spamd.

Set to 1 if this value occurs frequently in the config. this means it's looked up first for speed.

Note that the registered commands array can be extended by plugins, by adding the new config settings to the $conf-<gt{registered_commands}> array ref.