noel        2003/02/05 21:25:29

  Modified:    src/java/org/apache/james/transport/matchers Tag:
                        branch_2_1_fcs NESSpamCheck.java
  Log:
  refactored as subclass of generic regex matcher
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.3.4.1   +43 -78    
jakarta-james/src/java/org/apache/james/transport/matchers/NESSpamCheck.java
  
  Index: NESSpamCheck.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/matchers/NESSpamCheck.java,v
  retrieving revision 1.3
  retrieving revision 1.3.4.1
  diff -u -r1.3 -r1.3.4.1
  --- NESSpamCheck.java 14 Sep 2002 06:22:37 -0000      1.3
  +++ NESSpamCheck.java 6 Feb 2003 05:25:29 -0000       1.3.4.1
  @@ -8,116 +8,81 @@
   package org.apache.james.transport.matchers;
   
   import org.apache.james.util.RFC2822Headers;
  -import org.apache.mailet.GenericMatcher;
   import org.apache.mailet.Mail;
   import org.apache.oro.text.regex.MalformedPatternException;
  -import org.apache.oro.text.regex.Pattern;
  -import org.apache.oro.text.regex.Perl5Compiler;
  -import org.apache.oro.text.regex.Perl5Matcher;
   
   import javax.mail.MessagingException;
  -import javax.mail.internet.MimeMessage;
  -import java.util.Collection;
   
   /**
    * This is based on a sample filter.cfg for a Netscape Mail Server to stop
    * spam.
    *
  - * @author  Serge Knystautas <[EMAIL PROTECTED]>
    */
  -public class NESSpamCheck extends GenericMatcher {
  -
  -    protected Perl5Matcher matcher;
  -    protected Object patterns[][] = {{RFC2822Headers.RECEIVED, "GAA.*-0600.*EST"},
  -            {RFC2822Headers.RECEIVED, "XAA.*-0700.*EDT"},
  -            {RFC2822Headers.RECEIVED, "xxxxxxxxxxxxxxxxxxxxx"},
  -            {RFC2822Headers.RECEIVED, "untrace?able"},
  -            {RFC2822Headers.RECEIVED, "from (baby|bewellnet|kllklk) "},
  -            {RFC2822Headers.TO, "Friend@public\\.com"},
  -            {RFC2822Headers.TO, "user@the[-_]internet"},
  -            {RFC2822Headers.DATE, "/[0-9]+/.+[AP]M.+Time"},
  -            {RFC2822Headers.SUBJECT, "^\\(?ADV?[:;)]"},
  -            {RFC2822Headers.MESSAGE_ID, "<>"},
  -            {RFC2822Headers.MESSAGE_ID_VARIATION, "<>"},
  -            {RFC2822Headers.MESSAGE_ID_VARIATION, "<(419\\.43|989\\.28)"},
  -            {"X-MimeOLE", "MimeOLE V[^0-9]"},
  +public class NESSpamCheck extends GenericRegexMatcher {
  +    protected Object NESPatterns[][] = {{RFC2822Headers.RECEIVED, 
"GAA.*-0600.*EST"},
  +    {RFC2822Headers.RECEIVED, "XAA.*-0700.*EDT"},
  +    {RFC2822Headers.RECEIVED, "xxxxxxxxxxxxxxxxxxxxx"},
  +    {RFC2822Headers.RECEIVED, "untrace?able"},
  +    {RFC2822Headers.RECEIVED, "from (baby|bewellnet|kllklk) "},
  +    {RFC2822Headers.TO, "Friend@public\\.com"},
  +    {RFC2822Headers.TO, "user@the[-_]internet"},
  +    {RFC2822Headers.DATE, "/[0-9]+/.+[AP]M.+Time"},
  +    {RFC2822Headers.SUBJECT, "^\\(?ADV?[:;)]"},
  +    {RFC2822Headers.MESSAGE_ID, "<>"},
  +    {RFC2822Headers.MESSAGE_ID_VARIATION, "<>"},
  +    {RFC2822Headers.MESSAGE_ID_VARIATION, "<(419\\.43|989\\.28)"},
  +    {"X-MimeOLE", "MimeOLE V[^0-9]"},
               //Added 20-Jun-1999.  Appears to be broken spamware.
  -            {"MIME-Version", "1.0From"},
  +    {"MIME-Version", "1.0From"},
               //Added 28-July-1999.  Check X-Mailer for spamware.
  -            {"X-Mailer", "DiffondiCool"},
  -            {"X-Mailer", "Emailer Platinum"},
  -            {"X-Mailer", "eMerge"},
  -            {"X-Mailer", "Crescent Internet Tool"},
  +    {"X-Mailer", "DiffondiCool"},
  +    {"X-Mailer", "Emailer Platinum"},
  +    {"X-Mailer", "eMerge"},
  +    {"X-Mailer", "Crescent Internet Tool"},
               //Added 4-Apr-2000.  Check X-Mailer for Cybercreek Avalanche
  -            {"X-Mailer", "Avalanche"},
  +    {"X-Mailer", "Avalanche"},
               //Added 21-Oct-1999.  Subject contains 20 or more consecutive spaces
  -            {"Subject", "                    "},
  +    {"Subject", "                    "},
               //Added 31-Mar-2000.  Invalid headers from MyGuestBook.exe CGI spamware
  -            {"MessageID", "<.+>"},
  -            {"X-References", "0[A-Z0-9]+, 0[A-Z0-9]+$"},
  -            {"X-Other-References", "0[A-Z0-9]+$"},
  -            {"X-See-Also", "0[A-Z0-9]+$"},
  +    {"MessageID", "<.+>"},
  +    {"X-References", "0[A-Z0-9]+, 0[A-Z0-9]+$"},
  +    {"X-Other-References", "0[A-Z0-9]+$"},
  +    {"X-See-Also", "0[A-Z0-9]+$"},
               //Updated 28-Apr-1999.  Check for "Sender", "Resent-From", or 
"Resent-By"
               // before "X-UIDL".  If found, then exit.
  -            {RFC2822Headers.SENDER, ".+"},
  -            {RFC2822Headers.RESENT_FROM, ".+"},
  -            {"Resent-By", ".+"},
  +    {RFC2822Headers.SENDER, ".+"},
  +    {RFC2822Headers.RESENT_FROM, ".+"},
  +    {"Resent-By", ".+"},
               //Updated 19-May-1999.  Check for "X-Mozilla-Status" before "X-UIDL".
  -            {"X-Mozilla-Status", ".+"},
  +    {"X-Mozilla-Status", ".+"},
               //Updated 20-Jul-1999.  Check for "X-Mailer: Internet Mail Service"
               // before "X-UIDL".
  -            {"X-Mailer", "Internet Mail Service"},
  +    {"X-Mailer", "Internet Mail Service"},
               //Updated 25-Oct-1999.  Check for "X-ID" before "X-UIDL".
  -            {"X-ID", ".+"},
  +    {"X-ID", ".+"},
               //X-UIDL is a POP3 header that should normally not be seen
  -            {"X-UIDL", ".*"},
  +    {"X-UIDL", ".*"},
               //Some headers are valid only for the Pegasus Mail client.  So first 
check
               //for Pegasus header and exit if found.  If not found, check for
               //invalid headers: "Comments: Authenticated sender", "X-PMFLAGS" and 
"X-pmrqc".
  -            {"X-mailer", "Pegasus"},
  +    {"X-mailer", "Pegasus"},
               //Added 27-Aug-1999.  Pegasus now uses X-Mailer instead of X-mailer.
  -            {"X-Mailer", "Pegasus"},
  +    {"X-Mailer", "Pegasus"},
               //Added 25-Oct-1999.  Check for X-Confirm-Reading-To.
  -            {"X-Confirm-Reading-To", ".+"},
  +    {"X-Confirm-Reading-To", ".+"},
               //Check for invalid Pegasus headers
  -            {RFC2822Headers.COMMENTS, "Authenticated sender"},
  -            {"X-PMFLAGS", ".*"},
  -            {"X-Pmflags", ".*"},
  -            {"X-pmrqc", ".*"},
  -            {"Host-From:envonly", ".*"}};
  +    {RFC2822Headers.COMMENTS, "Authenticated sender"},
  +    {"X-PMFLAGS", ".*"},
  +    {"X-Pmflags", ".*"},
  +    {"X-pmrqc", ".*"},
  +    {"Host-From:envonly", ".*"}};
   
  -    public void init() {
  +    public void init() throws MessagingException {
           //No condition passed... just compile a bunch of regular expressions
           try {
  -            matcher = new Perl5Matcher();
  -            for (int i = 0; i < patterns.length; i++) {
  -                String pattern = (String)patterns[i][1];
  -                patterns[i][1] = new Perl5Compiler().compile(pattern);
  -            }
  +            compile(NESPatterns);
           } catch(MalformedPatternException mp) {
  -            log(mp.getMessage());
  -        }
  -    }
  -
  -    public Collection match(Mail mail) throws MessagingException {
  -        MimeMessage message = mail.getMessage();
  -
  -        //Loop through all the patterns
  -        for (int i = 0; i < patterns.length; i++) {
  -            //Get the header name
  -            String headerName = (String)patterns[i][0];
  -            //Get the patterns ro that header
  -            Pattern pattern = (Pattern)patterns[i][1];
  -            //Get the array of header values that match that
  -            String headers[] = message.getHeader(headerName);
  -            //Loop through the header values
  -            for (int j = 0; j < headers.length; j++) {
  -                if (matcher.matches(headers[j], pattern)) {
  -                    return mail.getRecipients();
  -                }
  -
  -            }
  +            throw new MessagingException("Could not initialize NES patterns", mp);
           }
  -        return null;
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to