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("[EMAIL
PROTECTED]")).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("[EMAIL
PROTECTED]")).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("[EMAIL
PROTECTED]"));
- 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]