You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by "Diffenderfer, Randy" <ra...@hp.com> on 2010/09/29 23:18:04 UTC
using SA as a tool
I was under the impression that there was a clear-cut way to use SA as a factory within a custom perl wrapper (I have looked at the Mail::SpamAssassin doco). My objective is to do various things to the parsed message, such as distill out URLs for example.
Is there indeed a clear way to do this?
Thanks,
rnd
Re: using SA as a tool
Posted by Kris Deugau <kd...@vianet.ca>.
Diffenderfer, Randy wrote:
> I was under the impression that there was a clear-cut way to use SA as a
> factory within a custom perl wrapper (I have looked at the
> Mail::SpamAssassin doco). My objective is to do various things to the
> parsed message, such as distill out URLs for example.
>
> Is there indeed a clear way to do this?
I had some trouble making sense of the Mail::SpamAssassin API docs
myself, but I kept at it for a while since it still looked to be easier
than effectively rewriting big chunks of SA's message-parsing code.
Here are the basics I'm using to extract URIs and last-external relay IPs:
# note you may need a use lib '/path/to/sa' if you've installed from
# source in a custom location
use Mail::SpamAssassin;
use Mail::SpamAssassin::PerMsgStatus;
my $spamtest = Mail::SpamAssassin->new();
foreach (@msglist) {
# <load a message from IMAP into $msg>
my $mail = $spamtest->parse($msg);
my $status = $spamtest->check($mail);
my $skip_domains = $status->{main}->{conf}->{uridnsbl_skip_domains};
# Generate the full list of html-parsed domains.
# Returns hashref.
my $uris = $status->get_uri_detail_list();
my $stmsg = $status->get_message();
my @untrusted = @{$stmsg->{metadata}->{relays_untrusted}};
my $relayip = $untrusted[0]->{ip};
}
-kgd