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 @@
  * &lt;/handler&gt;
  */
 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 @@
  * &lt;checkAuthNetworks&gt;false&lt;/checkAuthNetworks&gt; &lt;/handler&gt;
  */
 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