NAME

Mail::SpamAssassin::Spamd

SYNOPSIS

use base qw(Mail::SpamAssassin::Spamd);
sub ... { ... }
...

DESCRIPTION

This module contains a skeleton for handling client request in spamd implementation. Must not be used directly, but subclassed.

An instance should have lifetime of a single request.

Interface is likely to change.

See the source code of spamd(1) and Mail::SpamAssassin::Spamd::Apache2(3).

AUTHORS

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

COPYRIGHT

SpamAssassin is distributed under the Apache License, Version 2.0, as described in the file LICENSE included with the distribution.

METHODS

log_connection()

Call as soon as the connection is accepted.

log_start_work()

Call after parse_msgids().

log_end_work()

Call after pass_through_sa().

log_result()

Call as late as possible, after sending response to the client.

check_headers()

Sanity checks on headers sent by the client. Sends status line indicating error to the client and returns false on first problem found.

parse_msgids()

Extract the Message-Id(s) for logging purposes.

service_unavailable_error('error message')
protocol_error('error message')
service_timeout('error message')

Send appropriate status line to the client and log the error.

send_status_line('EX_FOO', 'message')

EX_error constant defaults to EX_OK. Message defaults to the name of the constant.

send_response()

Generates response (headers and body, no status line) to the request and sends it to the client.

pass_through_sa()

Runs the actual tests. Wrap it with eval() to implement timeout.

spamhdr()

Generates the Spam: status ; score / threshold response header.

read_user_config()

Read config for the current user and register a cleanup handler to restore state of the SA object later. This is a wrapper around the handle_user_* methods.

handle_user_sql('username')

load_scoreonly_sql for the given user. Do not call this directly.

handle_user_ldap()

load_scoreonly_ldap for the given user. Do not call this directly.

status()

Returns the Mail::SpamAssassin::PerMsgStatus object. Only valid after pass_through_sa().

spamtest()

Returns the Mail::SpamAssassin object.

access_info()
user()

Returns username as supplied by client in the User header or string '(unknown)'. Use for logging purposes.

cfg()

Returns Mail::SpamAssassin::Spamd::Config object (or hash reference with resembling values).

headers_in()

Hash ref containing headers sent by the client.

cleanup_register(sub { ... }, $argument)

APR::Pool functionality -- call a piece of code when the object is destroyed.

The following methods must be overloaded:

_remote_host()
_remote_ip()
_remote_port()

Information about the client.

new( spamtest => $sa_object, foo => 'bar', ... )

Creates new object; shift && bless { @_ }, basically.

handle_user_local('username')

read_scoreonly_config for the given user. You might want to change uid, chdir, set $ENV, etc. Do not call this directly.

read_body()

Read body from the client, run $self->spamtest->parse and store result as the parsed key.

read_headers()

Read method and headers from the client. Set various properties accordingly.

send_buffer('list of', 'buffers to send')

Send buffers to the client.

auth_ident()

XXX