#!/usr/bin/perl
###############################
#
# (c) Barry Hughes, July 2001
#
# Quick play with Mail::Audit
# to replace procmail and have
# a slightly less arcane
# recipe language :)
#
###############################
umask 077;
$debug = 0;
# Blug is evil and nasty, so it's going here
$blug = "/usr/bin/mhonarc -add -quiet -umask 022 -multipg -sort -main -tsubsort -rcfile /home/bazza/www/bazza.com/blug/blug.mrc -idxprefix mail -idxfname mail.html -definevars MAIN-TITLE='BLUG' -outdir /home/bazza/www/bazza.com/blug/";
open (LOG,">>/home/bazza/test.log") if $debug;
print LOG "Starting\n" if $debug;
use Mail::Audit;
use Email::Valid;
$incoming = Mail::Audit->new ( noexit => 1 );
$maildir = "/home/bazza/mail/";
unless(Email::Valid->address(-address => $incoming->from,
-mxcheck => 1)) {
$incoming->accept($maildir."spam");
print LOG "address failed $Email::Valid::Details check.\n" if $debug;
exit DELIVERED;
}
%lists = (
"lartc\@mailman.ds9a.nl" => "lartc",
"bugtraq\@securityfocus.com" => "bugtraq",
"mutt" => "mutt",
"tradeelectronically" => "TEL",
"vnl.com" => "VNL",
"krap\@klub.org" => "krap",
"esper" => "esper",
"nylug" => "nylug",
"42\@yahoogroups.com" => "42",
"pilot-unix" => "pilot-unix",
"gphoto" => "gphoto",
"jokelist" => "humour",
"debian-boot" => "debian-boot",
"debian-laptop" => "debian-laptop",
"debian-security" => "debian-security",
"focus-linux" => "focus-linux",
"belfast-pm" => "belfast-pm",
"exim-users" => "exim-users",
);
for $pattern (keys %lists) {
if (($incoming->from =~ /$pattern/i) || ($incoming->to =~ /$pattern/i) || ($incoming->cc =~ /$pattern/i)) {
$incoming->accept($maildir.$lists{$pattern});
print LOG "writing mail matching $pattern to $maildir$lists{$pattern}\n" if $debug;
exit DELIVERED;
}
}
# Complicated recipes, BLUG writes to a normal mail file as well as running MHONARC on it to archive it for the web
if(($incoming->to =~ /blug\@lists.blackstar/i) || ($incoming->cc =~ /blug\@lists.blackstar/i)) {
$incoming->accept($maildir."blug");
$incoming->pipe($blug);
print LOG "writing BLUG mail\n" if $debug;
exit DELIVERED;
}
my @rejects = qw/
stokerace
Friend\@public.com
SALBAZ\@webtv.net
adultfriend
spam\@bazza.com
baz\@bazza.com
tangfeng.org
ecommercechargecards.com
ammocity
mail.reckeweg.de
/;
foreach(@rejects) {
if(($incoming->from =~ /$_/) || ($incoming->to =~ /$_/)) {
$incoming->reject("Bugger off!");
exit DELIVERED;
}
}
if(($incoming->to !~ /bazza\@bazza/i) and ($incoming->cc !~ /bazza\@bazza/i)) {
$incoming->accept($maildir."spam");
exit DELIVERED;
}
$incoming->accept();
close(LOG);
syntax highlighted by Code2HTML, v. 0.9