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/28 11:01:26 UTC

svn commit: r490690 - in /james/server/sandbox/handlerapi-experiment/src: java/org/apache/james/smtpserver/core/ java/org/apache/james/smtpserver/core/filter/ java/org/apache/james/smtpserver/core/filter/fastfail/ java/org/apache/james/smtpserver/hook/...

Author: norman
Date: Thu Dec 28 02:01:24 2006
New Revision: 490690

URL: http://svn.apache.org/viewvc?view=rev&rev=490690
Log:
Modify EhloCmdHandler and HeloCmdHandler to extend AbstractHookableCmdHandler. See JAMES-750 and JAMES-549

Added:
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/EhloHook.java   (with props)
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HeloHook.java   (with props)
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookReturnCode.java   (with props)
Modified:
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/AbstractHookableCmdHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/EhloCmdHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/HeloCmdHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/CoreFilterCmdHandlerLoader.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/DNSRBLHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ResolvableEhloHeloHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ReverseEqualsEhloHeloHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/TarpitHandler.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java
    james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java
    james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java
    james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ResolvableEhloHeloHandlerTest.java

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/AbstractHookableCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/AbstractHookableCmdHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/AbstractHookableCmdHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/AbstractHookableCmdHandler.java Thu Dec 28 02:01:24 2006
@@ -28,13 +28,18 @@
 import org.apache.james.smtpserver.ExtensibleHandler;
 import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.EhloHook;
+import org.apache.james.smtpserver.hook.HeloHook;
 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.mailet.MailAddress;
 
 /**
   * Abstract class which Handle hooks. 
+  * 
+  * TODO: Maybe we should take care of relaying etc here ?
   */
 public abstract class AbstractHookableCmdHandler extends AbstractLogEnabled implements
         CommandHandler, ExtensibleHandler {
@@ -48,6 +53,7 @@
         SMTPResponse response = doFilterChecks(session,command,parameters);
     
         if (response == null) {
+            
             response = processHooks(session, command, parameters);
             if (response == null) {
                 return doCoreCmd(session, command, parameters);
@@ -78,6 +84,14 @@
                 Object rawHook = hooks.get(i);
                 HookResult result = null;
                 
+                if ("HELO".equals(command) && rawHook instanceof HeloHook) {
+                    result = ((HeloHook) rawHook).doHelo(session, parameters);    
+                }
+                
+                if ("EHLO".equals(command) && rawHook instanceof EhloHook) {
+                    result = ((EhloHook) rawHook).doEhlo(session, parameters);    
+                }
+                
                 if ("RCPT".equals(command) && rawHook instanceof RcptHook) {
                     result = ((RcptHook) rawHook).doRcpt(session, (MailAddress) session.getState().get(SMTPSession.SENDER), (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT));
                 }
@@ -88,14 +102,16 @@
                     int rCode = result.getResult();
                     String smtpRetCode = result.getSmtpRetCode();
                     String smtpDesc = result.getSmtpDescription();
-                
-                    if (rCode == RcptHook.DENY) {
+
+                    if (rCode == HookReturnCode.DENY) {
                         if (smtpRetCode == null) smtpRetCode = SMTPRetCode.TRANSACTION_FAILED;
                         if (smtpDesc == null) smtpDesc = "Email rejected";
-                    
+                        
                         return new SMTPResponse(smtpRetCode, smtpDesc);
-                    }else if (rCode == RcptHook.DENYSOFT) {
+                    }else if (rCode == HookReturnCode.DENYSOFT) {
                         return new SMTPResponse(SMTPRetCode.LOCAL_ERROR,"Temporary problem. Please try again later");
+                    } else if (rCode == HookReturnCode.OK) {
+                    return new SMTPResponse(SMTPRetCode.MAIL_OK,"Accepted.");
                     }
                 }
             }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/EhloCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/EhloCmdHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/EhloCmdHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/EhloCmdHandler.java Thu Dec 28 02:01:24 2006
@@ -25,33 +25,26 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.james.smtpserver.CommandHandler;
-import org.apache.james.smtpserver.ExtensibleHandler;
 import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.EhloHook;
 import org.apache.james.util.mail.SMTPRetCode;
+import org.apache.james.util.mail.dsn.DSNStatus;
 
 /**
  * Handles EHLO command
  */
-public class EhloCmdHandler extends AbstractLogEnabled implements
-        CommandHandler, ExtensibleHandler {
+public class EhloCmdHandler extends AbstractHookableCmdHandler implements
+        CommandHandler {
 
     /**
      * The name of the command handled by the command handler
      */
     private final static String COMMAND_NAME = "EHLO";
     private List ehloExtensions;
+    private List hooks;
 
-    /**
-     * processes EHLO command
-     *
-     * @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 arguments) {
-        return doEHLO(session, arguments);
-    }
 
     /**
      * Handler method called upon receipt of a EHLO command.
@@ -103,8 +96,9 @@
      * @see org.apache.james.smtpserver.ExtensibleHandler#getMarkerInterfaces()
      */
     public List getMarkerInterfaces() {
-        ArrayList classes = new ArrayList(1);
+        ArrayList classes = new ArrayList(2);
         classes.add(EhloExtension.class);
+        classes.add(EhloHook.class);
         return classes;
     }
 
@@ -114,6 +108,8 @@
     public void wireExtensions(Class interfaceName, List extension) {
         if (EhloExtension.class.equals(interfaceName)) {
             this.ehloExtensions = extension;
+        } else if (EhloHook.class.equals(interfaceName)) {
+            this.hooks = extension;
         }
     }
 
@@ -132,6 +128,35 @@
                 }
             }
         }
+    }
+    
+    /**
+     * @see org.apache.james.smtpserver.core.AbstractHookableCmdHandler#doCoreCmd(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String)
+     */
+    protected SMTPResponse doCoreCmd(SMTPSession session, String command, String parameters) {
+        return doEHLO(session,parameters);
+    }
+
+    /**
+     * @see org.apache.james.smtpserver.core.AbstractHookableCmdHandler#doFilterChecks(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String)
+     */
+    protected SMTPResponse doFilterChecks(SMTPSession session, String command, String parameters) {
+        session.resetState();
+        
+        if (parameters == null) {
+            return new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Domain address required: " + COMMAND_NAME);
+        } else {
+            // store provided name
+            session.getState().put(SMTPSession.CURRENT_HELO_NAME,parameters);
+            return null;
+        }
+    }
+
+    /**
+     * @see org.apache.james.smtpserver.core.AbstractHookableCmdHandler#getHooks()
+     */
+    protected List getHooks() {
+        return hooks;
     }
 
 

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/HeloCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/HeloCmdHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/HeloCmdHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/HeloCmdHandler.java Thu Dec 28 02:01:24 2006
@@ -24,54 +24,88 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.james.smtpserver.CommandHandler;
 import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HeloHook;
 import org.apache.james.util.mail.SMTPRetCode;
+import org.apache.james.util.mail.dsn.DSNStatus;
 
 
 /**
   * Handles HELO command
   */
-public class HeloCmdHandler extends AbstractLogEnabled implements CommandHandler {
+public class HeloCmdHandler extends AbstractHookableCmdHandler implements CommandHandler {
 
     /**
      * The name of the command handled by the command handler
      */
     private final static String COMMAND_NAME = "HELO";   
+    
+    private List hooks;
       
     /**
-     * process HELO command
-     *
-     * @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 arguments) {
-        return doHELO(session, arguments);
+     * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
+     */
+    public Collection getImplCommands() {
+        Collection implCommands = new ArrayList();
+        implCommands.add(COMMAND_NAME);
+        
+        return implCommands;
     }
 
     /**
-     * @param session SMTP session object
-     * @param argument the argument passed in with the command by the SMTP client
+     * @see org.apache.james.smtpserver.core.AbstractHookableCmdHandler#doCoreCmd(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String)
      */
-    private SMTPResponse doHELO(SMTPSession session, String argument) {
+    protected SMTPResponse doCoreCmd(SMTPSession session, String command, String parameters) {
         session.getConnectionState().put(SMTPSession.CURRENT_HELO_MODE, COMMAND_NAME);
         StringBuffer response = new StringBuffer();
         response.append(session.getConfigurationData().getHelloName())
-                .append(" Hello ").append(argument).append(" (").append(
+                .append(" Hello ").append(parameters).append(" (").append(
                         session.getRemoteHost()).append(" [").append(
                         session.getRemoteIPAddress()).append("])");
         return new SMTPResponse(SMTPRetCode.MAIL_OK, response);
     }
-    
+
     /**
-     * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
+     * @see org.apache.james.smtpserver.core.AbstractHookableCmdHandler#doFilterChecks(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String)
      */
-    public Collection getImplCommands() {
-        Collection implCommands = new ArrayList();
-        implCommands.add(COMMAND_NAME);
+    protected SMTPResponse doFilterChecks(SMTPSession session, String command, String parameters) {
+        session.resetState();
         
-        return implCommands;
+        if (parameters == null) {
+            return new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Domain address required: " + COMMAND_NAME);
+        } else {
+            // store provided name
+            session.getState().put(SMTPSession.CURRENT_HELO_NAME,parameters);
+            return null;
+        }
+    }
+    
+    /**
+     * @see org.apache.james.smtpserver.core.AbstractHookableCmdHandler#getHooks()
+     */
+    protected List getHooks() {
+    return hooks;
+    }
+
+    /**
+     * @see org.apache.james.smtpserver.ExtensibleHandler#getMarkerInterfaces()
+     */
+    public List getMarkerInterfaces() {
+    List mInterfaces = new ArrayList(1);
+    mInterfaces.add(HeloHook.class);
+    return mInterfaces;
+    }
+
+    /**
+     * @see org.apache.james.smtpserver.ExtensibleHandler#wireExtensions(java.lang.Class, java.util.List)
+     */
+    public void wireExtensions(Class interfaceName, List extension) {
+    if (HeloHook.class.equals(interfaceName)) {
+        hooks = extension;
+    }
     } 
 }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/RcptCmdHandler.java Thu Dec 28 02:01:24 2006
@@ -28,7 +28,6 @@
 import java.util.StringTokenizer;
 
 import org.apache.james.smtpserver.CommandHandler;
-import org.apache.james.smtpserver.ExtensibleHandler;
 import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
 import org.apache.james.smtpserver.hook.RcptHook;
@@ -40,7 +39,7 @@
   * Handles RCPT command
   */
 public class RcptCmdHandler extends AbstractHookableCmdHandler implements
-        CommandHandler, ExtensibleHandler {
+        CommandHandler {
 
     private List rcptHooks;
     

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/CoreFilterCmdHandlerLoader.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/CoreFilterCmdHandlerLoader.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/CoreFilterCmdHandlerLoader.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/CoreFilterCmdHandlerLoader.java Thu Dec 28 02:01:24 2006
@@ -46,8 +46,8 @@
         
         // Insert the basecommands in the Map
         commands.put("DATA", DATABASEFILTERCMDHANDLER);
-        commands.put("EHLO", EHLOBASEFILTERCMDHANDLER);
-        commands.put("HELO", HELOBASEFILTERCMDHANDLER);
+        //commands.put("EHLO", EHLOBASEFILTERCMDHANDLER);
+        //commands.put("HELO", HELOBASEFILTERCMDHANDLER);
         commands.put("MAIL", MAILBASEFILTERCMDHANDLER);
         // not needed any more the RCPT filters get loaded from the main class
         //commands.put("RCPT", RCPTBASEFILTERCMDHANDLER);

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/DNSRBLHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/DNSRBLHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/DNSRBLHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/DNSRBLHandler.java Thu Dec 28 02:01:24 2006
@@ -34,6 +34,7 @@
 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.junkscore.JunkScore;
 import org.apache.james.util.mail.SMTPRetCode;
@@ -259,14 +260,14 @@
                 !(session.isAuthRequired() && session.getUser() != null) && // Not (SMTP AUTH is enabled and not authenticated)
                 !(recipientAddress.getUser().equalsIgnoreCase("postmaster") || recipientAddress.getUser().equalsIgnoreCase("abuse"))) {
             if (blocklistedDetail == null) {
-                return new HookResult(RcptHook.DENY,DSNStatus.getStatus(DSNStatus.PERMANENT,
+                return new HookResult(HookReturnCode.DENY,DSNStatus.getStatus(DSNStatus.PERMANENT,
                         DSNStatus.SECURITY_AUTH)  + " Rejected: unauthenticated e-mail from " + session.getRemoteIPAddress() 
                         + " is restricted.  Contact the postmaster for details.");
             } else {
-                return new HookResult(RcptHook.DENY,"530",DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SECURITY_AUTH) + " " + blocklistedDetail);
+                return new HookResult(HookReturnCode.DENY,"530",DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SECURITY_AUTH) + " " + blocklistedDetail);
             }
            
         }
-        return new HookResult(RcptHook.OK);
+        return new HookResult(HookReturnCode.DECLINED);
     }
 }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/MaxRcptHandler.java Thu Dec 28 02:01:24 2006
@@ -27,6 +27,7 @@
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 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;
@@ -70,10 +71,10 @@
         if ((session.getRcptCount() + 1) > maxRcpt) {
             getLogger().info("Maximum recipients of " + maxRcpt + " reached");
             
-            return new HookResult(RcptHook.DENY, SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC)
+            return new HookResult(HookReturnCode.DENY, SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC)
                     + " Requested action not taken: max recipients reached");
         } else {
-            return new HookResult(RcptHook.OK);
+            return new HookResult(HookReturnCode.DECLINED);
         }
     }
 }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ResolvableEhloHeloHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ResolvableEhloHeloHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ResolvableEhloHeloHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ResolvableEhloHeloHandler.java Thu Dec 28 02:01:24 2006
@@ -22,27 +22,29 @@
 import org.apache.avalon.framework.configuration.Configurable;
 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.services.DNSServer;
-import org.apache.james.smtpserver.CommandHandler;
-import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
-import org.apache.james.util.junkscore.JunkScore;
+import org.apache.james.smtpserver.hook.EhloHook;
+import org.apache.james.smtpserver.hook.HeloHook;
+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.mailet.MailAddress;
 
 import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
+
 
 /**
  * This CommandHandler can be used to reject not resolvable EHLO/HELO
  */
-public class ResolvableEhloHeloHandler extends AbstractJunkHandler implements
-        CommandHandler, Configurable, Serviceable {
+public class ResolvableEhloHeloHandler extends AbstractLogEnabled implements Configurable, Serviceable, RcptHook, EhloHook, HeloHook {
 
     public final static String BAD_EHLO_HELO = "BAD_EHLO_HELO";
 
@@ -68,8 +70,6 @@
         if (configAuthUser != null) {
             setCheckAuthUsers(configAuthUser.getValueAsBoolean(false));
         }
-        
-        super.configure(handlerConfiguration);
     }
 
     /**
@@ -110,18 +110,6 @@
     }
 
     /**
-     * @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("HELO") || command.equals("EHLO")) {
-            checkEhloHelo(session, parameters);
-        } else if (command.equals("RCPT")) {
-            return doProcessing(session);
-        }
-        return null;
-    }
-
-    /**
      * Check if EHLO/HELO is resolvable
      * 
      * @param session
@@ -145,26 +133,10 @@
         }
     }
 
-
-    /**
-     * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
-     */
-    public Collection getImplCommands() {
-        Collection implCommands = new ArrayList();
-        implCommands.add("EHLO");
-        implCommands.add("HELO");
-        implCommands.add("RCPT");
-
-        return implCommands;
-    }
-
     /**
      * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#check(org.apache.james.smtpserver.SMTPSession)
      */
-    protected boolean check(SMTPSession session) {
-    
-        MailAddress rcpt = (MailAddress) session.getState().get(
-                SMTPSession.CURRENT_RECIPIENT);
+    protected boolean check(SMTPSession session,MailAddress rcpt) {
 
         // not reject it
         if (session.getState().get(BAD_EHLO_HELO) == null
@@ -179,29 +151,31 @@
         return false;
     }
 
-
     /**
-     * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkScore(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 JunkScore getJunkScore(SMTPSession session) {
-        return JunkScoreHandler.getLazyJunkScoreHandler(session.getConnectionState(), JunkScore.JUNK_SCORE_SESSION);
+    public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
+        if (check(session,rcpt)) {
+            return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG)
+                    + " Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " can not resolved.");
+        } else {
+            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.EhloHook#doEhlo(org.apache.james.smtpserver.SMTPSession, java.lang.String)
      */
-    public JunkHandlerData getJunkHandlerData(SMTPSession session) {
-        JunkHandlerData data = new JunkHandlerData();
-        
-        data.setJunkScoreLogString("Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " can not resolved. Add junkScore: " + getScore());
-        data.setRejectLogString("Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " can not resolved. Reject mail");
-    
-        
-        data.setRejectResponseString(new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG)
-                + " Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " can not resolved"));
+    public HookResult doEhlo(SMTPSession session, String helo) {
+        return doHelo(session,helo);
+    }
 
-        data.setScoreName("ResolvableEhloHeloCheck");
-        return data;
+    /**
+     * @see org.apache.james.smtpserver.hook.HeloHook#doHelo(org.apache.james.smtpserver.SMTPSession, java.lang.String)
+     */
+    public HookResult doHelo(SMTPSession session, String helo) {
+        checkEhloHelo(session, helo);
+        return new HookResult(HookReturnCode.DECLINED);
     }
 
 }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ReverseEqualsEhloHeloHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ReverseEqualsEhloHeloHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ReverseEqualsEhloHeloHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ReverseEqualsEhloHeloHandler.java Thu Dec 28 02:01:24 2006
@@ -19,10 +19,7 @@
 
 package org.apache.james.smtpserver.core.filter.fastfail;
 
-import org.apache.james.smtpserver.SMTPResponse;
 import org.apache.james.smtpserver.SMTPSession;
-import org.apache.james.util.mail.SMTPRetCode;
-import org.apache.james.util.mail.dsn.DSNStatus;
 
 
 import java.net.UnknownHostException;
@@ -58,24 +55,5 @@
             if (badHelo)
                 session.getState().put(BAD_EHLO_HELO, "true");
         }
-    }
-    
-    /**
-     * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkHandlerData(org.apache.james.smtpserver.SMTPSession)
-     */
-    public JunkHandlerData getJunkHandlerData(SMTPSession session) {
-        JunkHandlerData data = new JunkHandlerData();
-        
-        data.setJunkScoreLogString("Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " not equal reverse of "
-                + session.getRemoteIPAddress() + ". Add junkScore: " + getScore());
-        data.setRejectLogString("501 " + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG)
-            + " Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " not equal reverse of "
-                + session.getRemoteIPAddress());
-        
-        data.setRejectResponseString(new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG)
-            + " Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " not equal reverse of "
-                + session.getRemoteIPAddress()));
-        data.setScoreName("ReverseEqualsEhloHeloCheck");
-        return data;
     }
 }

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/TarpitHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/TarpitHandler.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/TarpitHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/TarpitHandler.java Thu Dec 28 02:01:24 2006
@@ -27,6 +27,7 @@
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 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.mailet.MailAddress;
 
@@ -101,6 +102,6 @@
             session.sleep(tarpitSleepTime);
         }
         
-        return new HookResult(RcptHook.OK);
+        return new HookResult(HookReturnCode.DECLINED);
     }
 }

Added: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/EhloHook.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/EhloHook.java?view=auto&rev=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/EhloHook.java (added)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/EhloHook.java Thu Dec 28 02:01:24 2006
@@ -0,0 +1,8 @@
+package org.apache.james.smtpserver.hook;
+
+import org.apache.james.smtpserver.SMTPSession;
+
+public interface EhloHook {
+
+    public HookResult doEhlo(SMTPSession session, String ehlo);
+}

Propchange: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/EhloHook.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HeloHook.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HeloHook.java?view=auto&rev=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HeloHook.java (added)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HeloHook.java Thu Dec 28 02:01:24 2006
@@ -0,0 +1,8 @@
+package org.apache.james.smtpserver.hook;
+
+import org.apache.james.smtpserver.SMTPSession;
+
+public interface HeloHook {
+
+    public HookResult doHelo(SMTPSession session, String helo);
+}

Propchange: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HeloHook.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookResult.java Thu Dec 28 02:01:24 2006
@@ -19,34 +19,71 @@
 
 package org.apache.james.smtpserver.hook;
 
+/**
+ * Result which get used for hooks
+ * 
+ */
 public class HookResult {
 
     private int result;
     private String smtpRetCode;
     private String smtpDescription;
     
+    /**
+     * Construct new HookResult
+     * 
+     * @param result
+     * @param smtpRetCode 
+     * @param smtpDescription
+     */
     public HookResult(int result, String smtpRetCode, String smtpDescription) {
         this.result = result;
         this.smtpRetCode = smtpRetCode;
         this.smtpDescription = smtpDescription;
     }
     
+    /**
+     * Construct new HookResult
+     * 
+     * @param result
+     * @param smtpDescription
+     */
     public HookResult(int result, String smtpDescription) {
         this(result,null,smtpDescription);
     }
     
+    /**
+     * Construct new HookResult
+     * 
+     * @param result
+     */
     public HookResult(int result) {
         this(result,null,null);
     }
     
+    /**
+     * Return the result
+     * 
+     * @return result
+     */
     public int getResult() {
         return result;
     }
     
+    /**
+     * Return the SMTPRetCode which should used. If not set return null. 
+     * 
+     * @return smtpRetCode
+     */
     public String getSmtpRetCode() {
         return smtpRetCode;
     }
     
+    /**
+     * Return the SMTPDescription which should used. If not set return null
+     *  
+     * @return smtpDescription
+     */
     public String getSmtpDescription() {
         return smtpDescription;
     }

Added: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookReturnCode.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookReturnCode.java?view=auto&rev=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookReturnCode.java (added)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookReturnCode.java Thu Dec 28 02:01:24 2006
@@ -0,0 +1,8 @@
+package org.apache.james.smtpserver.hook;
+
+public class HookReturnCode {
+    public final static int OK = 0;
+    public final static int DENY = 1;
+    public final static int DENYSOFT = 2;
+    public final static int DECLINED = 3;
+}

Propchange: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/HookReturnCode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/RcptHook.java Thu Dec 28 02:01:24 2006
@@ -24,10 +24,6 @@
 import org.apache.mailet.MailAddress;
 
 public interface RcptHook {
-    public final static int OK = 0;
-    public final static int DENY = 1;
-    public final static int DENYSOFT = 2;
-    
     public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt);
 
 }

Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/MaxRcptHandlerTest.java Thu Dec 28 02:01:24 2006
@@ -31,6 +31,7 @@
 
 import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.james.smtpserver.core.filter.fastfail.MaxRcptHandler;
+import org.apache.james.smtpserver.hook.HookReturnCode;
 import org.apache.james.smtpserver.hook.RcptHook;
 import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.mailet.MailAddress;
@@ -69,7 +70,7 @@
         handler.setMaxRcpt(2);
         int resp = handler.doRcpt(session,null,new MailAddress("test@test")).getResult();
     
-        assertEquals("Rejected.. To many recipients", resp, RcptHook.DENY);
+        assertEquals("Rejected.. To many recipients", resp, HookReturnCode.DENY);
     }
     /*
     public void testAddScoreMaxRcpt() {
@@ -100,7 +101,7 @@
         handler.setMaxRcpt(4);
         int resp = handler.doRcpt(session,null,new MailAddress("test@test")).getResult();
         
-        assertEquals("Not Rejected..", resp, RcptHook.OK);
+        assertEquals("Not Rejected..", resp, HookReturnCode.DECLINED);
     }
 
 }

Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ResolvableEhloHeloHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ResolvableEhloHeloHandlerTest.java?view=diff&rev=490690&r1=490689&r2=490690
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ResolvableEhloHeloHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ResolvableEhloHeloHandlerTest.java Thu Dec 28 02:01:24 2006
@@ -34,9 +34,8 @@
 import org.apache.james.services.AbstractDNSServer;
 import org.apache.james.services.DNSServer;
 import org.apache.james.smtpserver.core.filter.fastfail.ResolvableEhloHeloHandler;
+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;
 
 public class ResolvableEhloHeloHandlerTest extends TestCase {
@@ -114,11 +113,11 @@
         
         handler.setDnsServer(setupMockDNSServer());
         
-        handler.onCommand(session, "HELO", INVALID_HOST);
+        handler.doHelo(session, INVALID_HOST);
         assertNotNull("Invalid HELO",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
         
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNotNull("Reject", response);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Reject", result,HookReturnCode.DENY);
     }
     
     
@@ -130,11 +129,11 @@
         
         handler.setDnsServer(setupMockDNSServer());
   
-        handler.onCommand(session, "HELO", VALID_HOST);
+        handler.doHelo(session, VALID_HOST);
         assertNull("Valid HELO",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
 
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNull("Not reject", response);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Not reject", result,HookReturnCode.DECLINED);
     }
     
     public void testNotRejectInvalidHeloAuthUser() throws ParseException {
@@ -145,12 +144,12 @@
         
         handler.setDnsServer(setupMockDNSServer());
         
-        handler.onCommand(session,"HELO", INVALID_HOST);
+        handler.doHelo(session, INVALID_HOST);
         assertNotNull("Value stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
 
 
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNull("Not reject", response);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Not reject", result,HookReturnCode.DECLINED);
     }
     
     public void testRejectInvalidHeloAuthUser() throws ParseException {
@@ -162,12 +161,12 @@
         handler.setDnsServer(setupMockDNSServer());
         handler.setCheckAuthUsers(true);
 
-        handler.onCommand(session,"HELO", INVALID_HOST);
+        handler.doHelo(session, INVALID_HOST);
         assertNotNull("Value stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
         
         
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNotNull("reject", response);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Reject", result,HookReturnCode.DENY);
     }
     
     public void testNotRejectRelay() throws ParseException {
@@ -179,11 +178,11 @@
         handler.setDnsServer(setupMockDNSServer());
         
 
-        handler.onCommand(session, "HELO", INVALID_HOST);
+        handler.doHelo(session, INVALID_HOST);
         assertNull("Value not stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
 
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNull("Not reject", response);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Not reject", result,HookReturnCode.DECLINED);
     }
     
     public void testRejectRelay() throws ParseException {
@@ -195,12 +194,12 @@
         handler.setDnsServer(setupMockDNSServer());
         handler.setCheckAuthNetworks(true);
 
-        handler.onCommand(session,"HELO", INVALID_HOST);
+        handler.doHelo(session, INVALID_HOST);
         assertNotNull("Value stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
         
         
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNotNull("Reject", response);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Reject", result,HookReturnCode.DENY);
     }
     
     public void testNotRejectInvalidHeloPostmaster() throws ParseException {
@@ -211,12 +210,11 @@
         
         handler.setDnsServer(setupMockDNSServer());
         
-        handler.onCommand(session, "HELO", INVALID_HOST);
+        handler.doHelo(session, INVALID_HOST);
         assertNotNull("stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
         
-        
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNull("Not Reject", response);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Not reject", result,HookReturnCode.DECLINED);
     }
     
     public void testNotRejectInvalidHeloAbuse() throws ParseException {
@@ -227,33 +225,11 @@
         
         handler.setDnsServer(setupMockDNSServer());
         
-        handler.onCommand(session, "HELO", INVALID_HOST);
+        handler.doHelo(session, INVALID_HOST);
         assertNotNull("stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
         
         
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNull("Not Reject", response);
-    }
-    
-    public void testAddJunkScoreInvalidHelo() throws ParseException {
-        SMTPSession session = setupMockSession(INVALID_HOST,false,false,null,new MailAddress("test@localhost"));
-        session.getConnectionState().put(JunkScore.JUNK_SCORE_SESSION, new JunkScoreImpl());
-        ResolvableEhloHeloHandler handler = new ResolvableEhloHeloHandler();
-        
-        ContainerUtil.enableLogging(handler,new MockLogger());
-        
-        handler.setDnsServer(setupMockDNSServer());
-        handler.setAction("junkScore");
-        handler.setScore(20);
-        
-
-        handler.onCommand(session, "HELO", INVALID_HOST);
-        assertNotNull("Invalid HELO",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
-        
-        
-        SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-        assertNull("Not Reject", response);
-        
-        assertEquals("JunkScore added", ((JunkScore) session.getConnectionState().get(JunkScore.JUNK_SCORE_SESSION)).getStoredScore("ResolvableEhloHeloCheck"), 20.0, 0d);
+        int result = handler.doRcpt(session,null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+        assertEquals("Not reject", result,HookReturnCode.DECLINED);
     }
 }



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