#!/usr/bin/perl #glcox BEGIN { use File::Basename; chdir dirname $0; } sub handle_file ($) { # return 1 if spam # return 0 if not spam my ($fn) = @_; open FN, '<'.$fn; my @lines = ; close FN; my $tmpstr = ''; my @from_lines = grep /^From:\s+/, @lines; $tmpstr = @from_lines ? $from_lines[0] : ''; (my $from_line) = ($tmpstr =~ m#\<([^>]*)\>#); my $has_name = ($tmpstr =~ m#\"[^"]+\"\s+\<#) ? 1 : 0; my @to_lines = grep /^To:\s+/, @lines; $tmpstr = @to_lines ? $to_lines[0] : ''; (my $to_line) = ($tmpstr =~ m#\<([^>]*)\>#); my @subject_lines = grep /^Subject:\s+/, @lines; $tmpstr = @subject_lines ? $subject_lines[0] : ''; (my $subject_line = $tmpstr) =~ m#^Subject:\s+#; return 0 if ($from_line =~ m#\.org\b#i); return 0 if ($subject_line =~ m#^\[.*\] #); return 1 if ($from_line =~ m#money.*\@#i); return 1 if ($from_line =~ m#applicant.*\@#i); return 1 if ($from_line =~ m#PhD.*\@#i); return 1 if ($from_line =~ m#hot.*\@#i); return 1 if ($from_line =~ m#\@.*(hot.*)\.com#i && ($1 ne hotmail)); return 1 if ($to_line =~ m#\@.*(hot.*)\.com#i && ($1 ne hotmail)); return 1 if ($subject_line =~ m#\bBUSINESS\b#i); return 1 if ($subject_line =~ m#\bFREE\b#i); return 1 if ($subject_line =~ m#\bdebt\b#i); return 1 if ($subject_line =~ m#\bwork from home\b#i); return 1 if ($subject_line =~ m#\bstart your own\b#i); return 1 if ($subject_line =~ m#\byou can\b#i); return 1 if ($subject_line =~ m#\bquery\b#i); return 1 if ($subject_line =~ m#\bopportunity\b#i); return 1 if ($subject_line =~ m#(gold|platinum).*(visa|mastercard)#i); return 1 if ($subject_line =~ m#UNIVERSITY DIPLOMA#); return 1 if ($subject_line =~ m#(shed|lose).*(weight|pounds)#i); return 1 if ($subject_line =~ m#XXX#); return 1 if ($subject_line =~ m#18#); return 1 if (($subject_line =~ y#!##) >= 3); return 1 if (($subject_line =~ y#.##) >= 5); return 1 if (($subject_line =~ y#A-Z##) > (.6 * length($subject_line))); return 1 if ($from_line eq $to_line); return 1 if ($from_line !~ m#\@#); return 1 if ($from_line =~ m#\@\d+\.#); return 1 if ($to_line =~ m#\@\d+\.#); return 1 if ($to_line =~ m#undisclosed.*recipient#i); return 1 if (!$to_line && ( ($from_line =~ m#yahoo\.com$#) || ($from_line =~ m#hotmail\.com$#) || ($from_line =~ m#\.\S\S$#) || 0)); #return 1 if (!$to_line); return 0 if ($to_line =~ m#(cisco|glaxowellcome|ibm|sas)\.com#); return 0; } #@ARGV = ; #@ARGV = ; foreach my $filename (@ARGV) { my $result = handle_file($filename); if ($result == 1) { print "YES\n"; } elsif ($result == 0) { print "NO\n"; } } exit 0;