Mailing List Archive

svn commit: rev 6899 - in incubator/spamassassin/trunk: . lib/Mail/SpamAssassin/Plugin
Author: jm
Date: Thu Feb 26 21:22:40 2004
New Revision: 6899

Added:
incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayCountry.pm
Modified:
incubator/spamassassin/trunk/MANIFEST
Log:
updated MANIFEST


Modified: incubator/spamassassin/trunk/MANIFEST
==============================================================================
--- incubator/spamassassin/trunk/MANIFEST (original)
+++ incubator/spamassassin/trunk/MANIFEST Thu Feb 26 21:22:40 2004
@@ -309,3 +309,5 @@
tools/triplets.pl
lib/Mail/SpamAssassin/Constants.pm
rules/25_uribl.cf
+lib/Mail/SpamAssassin/Plugin/RelayCountry.pm
+lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm

Added: incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayCountry.pm
==============================================================================
--- (empty file)
+++ incubator/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/RelayCountry.pm Thu Feb 26 21:22:40 2004
@@ -0,0 +1,65 @@
+=head1 NAME
+
+RelayCountry - add message metadata indicating the country code of each relay
+
+=head1 SYNOPSIS
+
+ loadplugin Mail::SpamAssassin::Plugin::RelayCountry
+
+=cut
+
+package Mail::SpamAssassin::Plugin::RelayCountry;
+
+use Mail::SpamAssassin::Plugin;
+use strict;
+use bytes;
+
+use vars qw(@ISA);
+@ISA = qw(Mail::SpamAssassin::Plugin);
+
+# constructor: register the eval rule
+sub new {
+ my $class = shift;
+ my $mailsaobject = shift;
+
+ # some boilerplate...
+ $class = ref($class) || $class;
+ my $self = $class->SUPER::new($mailsaobject);
+ bless ($self, $class);
+ return $self;
+}
+
+# and the eval rule itself
+sub extract_metadata {
+ my ($self, $opts) = @_;
+
+ my $reg;
+
+ eval {
+ require IP::Country::Fast;
+ $reg = IP::Country::Fast->new();
+ };
+ if ($@) {
+ dbg ("failed to load 'IP::Country::Fast', skipping");
+ return 1;
+ }
+
+ my $msg = $opts->{msg};
+
+ my $countries = '';
+ foreach my $relay (@{$msg->{metadata}->{relays_untrusted}}) {
+ my $ip = $relay->{ip};
+ my $cc = $reg->inet_atocc($ip);
+ $countries .= $cc." ";
+ }
+
+ chop $countries;
+ $msg->put_metadata ("X-Relay-Countries", $countries);
+ dbg ("metadata: X-Relay-Countries: $countries");
+
+ return 1;
+}
+
+sub dbg { Mail::SpamAssassin::dbg (@_); }
+
+1;