Mail::SpamAssassin::SQUsereContributed)Mail::SpamAssassin::SQLBasedAddrList(3)NAMEMail::SpamAssassin::SQLBasedAddrList - SpamAssassin SQL Based Auto
Whitelist
SYNOPSIS
my $factory = Mail::SpamAssassin::SQLBasedAddrList->new()
$spamtest->set_persistent_addr_list_factory ($factory);
... call into SpamAssassin classes...
SpamAssassin will call:
my $addrlist = $factory->new_checker($spamtest);
$entry = $addrlist->get_addr_entry ($addr, $origip);
...
DESCRIPTION
A SQL based persistent address list implementation.
See "Mail::SpamAssassin::PersistentAddrList" for more information.
Uses DBI::DBD module access to your favorite database (tested with
MySQL, SQLite and PostgreSQL) to store user auto-whitelists.
The default table structure looks like this: CREATE TABLE awl (
username VARCHAR NOT NULL,
email VARCHAR NOT NULL,
ip VARCHAR NOT NULL,
count INT NOT NULL,
totscore FLOAT NOT NULL,
PRIMARY KEY (username, email, ip) )
You're table definition may change depending on which database driver
you choose. There is a config option to override the table name.
This module introduces several new config variables:
user_awl_dsn
user_awl_sql_username
user_awl_sql_password
user_awl_sql_table
user_awl_sql_override_username
see "Mail::SpamAssassin::Conf" for more information.
new
public class (Mail::SpamAssassin::SQLBasedAddrList) new ()
Description: This method creates a new instance of the SQLBasedAddrList
factory and calls the parent's (PersistentAddrList) new method.
new_checker
public instance (Mail::SpamAssassin::SQLBasedAddrList) new_checker (\%
$main)
Description: This method is called to setup a new checker interface and
return a blessed copy of itself. Here is where we setup the SQL data‐
base connection based on the config values.
get_addr_entry
public instance (\%) get_addr_entry (String $addr)
Description: This method takes a given $addr and splits it between the
email address component and the ip component and performs a lookup in
the database. If nothing is found in the database then a blank entry
hash is created and returned, otherwise an entry containing the found
information is returned.
A key, "exists_p", is set to 1 if an entry already exists in the data‐
base, otherwise it is set to 0.
add_score
public instance (\%) add_score (\% $entry, Integer $score)
Description: This method adds a given $score to a given $entry. If the
entry was marked as not existing in the database then an entry will be
inserted, otherwise a simple update will be performed.
NOTE: This code uses a self referential SQL call (ie set foo = foo + 1)
which is supported by most modern database backends, but not everything
calling itself a SQL database.
remove_entry
public instance () remove_entry (\% $entry)
Description: This method removes a given $entry from the database. If
the ip portion of the entry address is equal to "none" then remove any
perl-IP entries for this address as well.
finish
public instance () finish ()
Description: This method provides the necessary cleanup for the address
list.
_unpack_addr
private instance (String, String) _unpack_addr(string $addr)
Description: This method splits an autowhitelist address into it's two
components, email and ip address.
perl v5.8.82008-Mail::SpamAssassin::SQLBasedAddrList(3)