[Mimedefang] Using a db for subject lines to block
Cormack, Ken
Ken.Cormack at roadway.com
Fri Jun 17 16:02:55 EDT 2005
-----Original Message-----
From: David F. Skoll [mailto:dfs at roaringpenguin.com]
> Not $Subject, specifically, but our CanIt product is almost completely
> database-driven. We use a PostgreSQL database, but for what you
> want, any SQL database would probably be fine, or even just Berkeley DB
> with a tied hash.
After a bit more digging, it looks more like Btree file may allow a closer
approximation of my current sendmail ruleset, since I found a newsgroup post
describing partial-matches available with that type of file.
My current sendmail rule looks like this:
F{Subjects} -o /etc/mail/subjects
HSubject: $>CheckSubject
SCheckSubject
# do a full subject match scan
R$={Subjects}$* $: REJECTSUBJECT
# if no hits, re-scan for substrings
R$* $={Subjects} $* $: REJECTSUBJECT
R$* REJECTSUBJECT $* $#error $: "553 Access Denied - MSG may
contain SPAM/WORM/VIRUS/HOAX."
The rule as written, makes two passes to compare the subject to the loaded
list. The first pass is for a perfect match, while the second pass performs
a substring match.
The newsgroup post that I refered to above, suggests the following would
work:
In simple words you pass the $DB_BTree to the tie function and you
can
iterate
tie %mydb,DB_File,"databasefile",O_RDWR|O_CREAT,0666,$DB_BTREE;
my $key="partial key";
my $value;
my $search;
for($search=$mydb->set($key,$value,R_CURSOR);$search==0;
$seach=mydb->set($key,$value,R_NEXT);
print("$key -- $value");
Does anyone have any opinions, or experience doing this kind of thing to
inspect $Subject from within filter_begin?
Ken
More information about the MIMEDefang
mailing list