Whatever

p0fOS.pm

=head1 NAME

p0fOS - add message header (p0fIP2OS) indicating the operating system of the most recent untrusted relay.

=head1 SYNOPSIS

  loadplugin Mail::SpamAssassin::Plugin::p0fOS /usr/local/etc/mail/spamassassin/plugins/p0fOS.pm
  
  header    OS_LINUX    p0fIP2OS =~ /Linux/i
  describe  OS_LINUX    Relay runs on Linux
  score     OS_LINUX    -0.1
  header    OS_WINDOWS  p0fIP2OS =~ /Windows/i
  describe  OS_WINDOWS  Relay runs on Windows
  score     OS_WINDOWS  0.5

=head1 REQUIREMENT

This plugin requires uses the p0f stuff from http://whatever.frukt.org.

=cut

package Mail::SpamAssassin::Plugin::p0fOS;

use strict;
use base 'Mail::SpamAssassin::Plugin';
use p0fIP2OS;

sub dbg { 
	my $msg = shift;
	Mail::SpamAssassin::Plugin::dbg(sprintf("p0f: $msg",@_));
}

sub extract_metadata {
	my ($self,$pars) = @_;

	my @relays = @{$pars->{msg}->{metadata}->{relays_untrusted}};
	while (@relays) {
		my $relay = shift @relays;
		next unless ($relay->{ip});
		dbg("IP $relay->{ip}");
		my ($os,$ver) = ip2osver($relay->{ip});
		$os = 'Unknown' unless ($os);
		$os .= " $ver" if ($ver);
		dbg("OS $os");
		$pars->{msg}->put_metadata('p0fIP2OS',$os);
		last;
	}

	return 1;
}

1;

(2008-01-11)