amavisd plugin for the geolocation addresses and headers X-Anti-Abuse
fakessh
fakessh at fakessh.eu
Tue May 3 23:56:09 CEST 2011
Le mardi 3 mai 2011 17:39, Mark Martinec a écrit :
> fakessh,
>
> > I wrote a plugin that minimum here but I get no result
> >
> > package Amavis::Custom;
> > use Geo::IP::PurePerl;
> >
> > # invoked at child process creation time;
> > # return an object, or just undef when custom checks are not needed
> > sub new {
> > my($class,$conn,$msginfo) = @_;
> > my($self) = bless {}, $class;
> > my($cl_ip) = $msginfo->client_addr;
> > if (!exists $self->{geoip}) {
> > my $geo_file = "/usr/share/GeoIP/GeoLiteCity.dat";
> > $self->{geoip} = undef;
> > if (!-e $geo_file) {
> > do_log(0, "geoip-plugin: GeoIP, unable to stat %s", $geo_file);
> > } else {
> > $self->{geoip} = Geo::IP::PurePerl->new($geo_file, GEOIP_STANDARD);
> > do_log(0, "geoip-plugin: GeoIP, failed to open %s",
> > $geo_file) if !$self->{geoip};
> > }
> > }
> > my($country_code, $country_code3, $country_name, $region,
> > $city, $postal_code, $latitude, $longitude,
> > $metro_code, $area_code) =
> > $self->{geoip}->get_city_record($cl_ip);
> > my($hdr_edits) = $msginfo->header_edits;
> > $hdr_edits->add_header('X-Header-GeoIP-Client', " geo ip client
> > $country_code $country_code3 $country_name $region $city
> > $postal_code $latitude $longitude $metro_code $area_code ");
> >
> > $self; # returning an object activates further callbacks,
> > # returning undef disables them
> > }
> > 1; # insure a defined return
>
> Your custom hook looks fine on a first glance (didn't try it),
> and it should be inserting the X-Header-GeoIP-Client header field.
>
> Make sure the code is actually included or called from amavisd.conf,
> e.g.:
> include_config_files('/etc/amavisd-custom.conf');
>
> Here is a similar hook that I'm using here, it does add these header
> fields:
>
>
> package Amavis::Custom;
> use strict;
> use re 'taint';
> use warnings;
> use warnings FATAL => qw(utf8 void);
> no warnings qw(uninitialized redefine);
>
> BEGIN {
> import Amavis::Conf qw(:platform :confvars c cr ca);
> import Amavis::Util qw(do_log untaint min max);
> }
>
> sub new {
> my($class,$conn,$msginfo) = @_;
> my($self) = bless {}, $class;
> checks_geo($self,$conn,$msginfo);
> $self;
> }
>
> use Geo::IP;
> sub checks_geo {
> my($self,$conn,$msginfo) = @_;
> if (!exists $self->{geoip}) { # first time only in a child process
> my $geo_file = "/usr/local/share/GeoIP/GeoLiteCity.dat";
> $self->{geoip} = Geo::IP->open($geo_file, GEOIP_STANDARD);
> if (!$self->{geoip}) {
> do_log(0, "GeoIP: failed to open %s", $geo_file);
> } else {
> $self->{geoip}->set_charset(GEOIP_CHARSET_UTF8);
> }
> }
> if ($self->{geoip}) {
> my $last_received_ip =
> Amavis::UnmangleSender::parse_ip_address_from_received($msginfo);
> if (defined $last_received_ip && $last_received_ip ne '') {
> my($country_name,$region_name,$city);
> my $record = $self->{geoip}->record_by_addr($last_received_ip);
> if (!$record) {
> do_log(2, "GeoIP: no record for %s", $last_received_ip);
> } else {
> $country_name = $record->country_name;
> $region_name = $record->region_name;
> $city = $record->city;
> }
> do_log(2, "GeoIP: %-15s %s %s, %s, %s", $last_received_ip,
> $msginfo->is_in_contents_category(CC_SPAM) ? 'SPAM' : '
> ', map(defined $_ && $_ ne '' ? $_ : "-",
> $country_name, $region_name, $city));
> my $hdr_edits = $msginfo->header_edits;
> $hdr_edits->add_header('X-Amavis-GeoIP', "$country_name $city");
> }
> }
> }
>
> 1;
>
>
>
> Add calls to do_log to your code to help with debugging.
>
> > but when I've put my achievements in production
> > the headers X-SenderID disappears
> > so I wonder why after having added mimedefang header and X-SenderID
> > disappears
>
> I don't know about that. Amavisd is not removing an X-SenderID header
> field.
>
> Mark
e suis arrive à quelque chose qui semble efficace
je vous joins le texte sur un pastebin infini
http://pastebin.com/RqbLgWPd
--
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x092164A7
gpg --keyserver pgp.mit.edu --recv-key 092164A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.amavis.org/pipermail/amavis-users/attachments/20110503/40ef7608/attachment.pgp>
More information about the amavis-users
mailing list