Re: Mail::Audit and MovableType

Robert Nicholson <[email protected]> Wed, 12 May 2004 22:58:04 -0500
Newsgroups gmane.comp.lang.perl.modules.mail-audit
Message-ID <[email protected]>
I also use Mail-audit with SpamAssassin.

I'm curious how are you integrating the two.

I have a .pl script that's called by qmail when mail is delivered to my 
account
and that perl script basically filters using Mail::Audit and uses 
SpamAssassin to determine
which messages are spam.

my $spamtest = new Mail::SpamAssassin({
     PREFIX => $PREFIX,
     DEF_RULES_DIR => $DEF_RULES_DIR,
     LOCAL_RULES_DIR => $LOCAL_RULES_DIR,
    });

my $mail = Mail::Audit->new(
   nomime=> 1,
   emergency=>"$maildir/.emergency/",
   loglevel=>2,
   log=>$log
);

sub noma_from_string_or_arrayref {
   my $arrayRef = (ref $_[0] eq 'ARRAY') ? $_[0] : [ split /^/m, $_[0] ];
   my $no_audit = Mail::SpamAssassin::NoMailAudit->new ('data' => 
$arrayRef);
   return $no_audit;
}

sub ma_from_string_or_arrayref {
   my $arrayRef = (ref $_[0] eq 'ARRAY') ? $_[0] : [ split /^/m, $_[0] ];
   my $mail_audit = Mail::Audit->new(
     nomime=> 1,
     emergency=>"$maildir/.emergency/",
     loglevel=>2,
     log=>$log,
     data=>$arrayRef);
   return $mail_audit;
}

if ($status->is_spam()) {
   # remove bogus attachments
     my $learnmail = noma_from_string_or_arrayref($mail->as_string);
     my $learn_status =  $spamtest->learn($learnmail, undef, 1); # learn 
as spam
     my @newLines = removeSuspiciousAttachments($learnmail);
     $mail = ma_from_string_or_arrayref(\@newLines);
     log_mbox($mail, "    Spamassassin has determined this mail is SPAM 
accepting to
folder " . replace_dot_with_slash($spam) . "\n\n");
     $mail->accept("$maildir/.$spam/");
     # terminates here
   }

On Apr 26, 2004, at 3:07 PM, Jeff Bisbee wrote:

> Casey,
>
> I was just about to do something like this so I could photo blog with 
> my
> phone :)  Thanks!
>
> BTW, wanted to share something I came up with for my filter (nothing 
> new
> but pretty handy)  Often times my wife needs to get copies of e-mails
> that get sent to me (credit card e-mail alerts, netflix, e-bay auction
> notices, etc)  Anyway I threw together this snippet to strip out images
> (because yahoo marks e-mails as spam if the source images aren't for 
> the
> site where the e-mail originated from) and just creates a copy and 
> sends
> it on its way.  After looking at it again, it could be cut down a bit,
> but it worked, I just left it :)
>
>     our @forward_addresses = qw([email protected]);
>
>     # resend($msg) is to copy any ebay/netflix/cingular emails to
>     # my wife Heather # Mail::Audit->resend didn't work because the
>     # headers did match the host it was sent from so it was marked as
>     # spam by yahoo also html src images didn't match the domain of
>     # where the mail originated from so I just stripped those out
>     if ($msg->to =~ /netflix/ ||
> 	$msg->to =~ /ebay/ ||
> 	$msg->to =~ /discover/ ||
> 	$msg->to =~ /cingular/) {
> 	resend($msg);
>     }
>
>     sub resend
>     {
> 	my ($msg) = @_;
> 	my $from = $msg->from;
> 	$from =~ s/\<.+?\>//;
> 	$from =~ s/\"//g;
> 	my $body = join('',@{$msg->body});
> 	$body =~ s/\<img .*?src.+?\>//gis; # strip out images :D
> 	for my $address (@forward_addresses) {
> 	    my %mail = (
> 		To      => $address,
> 		From    => '"' . $from . '" <' . $msg->to . '>',
> 		Subject => $msg->subject,
> 		Message => $body,
> 	    );
> 	    # forward whatever headers you want
> 	    for my $header ('Mime Version', 'Content-Type') {
> 		if (my $value = $msg->get($header)) {
> 		    $mail{$header} = $value;
> 		}
> 	    }
> 	    sendmail(%mail);
> 	}
>     }
>
>
> * Casey West ([email protected]) wrote:
>> It was Monday, April 26, 2004 when Bowen Dwelle took the soap box, 
>> saying:
>> : I've been using Mail::Audit for at least a couple of years now, and 
>> I've
>> : had it integrated with Mail::SpamAssassin for quite a while. Just 
>> now,
>> : I've hooked in Net::Blogger so that I can post to my MovableType 
>> blog
>> : automatically via email (e.g. from a camera phone). Perhaps someone 
>> else
>> : has already done this?
>>
>> http://caseywest.com/code/scripts/post-journal.pl
>>
>> I use Verizon in the US, you may have to play with it to get your
>> camera phone to work. I also syndicate to use Perl;, and this is how.
>>
>> Enjoy!
>>
>>   Casey West
>>
>> -- 
>> Shooting yourself in the foot with BASIC (interpreted)
>> You shoot yourself in the foot with a water pistol until your leg is
>> waterlogged and rots off.
>>
>>
>> _______________________________________________
>> mail-audit mailing list
>> [email protected]
>> http://lists.netthink.co.uk/listinfo/mail-audit
>>
>>
>
>
> -- Jeff Bisbee / [email protected] / jbisbee.com
>
> _______________________________________________
> mail-audit mailing list
> [email protected]
> http://lists.netthink.co.uk/listinfo/mail-audit