File: //proc/thread-self/root/etc/mail/spamassassin/plugins/CH_FromSpoof.pm
package CH_FromSpoof;
use Mail::SpamAssassin::Plugin;
our @ISA = qw(Mail::SpamAssassin::Plugin);
sub new {
my ( $class, $mailsa ) = @_;
# the usual perlobj boilerplate to create a subclass object
$class = ref($class) || $class;
my $self = $class->SUPER::new($mailsa);
bless( $self, $class );
# then register an eval rule, if desired...
$self->register_eval_rule("check_likespoof");
# and return the new plugin object
return $self;
}
sub check_likespoof {
my ( $self, $msg ) = @_;
my $cadenaFrom = lc( $msg->get('From') );
$cadenaFrom =~ s/"/ /g;
$cadenaFrom =~ s/</ /g;
$cadenaFrom =~ s/>/ /g;
$cadenaFrom =~ s/\(/ /g;
$cadenaFrom =~ s/\)/ /g;
$cadenaFrom =~ s/ +/ /g;
$cadenaFrom =~ s/^ //;
$cadenaFrom =~ s/ $//;
my @palabrasFrom = split( ' ', $cadenaFrom );
$cantidadCorreos=0;
$unicoCorreo="";
$esSpoof=0;
foreach $palabraActual (@palabrasFrom){
my @count = ($palabraActual =~ /@/g);
if (@count == 1) {
$cantidadCorreos++;
if ($unicoCorreo eq ""){
$unicoCorreo=$palabraActual;
}else{
if($palabraActual ne $unicoCorreo){
$esSpoof=1;
last;
}
}
}
}
if($cantidadCorreos == 0){
$esSpoof=1;
}
Mail::SpamAssassin::Plugin::dbg(
"CH_FromSpoof: Comparing $cadenaFrom"
);
if ( $esSpoof == 0) {
return 0; #PASS, dont appear spoof
}else{
return 1; #FAIL, is like spoof
}
}
# This ;1 is important
1;