[rt-users] Fwd: Where to place this Code

IT GUY itinfoguy at gmail.com
Mon Apr 28 07:49:35 EDT 2008


Can anyone explain me where I should place the following code....

thanks,

Here is a patch to implement a spam filter using pattern matching on a
configurable header field, instead of running spamassassin.



--- lib/RT/Interface/Email/Filter/SpamHeader.pm	2004-02-18
16:26:44.000000000 +0100
+++ lib/RT/Interface/Email/Filter/SpamHeader.pm	2004-08-31
08:28:53.000000000 +0200
@@ -0,0 +1,101 @@
+# BEGIN LICENSE BLOCK

+#
+# Copyright (c) 2004 Petter Reinholdtsen <pere at hungry.com
<http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-devel>>
+#
+# This work is made available to you under the terms of Version 2 of

+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but

+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# Unless otherwise specified, all modifications, corrections or

+# extensions to this work which alter its source code become the
+# property of Best Practical Solutions, LLC when submitted for
+# inclusion in the work.
+#
+#
+# END LICENSE BLOCK
+package RT::Interface::Email::Filter::SpamHeader;

+
+use RT::EmailParser;
+
+sub GetCurrentUser {
+    my %args = ( Message     => undef,
+		 CurrentUser => undef,
+		 AuthLevel   => undef,
+		 Queue       => undef,
+		 @_ );
+
+    # Check configuration.

+    unless ($RT::SpamHeader) {
+	$RT::Logger->error("SpamHeader: Content of \$RT::SpamHeader is empty.");
+	return ($args{'CurrentUser'}, $args{'AuthLevel'});
+    }
+    unless ($RT::SpamLowMatch) {

+	$RT::Logger->error("SpamHeader: Content of \$RT::SpamLowMatch is empty.");
+	return ($args{'CurrentUser'}, $args{'AuthLevel'});
+    }
+    my $Message = $args{'Message'};

+    unless ($Message) {
+	$RT::Logger->error("SpamHeader: \$Message is empty.");
+	return ($args{'CurrentUser'}, $args{'AuthLevel'});
+    }
+
+    my $head = $Message->head;

+    my $spamtag = $head->get($RT::SpamHeader);
+
+    if (defined $RT::SpamHighMatch && $spamtag =~ m/$RT::SpamHighMatch/) {
+	if ($RT::SpamHighQueue) {
+	    # Move to spam queue
+	    $args{'Queue'}->Load( $RT::SpamHighQueue );

+	} else {
+	    # tell Gateway() to drop the mail
+	    $RT::Logger->info("SpamHeader: Dropping spam message!");
+	    return ($args{CurrentUser}, -1);
+	}
+    }
+
+    if ($spamtag =~ m/$RT::SpamLowMatch/) {

+	if ($RT::SpamLowQueue) {
+	    # Move to spam queue
+	    $args{'Queue'}->Load( $RT::SpamLowQueue );
+	} else {
+	    # tell Gateway() to drop the mail
+	    $RT::Logger->info("SpamHeader: Dropping spam message!");

+	    return ($args{CurrentUser}, -1);
+	}
+    }
+
+    $RT::Logger->debug("SpamHeader: Accepting non-spam message.");
+    return ($args{'CurrentUser'}, $args{'AuthLevel'});

+}
+
+=head1 NAME
+
+RT::Interface::Email::Filter::SpamHeader - Filter spam based on header tags
+
+=head1 SYNOPSIS
+
+    Set($SpamHeader,    "X-UiO-Spam-Score"); # Required
+    Set($SpamLowMatch,  "ss+");              # Required

+    Set($SpamLowQueue,  "spam");             # Optional
+    Set($SpamHighMatch, "ssssss+");          # Optional
+    Set($SpamHighQueue, undef);              # Optional
+    @RT::MailPlugins = ("Filter::SpamHeader", ...); # Required

+
+=head1 DESCRIPTION
+
+This plugin checks to see if an incoming mail is spam by looking at
+the header field given in $SpamHeader, matching it using the regex in
+$SpamLowMatch and $SpamHighMatch.  If the regex matches, it is

+considered spam and dropped on the floor or moved to a spam queue if
+the corresponding queue variable is set.  Otherwise, it is handled as
+normal.
+
+=cut
+
+1;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20080428/43a7aeab/attachment.htm>


More information about the rt-users mailing list