#!/usr/bin/perl -w # banatest 5/30/2003 by David Efflandt efflandt@xnet.com # External procmail filter to compare file list of banned addresses # Ban list is a list of From addresses or partial matches. # Adds X-Drop header with test results # # set following to your ban list /path/filename: my $listfile = "$ENV{HOME}/banalist.txt"; my $xdrop = "No"; # default result open(IN,"$listfile") || die; @banlist = ; close IN; chomp @banlist; while () { my @addr; # insert our header after other headers (1st blank line) if ($xdrop && /^\s*$/) { print "X-Drop: $xdrop\n$_"; $xdrop = ''; } else { print; } # get addresses from From or Sender headers if ( /^From:\s*(\S.*)$/ || /^From\s*(\S+)\s/ || /Sender:\s*(\S.*)$/) { push @addr, $1; } else { next; } foreach $bad (@banlist) { if (grep /\Q$bad\E/i, @addr) { $xdrop = "YES $bad"; } } }