Courier::Filter::Module - Abstract Perl base class for filter modules used by
the Courier::Filter framework
use Courier::Filter::Module::My; # Need to use a non-abstract sub-class.
my $module = Courier::Filter::Module::My->new(
logger => $logger,
inverse => 0,
trusting => 0,
testing => 0,
debugging => 0
);
my $filter = Courier::Filter->new(
...
modules => [ $module ],
...
);
package Courier::Filter::Module::My;
use base qw(Courier::Filter::Module);
Sub-classes of
Courier::Filter::Module are used by the
Courier::Filter mail filtering framework to determine the acceptability
of messages. See Courier::Filter::Overview for an overview of how filter
modules are used and for how to write them.
When overriding a method in a derived class, do not forget calling the inherited
method from your overridden method.
The following constructor is provided and may be overridden:
-
new(%options): returns
Courier::Filter::Module
- Creates a new filter module using the %options. Initializes
the filter module, by opening I/O handles, connecting to databases,
creating temporary files, initializing parser libraries, etc..
%options is a list of key/value pairs representing any of the following
options:
- logger
- A Courier::Filter::Logger object that will be used
for logging message rejections and error messages caused by this
individual filter module. If no logger is specified, Courier::Filter's
global logger will be used.
- inverse
- A boolean value controlling whether the filter module
should operate with inverse polarity ( true) as opposed to normal
polarity ( false). Under inverse polarity, the result of the
"match" method is negated by the "consider" method
before returning it. For details on how Courier::Filter translates
match results into acceptability results, see "How
filter modules work" in Courier::Filter::Overview. Defaults to
false.
- trusting
- A boolean value controlling whether the filter module
should not be applied to trusted messages. For details on how the
trusted status is determined, see the description of the
"trusted" property in Courier::Message. In most configurations,
this option can be used to white-list so-called outbound messages.
Defaults to false.
- testing
- A boolean value controlling whether the filter module
should run in testing mode. In testing mode, planned message rejections
will be logged as usual, but no messages will actually be rejected.
Defaults to false.
- debugging
- A boolean value controlling whether the filter module
should log extra debugging information. Defaults to false.
Derived classes may support additional options.
"Courier::Filter::Module::new()" creates a hashref as an object of the
invoked class, and stores the %options in it, but does nothing else.
The following destructor is provided and may be overridden:
- destroy
- Uninitializes the filter module, by closing I/O handles,
disconnecting from databases, deleting temporary files, uninitializing
parser libraries, etc..
"Courier::Filter::Module::destroy()" does nothing. Sub-classes may
override this method and define clean-up behavior.
The following class methods are provided and may be overridden:
- warn($text)
- Writes a warning message to syslog. This method may also be
used as an instance method.
The following instance methods are provided and may be overridden:
-
consider($message): returns string,
[string]; throws Perl exceptions
- Calls the "match" method, passing it the $message
object. Returns the result of "match", negating it beforehand if
the filter module has inverse polarity. There is usually no need at all to
override this method.
-
match($message): returns string,
[string]; throws Perl exceptions
- Examines the Courier::Message object given as
$message. Returns a so-called match result consisting of an SMTP
status response text, and an optional numerical SMTP status
response code. For details about how match results are used
by Courier::Filter, see "How filter modules work" in
Courier::Filter::Overview and "Writing filter modules" in
Courier::Filter::Overview.
"Courier::Filter::Module::match()" does nothing and returns
undef. Sub-classes should override this method and define their own
matching rule.
-
logger: returns Courier::Filter::Logger
-
logger($logger): returns
Courier::Filter::Logger
- If $logger is specified, installs a new logger for this
individual filter module. Returns the current (new) logger.
-
inverse: returns boolean
- Returns a boolean value indicating whether the filter
module is operating with inverse polarity, as set through the
constructor's "inverse" option.
-
trusting: returns boolean
- Returns a boolean value indicating whether the filter
module does not apply to trusted messages, as set through the
constructor's "trusting" option.
-
testing: returns boolean
- Returns a boolean value indicating whether the filter
module is in testing mode, as set through the constructor's
"testing" option.
-
debugging: returns boolean
-
debugging($debugging): returns boolean
- If $debugging is specified, sets the debugging mode for
this individual filter module. Returns the (newly) configured debugging
mode.
Courier::Filter, Courier::Filter::Module.
For a list of prepared loggers that come with Courier::Filter, see "Bundled
Courier::Filter loggers" in Courier::Filter::Overview.
For AVAILABILITY, SUPPORT, and LICENSE information, see
Courier::Filter::Overview.
Julian Mehnle <
[email protected]>