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 ba...@apache.org on 2006/12/30 17:11:27 UTC
svn commit: r491246 - in /james/server/sandbox/handlerapi-experiment/src:
java/org/apache/james/smtpserver/ java/org/apache/james/smtpserver/core/
java/org/apache/james/smtpserver/core/filter/fastfail/
java/org/apache/james/smtpserver/hook/ test/org/ap...
Author: bago
Date: Sat Dec 30 08:11:26 2006
New Revision: 491246
URL: http://svn.apache.org/viewvc?view=rev&rev=491246
Log:
Changed MessageHandler to MessageHook: now all messageHandlers don't use SMTPcodes, but HookResults like other extension points.
Added:
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/MessageHook.java (contents, props changed)
- copied, changed from r490543, james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/MessageHandler.java
Removed:
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/MessageHandler.java
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/DataCmdHandler.java
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SendMailHandler.java
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SetMimeHeaderHandler.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/JunkScoreHandler.java
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/SpamAssassinHandler.java
james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/URIRBLHandler.java
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/JunkScoreHandlerTest.java
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/URIRBLHandlerTest.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=491246&r1=491245&r2=491246
==============================================================================
--- 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 Sat Dec 30 08:11:26 2006
@@ -108,7 +108,7 @@
/**
* @param result
*/
- protected SMTPResponse calcDefaultSMTPResponse(HookResult result) {
+ public static SMTPResponse calcDefaultSMTPResponse(HookResult result) {
if (result != null) {
int rCode = result.getResult();
String smtpRetCode = result.getSmtpRetCode();
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/DataCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/DataCmdHandler.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/DataCmdHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/DataCmdHandler.java Sat Dec 30 08:11:26 2006
@@ -30,12 +30,12 @@
import org.apache.james.smtpserver.CommandHandler;
import org.apache.james.smtpserver.ExtensibleHandler;
import org.apache.james.smtpserver.LineHandler;
-import org.apache.james.smtpserver.MessageHandler;
import org.apache.james.smtpserver.MessageSizeException;
import org.apache.james.smtpserver.SMTPResponse;
import org.apache.james.smtpserver.SMTPSession;
import org.apache.james.smtpserver.SizeLimitedInputStream;
import org.apache.james.smtpserver.WiringException;
+import org.apache.james.smtpserver.hook.MessageHook;
import org.apache.james.util.CharTerminatedInputStream;
import org.apache.james.util.DotStuffingInputStream;
import org.apache.james.util.mail.SMTPRetCode;
@@ -449,7 +449,7 @@
*/
public List getMarkerInterfaces() {
List classes = new ArrayList(1);
- classes.add(MessageHandler.class);
+ classes.add(MessageHook.class);
return classes;
}
@@ -459,7 +459,7 @@
* @see org.apache.james.smtpserver.ExtensibleHandler#wireExtensions(java.lang.Class, java.util.List)
*/
public void wireExtensions(Class interfaceName, List extension) throws WiringException {
- if (MessageHandler.class.equals(interfaceName)) {
+ if (MessageHook.class.equals(interfaceName)) {
this.messageHandlers = extension;
if (messageHandlers.size() == 0) {
if (getLogger().isErrorEnabled()) {
@@ -482,12 +482,11 @@
getLogger().debug("executing message handlers");
int count = messageHandlers.size();
for(int i =0; i < count; i++) {
- SMTPResponse response = ((MessageHandler)messageHandlers.get(i)).onMessage(session, (Mail) mail);
-
- session.writeSMTPResponse(response);
+ SMTPResponse response = AbstractHookableCmdHandler.calcDefaultSMTPResponse(((MessageHook)messageHandlers.get(i)).onMessage(session, (Mail) mail));
//if the response is received, stop processing of command handlers
if(response != null) {
+ session.writeSMTPResponse(response);
break;
}
}
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SendMailHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SendMailHandler.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SendMailHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SendMailHandler.java Sat Dec 30 08:11:26 2006
@@ -26,11 +26,11 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.james.services.MailServer;
-import org.apache.james.smtpserver.MessageHandler;
import org.apache.james.smtpserver.MessageSizeException;
-import org.apache.james.smtpserver.SMTPResponse;
import org.apache.james.smtpserver.SMTPSession;
-import org.apache.james.util.mail.SMTPRetCode;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.MessageHook;
import org.apache.james.util.mail.dsn.DSNStatus;
import org.apache.mailet.Mail;
@@ -44,7 +44,7 @@
*/
public class SendMailHandler
extends AbstractLogEnabled
- implements MessageHandler, Serviceable {
+ implements MessageHook, Serviceable {
private MailServer mailServer;
@@ -59,7 +59,7 @@
* Adds header to the message
* @see org.apache.james.smtpserver#onMessage(SMTPSession)
*/
- public SMTPResponse onMessage(SMTPSession session, Mail mail) {
+ public HookResult onMessage(SMTPSession session, Mail mail) {
getLogger().debug("sending mail");
try {
@@ -108,14 +108,14 @@
.append(session.getConfigurationData().getMaxMessageSize());
getLogger().error(errorBuffer.toString());
- return new SMTPResponse(SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SYSTEM_MSG_TOO_BIG)+" Error processing message.");
+ return new HookResult(HookReturnCode.OK, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SYSTEM_MSG_TOO_BIG)+" Error processing message.");
} else {
getLogger().error("Unknown error occurred while processing DATA.", me);
- return new SMTPResponse(SMTPRetCode.LOCAL_ERROR,DSNStatus.getStatus(DSNStatus.TRANSIENT,DSNStatus.UNDEFINED_STATUS)+" Error processing message.");
+ return new HookResult(HookReturnCode.DENYSOFT,DSNStatus.getStatus(DSNStatus.TRANSIENT,DSNStatus.UNDEFINED_STATUS)+" Error processing message.");
}
}
- return new SMTPResponse(SMTPRetCode.MAIL_OK,DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.CONTENT_OTHER)+" Message received");
+ return new HookResult(HookReturnCode.OK, DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.CONTENT_OTHER)+" Message received");
}
}
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SetMimeHeaderHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SetMimeHeaderHandler.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SetMimeHeaderHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/SetMimeHeaderHandler.java Sat Dec 30 08:11:26 2006
@@ -21,13 +21,13 @@
package org.apache.james.smtpserver.core;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.james.smtpserver.MessageHandler;
-import org.apache.james.smtpserver.SMTPResponse;
+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.MessageHook;
import org.apache.mailet.Mail;
import javax.mail.internet.MimeMessage;
@@ -38,7 +38,7 @@
*/
public class SetMimeHeaderHandler
extends AbstractLogEnabled
- implements MessageHandler, Configurable {
+ implements MessageHook, Configurable {
/**
* The header name and value that needs to be added
@@ -84,9 +84,9 @@
/**
* Adds header to the message
*
- * @see org.apache.james.smtpserver.MessageHandler#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
+ * @see org.apache.james.smtpserver.hook.MessageHook#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
*/
- public SMTPResponse onMessage(SMTPSession session, Mail mail) {
+ public HookResult onMessage(SMTPSession session, Mail mail) {
try {
MimeMessage message = mail.getMessage ();
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=491246&r1=491245&r2=491246
==============================================================================
--- 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 Sat Dec 30 08:11:26 2006
@@ -21,23 +21,19 @@
package org.apache.james.smtpserver.core.filter.fastfail;
+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.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.james.services.DNSServer;
-import org.apache.james.smtpserver.CommandHandler;
import org.apache.james.smtpserver.ConnectHandler;
-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;
import org.apache.james.util.mail.dsn.DSNStatus;
import org.apache.mailet.MailAddress;
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/JunkScoreHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/JunkScoreHandler.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/JunkScoreHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/JunkScoreHandler.java Sat Dec 30 08:11:26 2006
@@ -19,26 +19,26 @@
package org.apache.james.smtpserver.core.filter.fastfail;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
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.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.MessageHook;
import org.apache.james.util.junkscore.ComposedJunkScore;
import org.apache.james.util.junkscore.JunkScore;
import org.apache.james.util.junkscore.JunkScoreImpl;
-import org.apache.james.util.mail.SMTPRetCode;
import org.apache.james.util.mail.dsn.DSNStatus;
import org.apache.mailet.Mail;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import java.util.Iterator;
+import java.util.Map;
+
/**
* Check if a configured JunkScore is reached and perform an action. Valid actions are: reject, compose, header.
*
@@ -46,7 +46,7 @@
* -Compose action stores the junkScore values in the mail attributes
* -Header action create headers which holds the junkScore for each check
*/
-public class JunkScoreHandler extends AbstractLogEnabled implements MessageHandler, Configurable {
+public class JunkScoreHandler extends AbstractLogEnabled implements MessageHook, Configurable {
private double maxScore = 0;
private String action;
@@ -95,9 +95,9 @@
}
/**
- * @see org.apache.james.smtpserver.MessageHandler#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
+ * @see org.apache.james.smtpserver.hook.MessageHook#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
*/
- public SMTPResponse onMessage(SMTPSession session, Mail mail) {
+ public HookResult onMessage(SMTPSession session, Mail mail) {
return checkScore(session, mail);
}
@@ -106,7 +106,7 @@
*
* @param session the SMTPSession
*/
- private SMTPResponse checkScore(SMTPSession session, Mail mail) {
+ private HookResult checkScore(SMTPSession session, Mail mail) {
JunkScore score1 = getLazyJunkScoreHandler(session.getConnectionState(),JunkScore.JUNK_SCORE_SESSION);
JunkScore score2 = getLazyJunkScoreHandler(session.getState(),JunkScore.JUNK_SCORE);
@@ -131,7 +131,7 @@
.append(composed.getCompleteStoredScores());
getLogger().info(buffer.toString());
- return new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED, DSNStatus.getStatus(DSNStatus.PERMANENT,
+ return new HookResult(HookReturnCode.DENY, DSNStatus.getStatus(DSNStatus.PERMANENT,
DSNStatus.SECURITY_OTHER) + " This message reach the spam hits treshold. Please contact the Postmaster if the email is not SPAM. Message rejected");
}
} else if (action.equals(HEADER_ACTION)) {
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=491246&r1=491245&r2=491246
==============================================================================
--- 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 08:11:26 2006
@@ -29,12 +29,11 @@
import org.apache.james.jspf.SPF1Utils;
import org.apache.james.jspf.SPFResult;
import org.apache.james.jspf.core.DNSService;
-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.MessageHook;
import org.apache.james.smtpserver.hook.RcptHook;
import org.apache.james.util.mail.SMTPRetCode;
import org.apache.james.util.mail.dsn.DSNStatus;
@@ -54,7 +53,7 @@
* </handler>
*/
public class SPFHandler extends AbstractLogEnabled implements MailHook, RcptHook,
- MessageHandler,Initializable {
+ MessageHook,Initializable {
public static final String SPF_BLOCKLISTED = "SPF_BLOCKLISTED";
@@ -215,9 +214,9 @@
}
/**
- * @see org.apache.james.smtpserver.MessageHandler#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
+ * @see org.apache.james.smtpserver.hook.MessageHook#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
*/
- public SMTPResponse onMessage(SMTPSession session, Mail mail) {
+ public HookResult onMessage(SMTPSession session, Mail mail) {
// Store the spf header as attribute for later using
mail.setAttribute(SPF_HEADER_MAIL_ATTRIBUTE_NAME, (String) session.getState().get(SPF_HEADER));
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SpamAssassinHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SpamAssassinHandler.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SpamAssassinHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/SpamAssassinHandler.java Sat Dec 30 08:11:26 2006
@@ -20,23 +20,23 @@
package org.apache.james.smtpserver.core.filter.fastfail;
-import java.util.Iterator;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
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.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.MessageHook;
import org.apache.james.util.SpamAssassinInvoker;
-import org.apache.james.util.mail.SMTPRetCode;
import org.apache.james.util.mail.dsn.DSNStatus;
import org.apache.mailet.Mail;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import java.util.Iterator;
+
/**
* This MessageHandler could be used to check message against spamd before
* accept the email. So its possible to reject a message on smtplevel if a
@@ -54,7 +54,7 @@
* <checkAuthNetworks>false</checkAuthNetworks> </handler>
*/
public class SpamAssassinHandler extends AbstractLogEnabled implements
- MessageHandler, Configurable {
+ MessageHook, Configurable {
/**
* The port spamd is listen on
@@ -142,9 +142,9 @@
}
/**
- * @see org.apache.james.smtpserver.MessageHandler#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
+ * @see org.apache.james.smtpserver.hook.MessageHook#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
*/
- public SMTPResponse onMessage(SMTPSession session, Mail mail) {
+ public HookResult onMessage(SMTPSession session, Mail mail) {
// Not scan the message if relaying allowed
if (session.isRelayingAllowed() && !checkAuthNetworks) {
@@ -186,7 +186,7 @@
getLogger().info(buffer.toString());
// Message reject .. abort it!
- return new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,DSNStatus.getStatus(DSNStatus.PERMANENT,
+ return new HookResult(HookReturnCode.DENY,DSNStatus.getStatus(DSNStatus.PERMANENT,
DSNStatus.SECURITY_OTHER) + " This message reach the spam hits treshold. Please contact the Postmaster if the email is not SPAM. Message rejected");
}
} catch (NumberFormatException e) {
Modified: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/URIRBLHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/URIRBLHandler.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/URIRBLHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/core/filter/fastfail/URIRBLHandler.java Sat Dec 30 08:11:26 2006
@@ -22,38 +22,38 @@
package org.apache.james.smtpserver.core.filter.fastfail;
-import java.io.IOException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-import javax.mail.internet.MimePart;
-
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.MessageHandler;
-import org.apache.james.smtpserver.SMTPResponse;
import org.apache.james.smtpserver.SMTPSession;
-import org.apache.james.util.mail.SMTPRetCode;
+import org.apache.james.smtpserver.hook.HookResult;
+import org.apache.james.smtpserver.hook.HookReturnCode;
+import org.apache.james.smtpserver.hook.MessageHook;
import org.apache.james.util.mail.dsn.DSNStatus;
import org.apache.james.util.urirbl.URIScanner;
import org.apache.mailet.Mail;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.internet.MimePart;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+
/**
* Extract domains from message and check against URIRBLServer. For more informations see http://www.surbl.org
*/
-public class URIRBLHandler extends AbstractJunkHandler implements MessageHandler,
+public class URIRBLHandler extends AbstractLogEnabled implements MessageHook,
Serviceable {
private DNSServer dnsServer;
@@ -68,7 +68,6 @@
private final static String URBLSERVER = "URBL_SERVER";
- private final static String TEMP_MAIL = "org.apache.james.smtpserver.core.filter.fastfail.URIRBLHandler.TEMP_MAIL";
/**
* @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
*/
@@ -118,8 +117,6 @@
setCheckAuthNetworks(configRelay.getValueAsBoolean(false));
}
- super.configure(arg0);
-
}
/**
@@ -161,13 +158,38 @@
}
/**
- * @see org.apache.james.smtpserver.MessageHandler#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
+ * @see org.apache.james.smtpserver.hook.MessageHook#onMessage(org.apache.james.smtpserver.SMTPSession, org.apache.mailet.Mail)
*/
- public SMTPResponse onMessage(SMTPSession session, Mail mail) {
- session.getState().put(TEMP_MAIL, mail);
- SMTPResponse res = doProcessing(session);
- session.getState().remove(TEMP_MAIL);
- return res;
+ public HookResult onMessage(SMTPSession session, Mail mail) {
+ if (check(session, mail)) {
+ String uRblServer = (String) session.getState().get(URBLSERVER);
+ String target = (String) session.getState().get(LISTED_DOMAIN);
+ String detail = null;
+
+ // we should try to retrieve details
+ if (getDetail) {
+ Collection txt = dnsServer.findTXTRecords(target+ "." + uRblServer);
+
+ // Check if we found a txt record
+ if (!txt.isEmpty()) {
+ // Set the detail
+ detail = txt.iterator().next().toString();
+
+ }
+ }
+
+ if (detail != null) {
+ return new HookResult(HookReturnCode.DENY, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER)
+ + "Rejected: message contains domain " + target + " listed by " + uRblServer +" . Details: "
+ + detail);
+ } else {
+ return new HookResult(HookReturnCode.DENY, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER)
+ + " Rejected: message contains domain " + target + " listed by " + uRblServer);
+ }
+
+ } else {
+ return null;
+ }
}
/**
@@ -209,9 +231,9 @@
}
/**
- * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#check(org.apache.james.smtpserver.SMTPSession)
+ * Check method
*/
- protected boolean check(SMTPSession session) {
+ protected boolean check(SMTPSession session, Mail mail) {
MimeMessage message;
// Not scan the message if relaying allowed
@@ -220,7 +242,7 @@
}
try {
- message = ((Mail) session.getState().get(TEMP_MAIL)).getMessage();
+ message = mail.getMessage();
HashSet domains = scanMailForDomains(message);
@@ -260,42 +282,42 @@
return false;
}
- /**
- * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkHandlerData(org.apache.james.smtpserver.SMTPSession)
- */
- public JunkHandlerData getJunkHandlerData(SMTPSession session) {
- JunkHandlerData data = new JunkHandlerData();
-
- String uRblServer = (String) session.getState().get(URBLSERVER);
- String target = (String) session.getState().get(LISTED_DOMAIN);
- String detail = null;
-
- // we should try to retrieve details
- if (getDetail) {
- Collection txt = dnsServer.findTXTRecords(target+ "." + uRblServer);
-
- // Check if we found a txt record
- if (!txt.isEmpty()) {
- // Set the detail
- detail = txt.iterator().next().toString();
-
- }
- }
-
- if (detail != null) {
-
- data.setRejectResponseString(new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER)
- + "Rejected: message contains domain " + target + " listed by " + uRblServer +" . Details: "
- + detail));
- } else {
- data.setRejectResponseString(new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER)
- + " Rejected: message contains domain " + target + " listed by " + uRblServer));
- }
-
- data.setJunkScoreLogString("Message sent by " + session.getRemoteIPAddress() + " restricted by " + uRblServer + " because " + target + " is listed. Add junkScore: " + getScore());
- data.setRejectLogString("Rejected: message contains domain " + target + " listed by " + uRblServer);
- data.setScoreName("UriRBLCheck");
- return data;
- }
-
+// /**
+// * @see org.apache.james.smtpserver.core.filter.fastfail.AbstractJunkHandler#getJunkHandlerData(org.apache.james.smtpserver.SMTPSession)
+// */
+// public JunkHandlerData getJunkHandlerData(SMTPSession session) {
+// JunkHandlerData data = new JunkHandlerData();
+//
+// String uRblServer = (String) session.getState().get(URBLSERVER);
+// String target = (String) session.getState().get(LISTED_DOMAIN);
+// String detail = null;
+//
+// // we should try to retrieve details
+// if (getDetail) {
+// Collection txt = dnsServer.findTXTRecords(target+ "." + uRblServer);
+//
+// // Check if we found a txt record
+// if (!txt.isEmpty()) {
+// // Set the detail
+// detail = txt.iterator().next().toString();
+//
+// }
+// }
+//
+// if (detail != null) {
+//
+// data.setRejectResponseString(new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER)
+// + "Rejected: message contains domain " + target + " listed by " + uRblServer +" . Details: "
+// + detail));
+// } else {
+// data.setRejectResponseString(new SMTPResponse(SMTPRetCode.TRANSACTION_FAILED,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER)
+// + " Rejected: message contains domain " + target + " listed by " + uRblServer));
+// }
+//
+// data.setJunkScoreLogString("Message sent by " + session.getRemoteIPAddress() + " restricted by " + uRblServer + " because " + target + " is listed. Add junkScore: " + getScore());
+// data.setRejectLogString("Rejected: message contains domain " + target + " listed by " + uRblServer);
+// data.setScoreName("UriRBLCheck");
+// return data;
+// }
+//
}
Copied: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/MessageHook.java (from r490543, james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/MessageHandler.java)
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/MessageHook.java?view=diff&rev=491246&p1=james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/MessageHandler.java&r1=490543&p2=james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/MessageHook.java&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/MessageHandler.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/MessageHook.java Sat Dec 30 08:11:26 2006
@@ -16,23 +16,21 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
+package org.apache.james.smtpserver.hook;
-
-
-package org.apache.james.smtpserver;
-
+import org.apache.james.smtpserver.SMTPSession;
import org.apache.mailet.Mail;
/**
* Custom message handlers must implement this interface
- * The message handlers will be server-wide common to all the SMTPHandlers,
+ * The message hooks will be server-wide common to all the SMTPHandlers,
* therefore the handlers must store all the state information
* in the SMTPSession object
*/
-public interface MessageHandler {
- /*
+public interface MessageHook {
+ /**
* Handle Message
- **/
- SMTPResponse onMessage(SMTPSession session, Mail mail);
+ */
+ HookResult onMessage(SMTPSession session, Mail mail);
}
Propchange: james/server/sandbox/handlerapi-experiment/src/java/org/apache/james/smtpserver/hook/MessageHook.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/JunkScoreHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/JunkScoreHandlerTest.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/JunkScoreHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/JunkScoreHandlerTest.java Sat Dec 30 08:11:26 2006
@@ -29,6 +29,7 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.james.smtpserver.core.filter.fastfail.JunkScoreHandler;
+import org.apache.james.smtpserver.hook.HookResult;
import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.javaxmail.MockMimeMessage;
import org.apache.james.test.mock.mailet.MockMail;
@@ -107,7 +108,7 @@
assertNull("Not rejected",response);
((JunkScore) session.getState().get(JunkScore.JUNK_SCORE)).setStoredScore(KEY1, SCORE1);
((JunkScore) session.getConnectionState().get(JunkScore.JUNK_SCORE_SESSION)).setStoredScore(KEY2, SCORE2);
- SMTPResponse response = handler.onMessage(session, m);
+ HookResult response = handler.onMessage(session, m);
assertNotNull("Rejected",response);
}
@@ -122,7 +123,7 @@
JunkScoreHandler.getLazyJunkScoreHandler(session.getState(), JunkScore.JUNK_SCORE).setStoredScore(KEY1, SCORE1);
JunkScoreHandler.getLazyJunkScoreHandler(session.getConnectionState(), JunkScore.JUNK_SCORE_SESSION).setStoredScore(KEY2, SCORE2);
Mail m = getMockMail();
- SMTPResponse response = handler.onMessage(session,m);
+ HookResult response = handler.onMessage(session,m);
MimeMessage message = m.getMessage();
assertNotNull("Header added",message.getHeader("X-JUNKSCORE")[0]);
Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SpamAssassinHandlerTest.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SpamAssassinHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/SpamAssassinHandlerTest.java Sat Dec 30 08:11:26 2006
@@ -31,6 +31,7 @@
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.james.smtpserver.core.filter.fastfail.SpamAssassinHandler;
+import org.apache.james.smtpserver.hook.HookResult;
import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.javaxmail.MockMimeMessage;
import org.apache.james.test.mock.mailet.MockMail;
@@ -113,7 +114,7 @@
handler.setSpamdHost(SPAMD_HOST);
handler.setSpamdPort(port);
handler.setSpamdRejectionHits(200.0);
- SMTPResponse response = handler.onMessage(session, mockedMail);
+ HookResult response = handler.onMessage(session, mockedMail);
assertNull("Email was not rejected", response);
assertEquals("email was not spam", mockedMail.getAttribute(
@@ -136,7 +137,7 @@
handler.setSpamdHost(SPAMD_HOST);
handler.setSpamdPort(port);
handler.setSpamdRejectionHits(2000.0);
- SMTPResponse response = handler.onMessage(session, mockedMail);
+ HookResult response = handler.onMessage(session, mockedMail);
assertNull("Email was not rejected", response);
assertEquals("email was spam", mockedMail.getAttribute(
@@ -158,7 +159,7 @@
handler.setSpamdHost(SPAMD_HOST);
handler.setSpamdPort(port);
handler.setSpamdRejectionHits(200.0);
- SMTPResponse response = handler.onMessage(session, mockedMail);
+ HookResult response = handler.onMessage(session, mockedMail);
assertNotNull("Email was rejected", response);
assertEquals("email was spam", mockedMail.getAttribute(
Modified: james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/URIRBLHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/URIRBLHandlerTest.java?view=diff&rev=491246&r1=491245&r2=491246
==============================================================================
--- james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/URIRBLHandlerTest.java (original)
+++ james/server/sandbox/handlerapi-experiment/src/test/org/apache/james/smtpserver/URIRBLHandlerTest.java Sat Dec 30 08:11:26 2006
@@ -42,11 +42,10 @@
import org.apache.james.services.AbstractDNSServer;
import org.apache.james.services.DNSServer;
import org.apache.james.smtpserver.core.filter.fastfail.URIRBLHandler;
+import org.apache.james.smtpserver.hook.HookResult;
import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.javaxmail.MockMimeMessage;
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;
public class URIRBLHandlerTest extends TestCase {
@@ -175,7 +174,7 @@
ContainerUtil.enableLogging(handler, new MockLogger());
handler.setDnsServer(setupMockedDnsServer());
handler.setUriRblServer(servers);
- SMTPResponse response = handler.onMessage(session, mockedMail);
+ HookResult response = handler.onMessage(session, mockedMail);
assertNull("Email was not rejected", response);
}
@@ -192,7 +191,7 @@
ContainerUtil.enableLogging(handler, new MockLogger());
handler.setDnsServer(setupMockedDnsServer());
handler.setUriRblServer(servers);
- SMTPResponse response = handler.onMessage(session, mockedMail);
+ HookResult response = handler.onMessage(session, mockedMail);
assertNotNull("Email was rejected", response);
}
@@ -209,11 +208,12 @@
ContainerUtil.enableLogging(handler, new MockLogger());
handler.setDnsServer(setupMockedDnsServer());
handler.setUriRblServer(servers);
- SMTPResponse response = handler.onMessage(session, mockedMail);
+ HookResult response = handler.onMessage(session, mockedMail);
assertNotNull("Email was rejected", response);
}
-
+
+ /*
public void testAddJunkScore() throws IOException, MessagingException {
ArrayList servers = new ArrayList();
@@ -229,9 +229,10 @@
handler.setUriRblServer(servers);
handler.setAction("junkScore");
handler.setScore(20);
- SMTPResponse response = handler.onMessage(session, mockedMail);
+ HookResult response = handler.onMessage(session, mockedMail);
assertNull("Email was not rejected", response);
assertEquals("JunkScore added", ((JunkScore) session.getState().get(JunkScore.JUNK_SCORE)).getStoredScore("UriRBLCheck"), 20.0, 0d);
}
+ */
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org