- $status->check ()
-
Runs the SpamAssassin rules against the message pointed to by the object.
- $status->
learn()
-
After a mail message has been checked, this method can be called. If the score
is outside a certain range around the threshold, ie. if the message is judged
more-or-less definitely spam or definitely non-spam, it will be fed into
SpamAssassin's learning systems (currently the naive Bayesian classifier),
so that future similar mails will be caught.
- $isspam = $status->is_spam ()
-
After a mail message has been checked, this method can be called. It will
return 1 for mail determined likely to be spam, 0 if it does not seem
spam-like.
- $list = $status->get_names_of_tests_hit ()
-
After a mail message has been checked, this method can be called. It will
return a comma-separated string, listing all the symbolic test names
of the tests which were trigged by the mail.
- $list = $status->get_names_of_subtests_hit ()
-
After a mail message has been checked, this method can be called. It will
return a comma-separated string, listing all the symbolic test names of the
meta-rule sub-tests which were trigged by the mail. Sub-tests are the
normally-hidden rules, which score 0 and have names beginning with two
underscores, used in meta rules.
- $num = $status->get_score ()
-
After a mail message has been checked, this method can be called. It will
return the message's score.
- $num = $status->get_required_score ()
-
After a mail message has been checked, this method can be called. It will
return the score required for a mail to be considered spam.
- $num = $status->get_autolearn_status ()
-
After a mail message has been checked, this method can be called. It will
return one of the following strings depending on whether the mail was
auto-learned or not: ``ham'', ``no'', ``spam'', ``disabled'', ``failed'', ``unavailable''.
- $report = $status->get_report ()
-
Deliver a ``spam report'' on the checked mail message. This contains details of
how many spam detection rules it triggered.
-
The report is returned as a multi-line string, with the lines separated by
\n
characters.
- $preview = $status->get_content_preview ()
-
Give a ``preview'' of the content.
-
This is returned as a multi-line string, with the lines separated by \n
characters, containing a fully-decoded, safe, plain-text sample of the first
few lines of the message body.
- $msg = $status->
get_message()
-
Return the object representing the message being scanned.
- $status->rewrite_mail ()
-
Rewrite the mail message. This will at minimum add headers, and at
maximum MIME-encapsulate the message text, to reflect its spam or not-spam
status. The function will return a scalar of the rewritten message.
-
The actual modifications depend on the configuration (see
Mail::SpamAssassin::Conf
for more information).
-
The possible modifications are as follows:
- To:, From: and Subject: modification on spam mails
-
Depending on the configuration, the To: and From: lines can have a
user-defined RFC 2822 comment appended for spam mail. The subject line
may have a user-defined string prepended to it for spam mail.
- X-Spam-* headers for all mails
-
Depending on the configuration, zero or more headers with names
beginning with
X-Spam-
will be added to mail depending on whether
it is spam or ham.
- spam message with report_safe
-
If report_safe is set to true (1), then spam messages are encapsulated
into their own message/rfc822 MIME attachment without any modifications
being made.
-
If report_safe is set to false (0), then the message will only have the
above headers added/modified.
- $status->finish ()
-
Indicate that this
$status
object is finished with, and can be destroyed.
-
If you are using SpamAssassin in a persistent environment, or checking many
mail messages from one Mail::SpamAssassin
factory, this method should be
called to ensure Perl's garbage collection will clean up old status objects.
- $name = $status->
get_current_eval_rule_name()
-
Return the name of the currently-running eval rule.
undef
is
returned if no eval rule is currently being run. Useful for plugins
to determine the current rule name while inside an eval test function
call.
- $status->get (header_name [, default_value])
-
Returns a message header, pseudo-header, real name or address.
header_name
is the name of a mail header, such as 'Subject', 'To',
etc. If default_value
is given, it will be used if the requested
header_name
does not exist.
-
Appending :raw
to the header name will inhibit decoding of quoted-printable
or base-64 encoded strings.
-
Appending :addr
to the header name will cause everything except
the first email address to be removed from the header. For example,
all of the following will result in ``example@foo'':
- example@foo
- example@foo (Foo Blah)
- example@foo, example@bar
- display: example@foo (Foo Blah), example@bar ;
- Foo Blah <example@foo>
- ``Foo Blah'' <example@foo>
- ``'Foo Blah''' <example@foo>
Appending :name
to the header name will cause everything except
the first real name to be removed from the header. For example,
all of the following will result in ``Foo Blah''
- example@foo (Foo Blah)
- example@foo (Foo Blah), example@bar
- display: example@foo (Foo Blah), example@bar ;
- Foo Blah <example@foo>
- ``Foo Blah'' <example@foo>
- ``'Foo Blah''' <example@foo>
There are several special pseudo-headers that can be specified:
ALL
can be used to mean the text of all the message's headers.
ToCc
can be used to mean the contents of both the 'To' and 'Cc'
headers.
EnvelopeFrom
is the address used in the 'MAIL FROM:' phase of the SMTP
transaction that delivered this message, if this data has been made available
by the SMTP server.
MESSAGEID
is a symbol meaning all Message-Id's found in the message;
some mailing list software moves the real 'Message-Id' to 'Resent-Message-Id'
or 'X-Message-Id', then uses its own one in the 'Message-Id' header. The value
returned for this symbol is the text from all 3 headers, separated by newlines.
X-Spam-Relays-Untrusted
is the generated metadata of untrusted relays
the message has passed through
X-Spam-Relays-Trusted
is the generated metadata of trusted relays
the message has passed through
- $status->get_uri_list ()
-
Returns an array of all unique URIs found in the message. It takes
a combination of the URIs found in the rendered (decoded and HTML
stripped) body and the URIs found when parsing the HTML in the message.
Will also set $status->{uri_domain_count} (count of unique domains)
and $status->{uri_list} (the array as returned by this function).
-
The returned array will include the ``raw'' URI as well as
``slightly cooked'' versions. For example, the single URI
'http://%77w%77.example.com/' will get turned into:
( 'http://%77w%77.example.com/', 'http://www.example.com/' )
- $status->
clear_test_state()
-
Clear test state, including test log messages from
$status->test_log()
.
- $status->create_fulltext_tmpfile (fulltext_ref)
-
This function creates a temporary file containing the passed scalar
reference data (typically the full/pristine text of the message).
This is typically used by external programs like pyzor and dccproc, to
avoid hangs due to buffering issues. Methods that need this, should
call $self->
create_fulltext_tmpfile($fulltext)
to retrieve the temporary
filename; it will be created if it has not already been.
-
Note: This can only be called once until $status->delete_fulltext_tmpfile()
is
called.
- $status->delete_fulltext_tmpfile ()
-
Will cleanup after a $status->
create_fulltext_tmpfile()
call. Deletes the
temporary file and uncaches the filename.