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;
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


Discover RT's hidden secrets with RT Essentials from O'Reilly Media. 
Buy a copy at http://rtbook.bestpractical.com

Reply via email to