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