You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2006/12/30 16:34:07 UTC
svn commit: r491237 - in /james/server/sandbox/handlerapi-experiment/src:
java/org/apache/james/smtpserver/core/filter/fastfail/
test/org/apache/james/smtpserver/
Author: norman
Date: Sat Dec 30 07:34:06 2006
New Revision: 491237
URL: http://svn.apache.org/viewvc?view=rev&rev=491237
Log:
Modify fastfail handlers to use new Hooks. See JAMES-750 and JAMES-549
Modified:
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SPFHandler.java Sat Dec 30 07:34:06 2006
@@ -21,20 +21,21 @@
package org.apache.james.smtpserver.core.filter.fastfail;
-import java.util.ArrayList;
-import java.util.Collection;
-
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.james.jspf.SPF;
import org.apache.james.jspf.SPF1Utils;
import org.apache.james.jspf.SPFResult;
import org.apache.james.jspf.core.DNSService;
-import org.apache.james.smtpserver.CommandHandler;
import org.apache.james.smtpserver.MessageHandler;
import org.apache.james.smtpserver.SMTPResponse;
import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.MailHook;
+import org.apache.james.smtpserver.hook.RcptHook;
import org.apache.james.util.mail.SMTPRetCode;
import org.apache.james.util.mail.dsn.DSNStatus;
import org.apache.mailet.Mail;
@@ -52,7 +53,7 @@
* <checkAuthNetworks>false</checkAuthNetworks>
* </handler>
*/
-public class SPFHandler extends AbstractJunkHandler implements CommandHandler,
+public class SPFHandler extends AbstractLogEnabled implements MailHook, RcptHook,
MessageHandler,Initializable {
public static final String SPF_BLOCKLISTED = "SPF_BLOCKLISTED";
@@ -101,8 +102,6 @@
if (configRelay != null) {
setCheckAuthNetworks(configRelay.getValueAsBoolean(false));
}
-
- super.configure(handlerConfiguration);
}
@@ -157,19 +156,6 @@
this.checkAuthNetworks = checkAuthNetworks;
}
- /**
- * Calls the SPFcheck
- *
- * @see org.apache.james.smtpserver.CommandHandler#onCommand(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String)
- */
- public SMTPResponse onCommand(SMTPSession session, String command, String parameters) {
- if (command.equals("MAIL")) {
- doSPFCheck(session);
- } else if (command.equals("RCPT")) {
- return doProcessing(session);
- }
- return null;
- }
/**
* Calls a SPF check
@@ -177,10 +163,7 @@
* @param session
* SMTP session object
*/
- private void doSPFCheck(SMTPSession session) {
-
- MailAddress sender = (MailAddress) session.getState().get(
- SMTPSession.SENDER);
+ private void doSPFCheck(SMTPSession session, MailAddress sender) {
String heloEhlo = (String) session.getState().get(
SMTPSession.CURRENT_HELO_NAME);
@@ -232,17 +215,6 @@
}
/**
- * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
- */
- public Collection getImplCommands() {
- Collection commands = new ArrayList();
- commands.add("MAIL");
- commands.add("RCPT");
-
- return commands;
- }
-
- /**
* @see org.apache.james.smtpserver.MessageHandler#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
*/
public SMTPResponse onMessage(SMTPSession session, Mail mail) {
@@ -252,58 +224,40 @@
return null;
}
-
/**
- * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#check(org.apache.james.smtpserver.SMTPSession)
+ * @see org.apache.james.smtpserver.hook.RcptHook#doRcpt(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
*/
- protected boolean check(SMTPSession session) {
- MailAddress recipientAddress = (MailAddress) session.getState().get(
- SMTPSession.CURRENT_RECIPIENT);
- String blocklisted = (String) session.getState().get(SPF_BLOCKLISTED);
- String tempBlocklisted = (String) session.getState().get(SPF_TEMPBLOCKLISTED);
-
+ public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
// Check if the recipient is postmaster or abuse..
- if (recipientAddress != null
- && (recipientAddress.getUser().equalsIgnoreCase("postmaster")
- || recipientAddress.getUser().equalsIgnoreCase("abuse") || ((session
+ if (rcpt != null
+ && (rcpt.getUser().equalsIgnoreCase("postmaster")
+ || rcpt.getUser().equalsIgnoreCase("abuse") || ((session
.isAuthRequired() && session.getUser() != null)))) {
- return false;
+ return new HookResult(HookReturnCode.DECLINED);
} else {
// Check if session is blocklisted
- if ((blocklisted != null && blocklisted.equals("true")) || tempBlocklisted != null) {
- return true;
+ if (session.getState().get(SPF_BLOCKLISTED)!= null) {
+ return new HookResult(HookReturnCode.DENY,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " "
+ + session.getState().get(SPF_TEMPBLOCKLISTED));
+ } else if (session.getState().get(SPF_TEMPBLOCKLISTED) != null) {
+ return new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR,DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + " "
+ + "Temporarily rejected: Problem on SPF lookup");
}
}
- return false;
+ return new HookResult(HookReturnCode.DECLINED);
}
-
+
+
/**
- * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkHandlerData(org.apache.james.smtpserver.SMTPSession)
+ * @see org.apache.james.smtpserver.hook.MailHook#doMail(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress)
*/
- public JunkHandlerData getJunkHandlerData(SMTPSession session) {
- String blocklisted = (String) session.getState().get(SPF_BLOCKLISTED);
- String blocklistedDetail = (String) session.getState().get(SPF_DETAIL);
- String tempBlocklisted = (String) session.getState().get(SPF_TEMPBLOCKLISTED);
- JunkHandlerData data = new JunkHandlerData();
-
- // Check if session is blocklisted
- if (blocklisted != null && blocklisted.equals("true")) {
- data.setRejectResponseString(new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " "
- + blocklistedDetail));
- } else if (tempBlocklisted != null
- && tempBlocklisted.equals("true")) {
- data.setRejectResponseString(new SMTPResponse(SMTPRetCode.LOCAL_ERROR,DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + " "
- + "Temporarily rejected: Problem on SPF lookup"));
- }
- data.setJunkScoreLogString("Not match SPF-Record. Add junkScore: " + getScore());
- data.setRejectLogString("Not match SPF-Record. Reject email");
- data.setScoreName("SPFCheck");
- return data;
+ public HookResult doMail(SMTPSession session, MailAddress sender) {
+ doSPFCheck(session,sender);
+ return new HookResult(HookReturnCode.DECLINED);
}
-
/**
* Inner class to provide a wrapper for loggin to avalon
*/
@@ -432,4 +386,5 @@
}
}
+
}
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptHandler.java Sat Dec 30 07:34:06 2006
@@ -36,9 +36,11 @@
import org.apache.avalon.framework.service.Serviceable;
import org.apache.james.services.VirtualUserTable;
import org.apache.james.services.VirtualUserTableStore;
-import org.apache.james.smtpserver.CommandHandler;
import org.apache.james.smtpserver.SMTPResponse;
import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.RcptHook;
import org.apache.james.util.mail.SMTPRetCode;
import org.apache.james.util.mail.dsn.DSNStatus;
import org.apache.james.vut.ErrorMappingException;
@@ -51,7 +53,7 @@
/**
* Handler which reject invalid recipients
*/
-public class ValidRcptHandler extends AbstractLogEnabled implements CommandHandler, Configurable, Serviceable {
+public class ValidRcptHandler extends AbstractLogEnabled implements RcptHook, Configurable, Serviceable {
private Collection recipients = new ArrayList();
private Collection domains = new ArrayList();
@@ -162,76 +164,55 @@
}
/**
- * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
+ * @see org.apache.james.smtpserver.hook.RcptHook#doRcpt(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
*/
- public Collection getImplCommands() {
- Collection c = new ArrayList();
- c.add("RCPT");
-
- return c;
- }
-
- /**
- * @see org.apache.james.smtpserver.CommandHandler#onCommand(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String)
- */
- public SMTPResponse onCommand(SMTPSession session, String command, String parameters) {
- if (!session.isRelayingAllowed() && !(session.isAuthRequired() && session.getUser() != null)) {
- return checkValidRcpt(session);
- } else {
- getLogger().debug("Sender allowed");
- return null;
- }
- }
-
-
-
- /**
- * Check if the recipient should be accepted
- *
- * @param session The SMTPSession
- * @return
- */
- private SMTPResponse checkValidRcpt(SMTPSession session) {
- MailAddress rcpt = (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT);
- boolean invalidUser = true;
+ public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
+
+ if (!session.isRelayingAllowed() && !(session.isAuthRequired() && session.getUser() != null)) {
+ boolean invalidUser = true;
- if (session.getConfigurationData().getUsersRepository().contains(rcpt.getUser()) == true || recipients.contains(rcpt.toString().toLowerCase()) || domains.contains(rcpt.getHost().toLowerCase())) {
- invalidUser = false;
- }
+ if (session.getConfigurationData().getUsersRepository().contains(rcpt.getUser()) == true || recipients.contains(rcpt.toString().toLowerCase()) || domains.contains(rcpt.getHost().toLowerCase())) {
+ invalidUser = false;
+ }
- // check if an valid virtual mapping exists
- if (invalidUser == true && vut == true) {
- try {
- Collection targetString = table.getMappings(rcpt.getUser(), rcpt.getHost());
-
- if (targetString != null && targetString.isEmpty() == false) {
- invalidUser = false;
+ // check if an valid virtual mapping exists
+ if (invalidUser == true && vut == true) {
+ try {
+ Collection targetString = table.getMappings(rcpt.getUser(), rcpt.getHost());
+
+ if (targetString != null && targetString.isEmpty() == false) {
+ invalidUser = false;
+ }
+ } catch (ErrorMappingException e) {
+ String responseString = e.getMessage();
+ getLogger().info("Rejected message. Reject Message: " + responseString);
+ SMTPResponse resp = new SMTPResponse(responseString);
+ return new HookResult(HookReturnCode.DENY,resp.getRetCode(),(String) resp.getLines().get(0));
}
- } catch (ErrorMappingException e) {
- String responseString = e.getMessage();
- getLogger().info("Rejected message. Reject Message: " + responseString);
- return new SMTPResponse(responseString);
}
- }
-
- if (invalidUser == true && !regex.isEmpty()) {
- Iterator reg = regex.iterator();
- Perl5Matcher matcher = new Perl5Matcher();
- while (reg.hasNext()) {
- if (matcher.matches(rcpt.toString(), (Pattern) reg.next())) {
- // regex match
- invalidUser = false;
- break;
+ if (invalidUser == true && !regex.isEmpty()) {
+ Iterator reg = regex.iterator();
+ Perl5Matcher matcher = new Perl5Matcher();
+
+ while (reg.hasNext()) {
+ if (matcher.matches(rcpt.toString(), (Pattern) reg.next())) {
+ // regex match
+ invalidUser = false;
+ break;
+ }
}
}
+
+ if (invalidUser == true) {
+ //user not exist
+ getLogger().info("Rejected message. Unknown user: " + rcpt.toString());
+ return new HookResult(HookReturnCode.DENY,SMTPRetCode.TRANSACTION_FAILED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.toString());
+ }
+ return new HookResult(HookReturnCode.DECLINED);
+ } else {
+ getLogger().debug("Sender allowed");
+ return new HookResult(HookReturnCode.DECLINED);
}
-
- if (invalidUser == true) {
- //user not exist
- getLogger().info("Rejected message. Unknown user: " + rcpt.toString());
- return new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.toString());
- }
- return null;
}
}
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java Sat Dec 30 07:34:06 2006
@@ -27,14 +27,16 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.james.dnsserver.TemporaryResolutionException;
import org.apache.james.services.DNSServer;
-import org.apache.james.smtpserver.CommandHandler;
-import org.apache.james.smtpserver.SMTPResponse;
import org.apache.james.smtpserver.SMTPSession;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.RcptHook;
import org.apache.james.util.NetMatcher;
import org.apache.james.util.mail.SMTPRetCode;
import org.apache.james.util.mail.dsn.DSNStatus;
@@ -44,7 +46,7 @@
* This class can be used to reject email with bogus MX which is send from a authorized user or an authorized
* network.
*/
-public class ValidRcptMX extends AbstractJunkHandler implements CommandHandler,
+public class ValidRcptMX extends AbstractLogEnabled implements RcptHook,
Serviceable {
private DNSServer dnsServer = null;
@@ -81,7 +83,6 @@
"Please configure at least on invalid MX network");
}
- super.configure(arg0);
}
/**
@@ -107,22 +108,6 @@
}
/**
- * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
- */
- public Collection getImplCommands() {
- Collection c = new ArrayList();
- c.add("RCPT");
- return c;
- }
-
- /**
- * @see org.apache.james.smtpserver.CommandHandler#onCommand(org.apache.james.smtpserver.SMTPSession, java.lang.String, java.lang.String)
- */
- public SMTPResponse onCommand(SMTPSession session, String command, String parameters) {
- return doProcessing(session);
- }
-
- /**
* Set the DNSServer
*
* @param dnsServer
@@ -133,55 +118,40 @@
}
/**
- * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#check(org.apache.james.smtpserver.SMTPSession)
+ * @see org.apache.james.smtpserver.hook.RcptHook#doRcpt(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
*/
- protected boolean check(SMTPSession session) {
- MailAddress rcpt = (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT);
+ public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
String domain = rcpt.getHost();
// Email should be deliver local
- if (domain.equals(LOCALHOST)) return false;
+ if (!domain.equals(LOCALHOST)) {
- Iterator mx = null;
- try {
- mx = dnsServer.findMXRecords(domain).iterator();
- } catch (TemporaryResolutionException e1) {
- // TODO: Should we reject temporary ?
- }
+ Iterator mx = null;
+ try {
+ mx = dnsServer.findMXRecords(domain).iterator();
+ } catch (TemporaryResolutionException e1) {
+ return new HookResult(HookReturnCode.DENYSOFT);
+ }
- if (mx != null && mx.hasNext()) {
- while (mx.hasNext()) {
- String mxRec = mx.next().toString();
-
- try {
- String ip = dnsServer.getByName(mxRec).getHostAddress();
-
- // Check for invalid MX
- if (bNetwork.matchInetNetwork(ip)) {
- return true;
+ if (mx != null && mx.hasNext()) {
+ while (mx.hasNext()) {
+ String mxRec = mx.next().toString();
+
+ try {
+ String ip = dnsServer.getByName(mxRec).getHostAddress();
+
+ // Check for invalid MX
+ if (bNetwork.matchInetNetwork(ip)) {
+ return new HookResult(HookReturnCode.DENY,SMTPRetCode.AUTH_REQUIRED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Invalid MX " + session.getRemoteIPAddress()
+ + " for domain " + rcpt.getHost() + ". Reject email");
+ }
+ } catch (UnknownHostException e) {
+ // Ignore this
}
- } catch (UnknownHostException e) {
- // Ignore this
}
}
}
- return false;
- }
-
- /**
- * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkHandlerData(org.apache.james.smtpserver.SMTPSession)
- */
- public JunkHandlerData getJunkHandlerData(SMTPSession session) {
- MailAddress rcpt = (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT);
- JunkHandlerData data = new JunkHandlerData();
-
- data.setRejectResponseString(new SMTPResponse(SMTPRetCode.AUTH_REQUIRED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Invalid MX " + session.getRemoteIPAddress()
- + " for domain " + rcpt.getHost() + ". Reject email"));
-
- data.setJunkScoreLogString("Invalid MX " + session.getRemoteIPAddress() + " for domain " + rcpt.getHost() + ". Add JunkScore: " + getScore());
- data.setRejectLogString("Invalid MX " + session.getRemoteIPAddress() + " for domain " + rcpt.getHost() + ". Reject email");
- data.setScoreName("ValidRcptMXCheck");
- return data;
+ return new HookResult(HookReturnCode.DECLINED);
}
}
Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SPFHandlerTest.java Sat Dec 30 07:34:06 2006
@@ -30,8 +30,6 @@
import org.apache.james.smtpserver.core.filter.fastfail.SPFHandler;
import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.mailet.MockMail;
-import org.apache.james.util.junkscore.JunkScore;
-import org.apache.james.util.junkscore.JunkScoreImpl;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -175,9 +173,9 @@
MailAddress sender = (MailAddress) mockedSMTPSession.getState().get(SMTPSession.SENDER);
MailAddress rcpt = (MailAddress) mockedSMTPSession.getState().get(SMTPSession.CURRENT_RECIPIENT);
- spf.onCommand(mockedSMTPSession, "MAIL", "<"+ sender + ">");
+ spf.doMail(mockedSMTPSession, sender);
- spf.onCommand(mockedSMTPSession,"RCPT","<" + rcpt + ">");
+ spf.doRcpt(mockedSMTPSession, sender, rcpt);
spf.onMessage(mockedSMTPSession, mockMail);
}
@@ -425,32 +423,5 @@
assertNotNull("Header should present", mockedSMTPSession.getState()
.get(SPFHandler.SPF_HEADER));
}
-
- public void testSPFfailAddJunkScore() throws Exception {
- setupMockedSMTPSession("192.168.100.1", "spf2.james.apache.org",
- new MailAddress("test@spf2.james.apache.org"), new MailAddress(
- "test@localhost"));
- mockedSMTPSession.getState().put(JunkScore.JUNK_SCORE, new JunkScoreImpl());
-
- SPFHandler spf = new SPFHandler();
-
- ContainerUtil.enableLogging(spf, new MockLogger());
- spf.setAction("junkScore");
- spf.setScore(20);
- spf.setDNSService(mockedDnsService);
-
- spf.initialize();
-
- runHandlers(spf, mockedSMTPSession);
-
- assertNotNull("reject", mockedSMTPSession.getState().get(
- SPFHandler.SPF_BLOCKLISTED));
- assertNotNull("blocked", mockedSMTPSession.getState().get(
- SPFHandler.SPF_DETAIL));
- assertNull("No tempError", mockedSMTPSession.getState().get(
- SPFHandler.SPF_TEMPBLOCKLISTED));
- assertNotNull("Header should present", mockedSMTPSession.getState()
- .get(SPFHandler.SPF_HEADER));
- assertEquals("Score added",((JunkScore) mockedSMTPSession.getState().get(JunkScore.JUNK_SCORE)).getStoredScore("SPFCheck"), 20.0, 0d);
- }
+
}
Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java Sat Dec 30 07:34:06 2006
@@ -32,6 +32,7 @@
import org.apache.james.services.UsersRepository;
import org.apache.james.services.VirtualUserTable;
import org.apache.james.smtpserver.core.filter.fastfail.ValidRcptHandler;
+import org.apache.james.smtpserver.hook.HookReturnCode;
import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.avalon.MockServiceManager;
import org.apache.james.userrepository.MockUsersRepository;
@@ -75,14 +76,6 @@
return state;
}
-
- public void setStopHandlerProcessing(boolean stop) {
- this.stop = stop;
- }
-
- public boolean getStopHandlerProcessing() {
- return stop;
- }
};
return session;
@@ -174,9 +167,9 @@
SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(INVALID_USER + "@localhost"),false,false,null);
ContainerUtil.enableLogging(handler,new MockLogger());
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
- assertNotNull("Rejected",response);
+ assertEquals("Rejected",rCode,HookReturnCode.DENY);
}
public void testNotRejectInvalidUserAuth() throws Exception {
@@ -185,9 +178,9 @@
SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(INVALID_USER + "@localhost"),false,true,"authedUser");
ContainerUtil.enableLogging(handler,new MockLogger());
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-
- assertNull("Not rejected",response);
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+
+ assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
}
public void testNotRejectInvalidUserRelay() throws Exception {
@@ -196,10 +189,9 @@
SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(INVALID_USER + "@localhost"),true,false,null);
ContainerUtil.enableLogging(handler,new MockLogger());
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-
-
- assertNull("Not rejected",response);
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+
+ assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
}
public void testNotRejectValidUser() throws Exception {
@@ -208,10 +200,9 @@
SMTPSession session = setupMockedSMTPSession(setupMockedSMTPConfiguration(),new MailAddress(VALID_USER + "@localhost"),false,false,null);
ContainerUtil.enableLogging(handler,new MockLogger());
-
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-
- assertNull("Not rejected",response);
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+
+ assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
}
public void testNotRejectValidUserRecipient() throws Exception {
@@ -223,9 +214,9 @@
handler.setValidRecipients(recipient);
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-
- assertNull("Not rejected",response);
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+
+ assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
}
public void testNotRejectValidUserDomain() throws Exception {
@@ -239,9 +230,9 @@
handler.setValidDomains(domain);
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-
- assertNull("Not rejected",response);
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+
+ assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
}
public void testNotRejectValidUserRegex() throws Exception {
@@ -255,9 +246,9 @@
handler.setValidRegex("reci.*");
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-
- assertNull("Not rejected",response);
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+
+ assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
}
public void testInvalidRegex() throws Exception{
@@ -282,9 +273,9 @@
ContainerUtil.service(handler, setUpServiceManager());
ContainerUtil.enableLogging(handler,new MockLogger());
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
-
- assertNull("No reject",response);
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
+
+ assertEquals("Not rejected",rCode,HookReturnCode.DECLINED);
}
public void testHasErrorMapping() throws Exception {
@@ -294,9 +285,9 @@
ContainerUtil.service(handler, setUpServiceManager());
ContainerUtil.enableLogging(handler,new MockLogger());
- SMTPResponse response = handler.onCommand(session,"RCPT","<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT) + ">");
+ int rCode = handler.doRcpt(session, null,(MailAddress)session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
assertNull("Valid Error mapping",session.getState().get("VALID_USER"));
- assertNotNull("Error mapping",response);
+ assertEquals("Error mapping",rCode, HookReturnCode.DENY);
}
}
Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java?view=diff&rev=491237&r1=491236&r2=491237
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java Sat Dec 30 07:34:06 2006
@@ -32,9 +32,8 @@
import org.apache.james.services.AbstractDNSServer;
import org.apache.james.services.DNSServer;
import org.apache.james.smtpserver.core.filter.fastfail.ValidRcptMX;
+import org.apache.james.smtpserver.hook.HookReturnCode;
import org.apache.james.test.mock.avalon.MockLogger;
-import org.apache.james.util.junkscore.JunkScore;
-import org.apache.james.util.junkscore.JunkScoreImpl;
import org.apache.mailet.MailAddress;
import junit.framework.TestCase;
@@ -50,8 +49,7 @@
private SMTPSession setupMockedSMTPSession(final MailAddress rcpt) {
SMTPSession session = new AbstractSMTPSession() {
HashMap state = new HashMap();
- boolean stopProcessing = false;
-
+
public Map getState() {
state.put(SMTPSession.CURRENT_RECIPIENT, rcpt);
return state;
@@ -60,10 +58,6 @@
public String getRemoteIPAddress() {
return "127.0.0.1";
}
-
- public void setStopHandlerProcessing(boolean stopProcessing) {
- this.stopProcessing = stopProcessing;
- }
};
return session;
@@ -107,32 +101,9 @@
handler.setDNSServer(dns);
handler.setBannedNetworks(bNetworks, dns);
- SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT + ">"));
+ int rCode = handler.doRcpt(session, null, (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT)).getResult();
- assertNotNull("Reject", response);
+ assertEquals("Reject", rCode, HookReturnCode.DENY);
}
-
- public void testAddJunkScoreLoopbackMX() throws ParseException {
- Collection bNetworks = new ArrayList();
- bNetworks.add("127.0.0.1");
-
- SMTPSession session = setupMockedSMTPSession(new MailAddress("test@" + INVALID_HOST));
- session.getState().put(JunkScore.JUNK_SCORE, new JunkScoreImpl());
-
- DNSServer dns = setupMockedDNSServer();
- ValidRcptMX handler = new ValidRcptMX();
- handler.setScore(20);
- handler.setAction("junkScore");
-
- ContainerUtil.enableLogging(handler, new MockLogger());
-
- handler.setDNSServer(dns);
- handler.setBannedNetworks(bNetworks, dns);
- SMTPResponse response = handler.onCommand(session, "RCPT", "<" + session.getState().get(SMTPSession.CURRENT_RECIPIENT + ">"));
-
-
- assertNull("Not Reject", response);
- assertEquals("JunkScore added",((JunkScore) session.getState().get(JunkScore.JUNK_SCORE)).getStoredScore("ValidRcptMXCheck"),20.0, 0d);
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org