You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2006/12/30 16:34:07 UTC

svn commit: r491237 - in /james/server/sandbox/handlerapi-experiment/src: java/org/apache/james/smtpserver/core/filter/fastfail/ test/org/apache/james/smtpserver/

Author: norman
Date: Sat Dec 30 07:34:06 2006
New Revision: 491237

URL: http://svn.apache.org/viewvc?view=rev&rev=491237
Log:
Modify fastfail handlers to use new Hooks. See JAMES-750 and JAMES-549

Modified:
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java
    james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java
    james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java
    james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java Sat Dec 30 07:34:06 2006
@@ -21,20 +21,21 @@
 
 package org.apache.james.smtpserver.core.filter.fastfail;
 
-import java.util.ArrayList;
-import java.util.Collection;
-
 import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.james.jspf.SPF;
 import org.apache.james.jspf.SPF1Utils;
 import org.apache.james.jspf.SPFResult;
 import org.apache.james.jspf.core.DNSService;
-import org.apache.james.smtpserver.CommandHandler;
 import org.apache.james.smtpserver.MessageHandler;
 import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.MailHook;
+import org.apache.james.smtpserver.hook.RcptHook;
 import org.apache.james.util.mail.SMTPRetCode;
 import org.apache.james.util.mail.dsn.DSNStatus;
 import org.apache.mailet.Mail;
@@ -52,7 +53,7 @@
  * <checkAuthNetworks>false&lt/checkAuthNetworks> 
  * </handler>
  */
-public class SPFHandler extends AbstractJunkHandler implements CommandHandler,
+public class SPFHandler extends AbstractLogEnabled implements MailHook, RcptHook,
         MessageHandler,Initializable {
 
     public static final String SPF_BLOCKLISTED = "SPF_BLOCKLISTED";
@@ -101,8 +102,6 @@
         if (configRelay != null) {
             setCheckAuthNetworks(configRelay.getValueAsBoolean(false));
         }
-        
-        super.configure(handlerConfiguration);
 
     }
     
@@ -157,19 +156,6 @@
         this.checkAuthNetworks = checkAuthNetworks;
     }
 
-    /**
-     * Calls the SPFcheck
-     * 
-     * @see org.apache.james.smtpserver.CommandHandler#onCommand(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String) 
-     */
-    public SMTPResponse onCommand(SMTPSession session, String command, String parameters) {
-        if (command.equals("MAIL")) {
-            doSPFCheck(session);
-        } else if (command.equals("RCPT")) {
-            return doProcessing(session);
-        }
-        return null;
-    }
 
     /**
      * Calls a SPF check
@@ -177,10 +163,7 @@
      * @param session
      *            SMTP session object
      */
-    private void doSPFCheck(SMTPSession session) {
-
-        MailAddress sender = (MailAddress) session.getState().get(
-                SMTPSession.SENDER);
+    private void doSPFCheck(SMTPSession session, MailAddress sender) {
         String heloEhlo = (String) session.getState().get(
                 SMTPSession.CURRENT_HELO_NAME);
 
@@ -232,17 +215,6 @@
     }
 
     /**
-     * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
-     */
-    public Collection getImplCommands() {
-        Collection commands = new ArrayList();
-        commands.add("MAIL");
-        commands.add("RCPT");
-
-        return commands;
-    }
-    
-    /**
      * @see org.apache.james.smtpserver.MessageHandler#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
      */
     public SMTPResponse onMessage(SMTPSession session, Mail mail) {
@@ -252,58 +224,40 @@
         return null;
     }
     
-
     /**
-     * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#check(org.apache.james.smtpserver.SMTPSession)
+     * @see org.apache.james.smtpserver.hook.RcptHook#doRcpt(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
      */
-    protected boolean check(SMTPSession session) {
-        MailAddress recipientAddress = (MailAddress) session.getState().get(
-                SMTPSession.CURRENT_RECIPIENT);
-        String blocklisted = (String) session.getState().get(SPF_BLOCKLISTED);
-        String tempBlocklisted = (String) session.getState().get(SPF_TEMPBLOCKLISTED);
-
+    public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
         // Check if the recipient is postmaster or abuse..
-        if (recipientAddress != null
-                && (recipientAddress.getUser().equalsIgnoreCase("postmaster")
-                        || recipientAddress.getUser().equalsIgnoreCase("abuse") || ((session
+        if (rcpt != null
+                && (rcpt.getUser().equalsIgnoreCase("postmaster")
+                        || rcpt.getUser().equalsIgnoreCase("abuse") || ((session
                         .isAuthRequired() && session.getUser() != null)))) {
             
 
-            return false;
+            return new HookResult(HookReturnCode.DECLINED);
         } else {
             // Check if session is blocklisted
-            if ((blocklisted != null && blocklisted.equals("true")) || tempBlocklisted != null) {
-                return true;
+            if (session.getState().get(SPF_BLOCKLISTED)!= null) {
+                return new HookResult(HookReturnCode.DENY,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " "
+                    + session.getState().get(SPF_TEMPBLOCKLISTED));
+            } else if (session.getState().get(SPF_TEMPBLOCKLISTED) != null) {
+                return new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR,DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + " "
+                    + "Temporarily rejected: Problem on SPF lookup");
             }
         }
-        return false;
+        return new HookResult(HookReturnCode.DECLINED);
     }
-    
+
+
     /**
-     * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkHandlerData(org.apache.james.smtpserver.SMTPSession)
+     * @see org.apache.james.smtpserver.hook.MailHook#doMail(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress)
      */
-    public JunkHandlerData getJunkHandlerData(SMTPSession session) {
-        String blocklisted = (String) session.getState().get(SPF_BLOCKLISTED);
-        String blocklistedDetail = (String) session.getState().get(SPF_DETAIL);
-        String tempBlocklisted = (String) session.getState().get(SPF_TEMPBLOCKLISTED);
-        JunkHandlerData data = new JunkHandlerData();
-
-        // Check if session is blocklisted
-        if (blocklisted != null && blocklisted.equals("true")) {
-            data.setRejectResponseString(new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " "
-                    + blocklistedDetail));
-        } else if (tempBlocklisted != null
-                && tempBlocklisted.equals("true")) {
-            data.setRejectResponseString(new SMTPResponse(SMTPRetCode.LOCAL_ERROR,DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + " "
-                    + "Temporarily rejected: Problem on SPF lookup"));
-        }
-        data.setJunkScoreLogString("Not match SPF-Record. Add junkScore: " + getScore());
-        data.setRejectLogString("Not match SPF-Record. Reject email");
-        data.setScoreName("SPFCheck");
-        return data;
+    public HookResult doMail(SMTPSession session, MailAddress sender) {
+        doSPFCheck(session,sender);
+        return new HookResult(HookReturnCode.DECLINED);
     }
     
-    
     /**
      * Inner class to provide a wrapper for loggin to avalon
      */
@@ -432,4 +386,5 @@
         }
 
     }
+
 }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java Sat Dec 30 07:34:06 2006
@@ -36,9 +36,11 @@
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.james.services.VirtualUserTable;
 import org.apache.james.services.VirtualUserTableStore;
-import org.apache.james.smtpserver.CommandHandler;
 import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.RcptHook;
 import org.apache.james.util.mail.SMTPRetCode;
 import org.apache.james.util.mail.dsn.DSNStatus;
 import org.apache.james.vut.ErrorMappingException;
@@ -51,7 +53,7 @@
 /**
  * Handler which reject invalid recipients
  */
-public class ValidRcptHandler extends AbstractLogEnabled implements CommandHandler, Configurable, Serviceable {
+public class ValidRcptHandler extends AbstractLogEnabled implements RcptHook, Configurable, Serviceable {
     
     private Collection recipients = new ArrayList();
     private Collection domains = new ArrayList();
@@ -162,76 +164,55 @@
     }
 
     /**
-     * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
+     * @see org.apache.james.smtpserver.hook.RcptHook#doRcpt(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
      */
-    public Collection getImplCommands() {
-        Collection c = new ArrayList();
-        c.add("RCPT");
-            
-        return c;
-    }
-
-    /**
-     * @see org.apache.james.smtpserver.CommandHandler#onCommand(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String) 
-     */
-    public SMTPResponse onCommand(SMTPSession session, String command, String parameters) {
-        if (!session.isRelayingAllowed() && !(session.isAuthRequired() && session.getUser() != null)) {
-            return checkValidRcpt(session);
-        } else {
-            getLogger().debug("Sender allowed");
-            return null;
-        }
-    }
-    
-    
-    
-    /**
-     * Check if the recipient should be accepted
-     * 
-     * @param session The SMTPSession
-     * @return 
-     */
-    private SMTPResponse checkValidRcpt(SMTPSession session) {
-        MailAddress rcpt = (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT);
-        boolean invalidUser = true;
+    public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
+        
+    if (!session.isRelayingAllowed() && !(session.isAuthRequired() && session.getUser() != null)) {
+            boolean invalidUser = true;
 
-        if (session.getConfigurationData().getUsersRepository().contains(rcpt.getUser()) == true || recipients.contains(rcpt.toString().toLowerCase()) || domains.contains(rcpt.getHost().toLowerCase())) {
-            invalidUser = false;
-        }
+            if (session.getConfigurationData().getUsersRepository().contains(rcpt.getUser()) == true || recipients.contains(rcpt.toString().toLowerCase()) || domains.contains(rcpt.getHost().toLowerCase())) {
+                invalidUser = false;
+            }
 
-        // check if an valid virtual mapping exists
-        if (invalidUser == true  && vut == true) {
-            try {
-                Collection targetString = table.getMappings(rcpt.getUser(), rcpt.getHost());
-        
-                if (targetString != null && targetString.isEmpty() == false) {
-                    invalidUser = false;
+            // check if an valid virtual mapping exists
+            if (invalidUser == true  && vut == true) {
+                try {
+                    Collection targetString = table.getMappings(rcpt.getUser(), rcpt.getHost());
+            
+                    if (targetString != null && targetString.isEmpty() == false) {
+                        invalidUser = false;
+                    }
+                } catch (ErrorMappingException e) {
+                    String responseString = e.getMessage();
+                    getLogger().info("Rejected message. Reject Message: " + responseString);
+                    SMTPResponse resp = new SMTPResponse(responseString);
+                    return new HookResult(HookReturnCode.DENY,resp.getRetCode(),(String) resp.getLines().get(0));
                 }
-            } catch (ErrorMappingException e) {
-                String responseString = e.getMessage();
-                getLogger().info("Rejected message. Reject Message: " + responseString);
-                return new SMTPResponse(responseString);
             }
-        }
-        
-        if (invalidUser == true && !regex.isEmpty()) {
-            Iterator reg = regex.iterator();
-            Perl5Matcher matcher  = new Perl5Matcher();
             
-            while (reg.hasNext()) {
-                if (matcher.matches(rcpt.toString(), (Pattern) reg.next())) {
-                    // regex match
-                    invalidUser = false;
-                    break;
+            if (invalidUser == true && !regex.isEmpty()) {
+                Iterator reg = regex.iterator();
+                Perl5Matcher matcher  = new Perl5Matcher();
+                
+                while (reg.hasNext()) {
+                    if (matcher.matches(rcpt.toString(), (Pattern) reg.next())) {
+                        // regex match
+                        invalidUser = false;
+                        break;
+                    }
                 }
             }
+        
+            if (invalidUser == true) {
+                //user not exist
+                getLogger().info("Rejected message. Unknown user: " + rcpt.toString());
+                return new HookResult(HookReturnCode.DENY,SMTPRetCode.TRANSACTION_FAILED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.toString());
+            }
+            return new HookResult(HookReturnCode.DECLINED);
+        } else {
+            getLogger().debug("Sender allowed");
+            return new HookResult(HookReturnCode.DECLINED);
         }
-    
-        if (invalidUser == true) {
-            //user not exist
-            getLogger().info("Rejected message. Unknown user: " + rcpt.toString());
-            return new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.toString());
-        }
-        return null;
     }
 }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java Sat Dec 30 07:34:06 2006
@@ -27,14 +27,16 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.james.dnsserver.TemporaryResolutionException;
 import org.apache.james.services.DNSServer;
-import org.apache.james.smtpserver.CommandHandler;
-import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.RcptHook;
 import org.apache.james.util.NetMatcher;
 import org.apache.james.util.mail.SMTPRetCode;
 import org.apache.james.util.mail.dsn.DSNStatus;
@@ -44,7 +46,7 @@
  * This class can be used to reject email with bogus MX which is send from a authorized user or an authorized
  * network.
  */
-public class ValidRcptMX extends AbstractJunkHandler implements CommandHandler,
+public class ValidRcptMX extends AbstractLogEnabled implements RcptHook,
     Serviceable {
 
     private DNSServer dnsServer = null;
@@ -81,7 +83,6 @@
                 "Please configure at least on invalid MX network");
         }
         
-        super.configure(arg0);
     }
 
     /**
@@ -107,22 +108,6 @@
     }
 
     /**
-     * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
-     */
-    public Collection getImplCommands() {
-        Collection c = new ArrayList();
-        c.add("RCPT");
-        return c;
-    }
-
-    /**
-     * @see org.apache.james.smtpserver.CommandHandler#onCommand(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String) 
-     */
-    public SMTPResponse onCommand(SMTPSession session, String command, String parameters) {
-        return doProcessing(session);
-    }
-
-    /**
      * Set the DNSServer
      * 
      * @param dnsServer
@@ -133,55 +118,40 @@
     }
 
     /**
-     * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#check(org.apache.james.smtpserver.SMTPSession)
+     * @see org.apache.james.smtpserver.hook.RcptHook#doRcpt(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
      */
-    protected boolean check(SMTPSession session) {
-        MailAddress rcpt = (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT);
+    public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
 
         String domain = rcpt.getHost();
 
         // Email should be deliver local
-        if (domain.equals(LOCALHOST)) return false;
+        if (!domain.equals(LOCALHOST)) {
  
-        Iterator mx = null;
-        try {
-            mx = dnsServer.findMXRecords(domain).iterator();
-        } catch (TemporaryResolutionException e1) {
-            //  TODO: Should we reject temporary ?
-        }
+            Iterator mx = null;
+            try {
+                mx = dnsServer.findMXRecords(domain).iterator();
+            } catch (TemporaryResolutionException e1) {
+                return new HookResult(HookReturnCode.DENYSOFT);
+            }
 
-        if (mx != null && mx.hasNext()) {
-            while (mx.hasNext()) {
-                String mxRec = mx.next().toString();
-
-                try {
-                    String ip = dnsServer.getByName(mxRec).getHostAddress();
-
-                    // Check for invalid MX
-                    if (bNetwork.matchInetNetwork(ip)) {
-                        return true;
+            if (mx != null && mx.hasNext()) {
+                while (mx.hasNext()) {
+                    String mxRec = mx.next().toString();
+
+                     try {
+                        String ip = dnsServer.getByName(mxRec).getHostAddress();
+
+                        // Check for invalid MX
+                        if (bNetwork.matchInetNetwork(ip)) {
+                            return new HookResult(HookReturnCode.DENY,SMTPRetCode.AUTH_REQUIRED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Invalid MX " + session.getRemoteIPAddress() 
+                                    + " for domain " + rcpt.getHost() + ". Reject email");
+                        }
+                    } catch (UnknownHostException e) {
+                        // Ignore this
                     }
-                } catch (UnknownHostException e) {
-                    // Ignore this
                 }
             }
         }
-        return false;
-    }
-
-    /**
-     * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkHandlerData(org.apache.james.smtpserver.SMTPSession)
-     */
-    public JunkHandlerData getJunkHandlerData(SMTPSession session) {
-        MailAddress rcpt = (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT);
-        JunkHandlerData data = new JunkHandlerData();
-
-        data.setRejectResponseString(new SMTPResponse(SMTPRetCode.AUTH_REQUIRED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Invalid MX " + session.getRemoteIPAddress() 
-            + " for domain " + rcpt.getHost() + ". Reject email"));
-       
-        data.setJunkScoreLogString("Invalid MX " + session.getRemoteIPAddress() + " for domain " + rcpt.getHost() + ". Add JunkScore: " + getScore());
-        data.setRejectLogString("Invalid MX " + session.getRemoteIPAddress() + " for domain " + rcpt.getHost() + ". Reject email");
-        data.setScoreName("ValidRcptMXCheck");
-        return data;
+        return new HookResult(HookReturnCode.DECLINED);
     }
 }

Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java Sat Dec 30 07:34:06 2006
@@ -30,8 +30,6 @@
 import org.apache.james.smtpserver.core.filter.fastfail.SPFHandler;
 import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.james.test.mock.mailet.MockMail;
-import org.apache.james.util.junkscore.JunkScore;
-import org.apache.james.util.junkscore.JunkScoreImpl;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
@@ -175,9 +173,9 @@
         MailAddress sender = (MailAddress) mockedSMTPSession.getState().get(SMTPSession.SENDER);
         MailAddress rcpt = (MailAddress) mockedSMTPSession.getState().get(SMTPSession.CURRENT_RECIPIENT);
 
-        spf.onCommand(mockedSMTPSession, "MAIL", "<"+ sender + ">");
+        spf.doMail(mockedSMTPSession, sender);
 
-        spf.onCommand(mockedSMTPSession,"RCPT","<" + rcpt + ">");
+        spf.doRcpt(mockedSMTPSession, sender, rcpt);
 
         spf.onMessage(mockedSMTPSession, mockMail);
     }
@@ -425,32 +423,5 @@
         assertNotNull("Header should present", mockedSMTPSession.getState()
                 .get(SPFHandler.SPF_HEADER));
     }
-    
-    public void testSPFfailAddJunkScore() throws Exception {
-        setupMockedSMTPSession("192.168.100.1", "spf2.james.apache.org",
-                new MailAddress("test@spf2.james.apache.org"), new MailAddress(
-                        "test@localhost"));
-        mockedSMTPSession.getState().put(JunkScore.JUNK_SCORE, new JunkScoreImpl());
-        
-        SPFHandler spf = new SPFHandler();
-
-        ContainerUtil.enableLogging(spf, new MockLogger());
-        spf.setAction("junkScore");
-        spf.setScore(20);
-        spf.setDNSService(mockedDnsService);     
-        
-        spf.initialize();
-
-        runHandlers(spf, mockedSMTPSession);
-
-        assertNotNull("reject", mockedSMTPSession.getState().get(
-                SPFHandler.SPF_BLOCKLISTED));
-        assertNotNull("blocked", mockedSMTPSession.getState().get(
-                SPFHandler.SPF_DETAIL));
-        assertNull("No tempError", mockedSMTPSession.getState().get(
-                SPFHandler.SPF_TEMPBLOCKLISTED));
-        assertNotNull("Header should present", mockedSMTPSession.getState()
-                .get(SPFHandler.SPF_HEADER));
-        assertEquals("Score added",((JunkScore) mockedSMTPSession.getState().get(JunkScore.JUNK_SCORE)).getStoredScore("SPFCheck"), 20.0, 0d);
-    }
+   
 }

Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java Sat Dec 30 07:34:06 2006
@@ -32,6 +32,7 @@
 import org.apache.james.services.UsersRepository;
 import org.apache.james.services.VirtualUserTable;
 import org.apache.james.smtpserver.core.filter.fastfail.ValidRcptHandler;
+import org.apache.james.smtpserver.hook.HookReturnCode;
 import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.james.test.mock.avalon.MockServiceManager;
 import org.apache.james.userrepository.MockUsersRepository;
@@ -75,14 +76,6 @@
 
                 return state;
             }
-        
-            public void setStopHandlerProcessing(boolean stop) {
-                this.stop = stop;
-            }
-        
-            public boolean getStopHandlerProcessing() {
-                return stop;
-            }
         };
     
         return session;
@@ -174,9 +167,9 @@
         SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(INVALID_USER + "@localhost"),false,false,null);
         ContainerUtil.enableLogging(handler,new MockLogger());
     
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
     
-        assertNotNull("Rejected",response);
+        assertEquals("Rejected",rCode,HookReturnCode.DENY);
     }
     
     public void testNotRejectInvalidUserAuth() throws Exception {
@@ -185,9 +178,9 @@
         SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(INVALID_USER + "@localhost"),false,true,"authedUser");
         ContainerUtil.enableLogging(handler,new MockLogger());
     
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-    
-        assertNull("Not rejected",response);
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        
+        assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
     }
     
     public void testNotRejectInvalidUserRelay() throws Exception {
@@ -196,10 +189,9 @@
         SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(INVALID_USER + "@localhost"),true,false,null);
         ContainerUtil.enableLogging(handler,new MockLogger());
 
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-    
-    
-        assertNull("Not rejected",response);
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        
+        assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
     }
     
     public void testNotRejectValidUser() throws Exception {
@@ -208,10 +200,9 @@
         SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(VALID_USER + "@localhost"),false,false,null);
         ContainerUtil.enableLogging(handler,new MockLogger());
     
-
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-    
-        assertNull("Not rejected",response);
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        
+        assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
     }
     
     public void testNotRejectValidUserRecipient() throws Exception {
@@ -223,9 +214,9 @@
     
         handler.setValidRecipients(recipient);
 
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-    
-        assertNull("Not rejected",response);
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        
+        assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
     }
     
     public void testNotRejectValidUserDomain() throws Exception {
@@ -239,9 +230,9 @@
     
         handler.setValidDomains(domain);
 
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-    
-        assertNull("Not rejected",response);
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        
+        assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
     }
     
     public void testNotRejectValidUserRegex() throws Exception {
@@ -255,9 +246,9 @@
     
         handler.setValidRegex("reci.*");
 
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-    
-        assertNull("Not rejected",response);
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        
+        assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
     }
     
     public void testInvalidRegex() throws Exception{
@@ -282,9 +273,9 @@
         ContainerUtil.service(handler, setUpServiceManager());
         ContainerUtil.enableLogging(handler,new MockLogger());
 
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-    
-        assertNull("No reject",response);
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        
+        assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
     }
     
     public void testHasErrorMapping() throws Exception {
@@ -294,9 +285,9 @@
         ContainerUtil.service(handler, setUpServiceManager());
         ContainerUtil.enableLogging(handler,new MockLogger());
 
-        SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
+        int rCode = handler.doRcpt(session, null,(MailAddress)session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
     
         assertNull("Valid Error mapping",session.getState().get("VALID_USER"));
-        assertNotNull("Error mapping",response);
+        assertEquals("Error mapping",rCode, HookReturnCode.DENY);
     }
 }

Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java Sat Dec 30 07:34:06 2006
@@ -32,9 +32,8 @@
 import org.apache.james.services.AbstractDNSServer;
 import org.apache.james.services.DNSServer;
 import org.apache.james.smtpserver.core.filter.fastfail.ValidRcptMX;
+import org.apache.james.smtpserver.hook.HookReturnCode;
 import org.apache.james.test.mock.avalon.MockLogger;
-import org.apache.james.util.junkscore.JunkScore;
-import org.apache.james.util.junkscore.JunkScoreImpl;
 import org.apache.mailet.MailAddress;
 
 import junit.framework.TestCase;
@@ -50,8 +49,7 @@
     private SMTPSession setupMockedSMTPSession(final MailAddress rcpt) {
         SMTPSession session = new AbstractSMTPSession() {
             HashMap state = new HashMap();
-            boolean stopProcessing = false;
-
+            
             public Map getState() {
                 state.put(SMTPSession.CURRENT_RECIPIENT, rcpt);
                 return state;
@@ -60,10 +58,6 @@
             public String getRemoteIPAddress() {
                 return "127.0.0.1";
             }
-            
-            public void setStopHandlerProcessing(boolean stopProcessing) {
-                this.stopProcessing = stopProcessing;
-            }
 
         };
         return session;
@@ -107,32 +101,9 @@
 
         handler.setDNSServer(dns);
         handler.setBannedNetworks(bNetworks, dns);
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT + ">"));
+        int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
 
-        assertNotNull("Reject", response);
+        assertEquals("Reject", rCode, HookReturnCode.DENY);
     }
     
-
-    public void testAddJunkScoreLoopbackMX() throws ParseException {
-        Collection bNetworks = new ArrayList();
-        bNetworks.add("127.0.0.1");
-        
-        SMTPSession session = setupMockedSMTPSession(new MailAddress("test@" + INVALID_HOST));
-        session.getState().put(JunkScore.JUNK_SCORE, new JunkScoreImpl());
-        
-        DNSServer dns = setupMockedDNSServer();
-        ValidRcptMX handler = new ValidRcptMX();
-        handler.setScore(20);
-        handler.setAction("junkScore");
-
-        ContainerUtil.enableLogging(handler, new MockLogger());
-
-        handler.setDNSServer(dns);
-        handler.setBannedNetworks(bNetworks, dns);
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT + ">"));
-
-
-        assertNull("Not Reject", response);
-        assertEquals("JunkScore added",((JunkScore) session.getState().get(JunkScore.JUNK_SCORE)).getStoredScore("ValidRcptMXCheck"),20.0, 0d);
-    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org