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 2011/12/24 22:17:28 UTC

svn commit: r1223019 [2/2] - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/ pop3/src/main/java/org/apache/james/protocols/pop3/ pop3/src/main/java/org/apache/james/protocols/pop3/core/ smtp/src/main/java/org/apache/james/p...

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java Sat Dec 24 21:17:27 2011
@@ -44,6 +44,10 @@ public class StartTlsCmdHandler implemen
     private final static Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_NAME));
     private final static List<String> FEATURES = Collections.unmodifiableList(Arrays.asList(COMMAND_NAME));
 
+    private static final Response TLS_ALREADY_ACTIVE = new SMTPResponse("500", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) + " TLS already active RFC2487 5.2").immutable();
+    private static final Response READY_FOR_STARTTLS = new SMTPStartTLSResponse("220", DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.UNDEFINED_STATUS) + " Ready to start TLS").immutable();
+    private static final Response SYNTAX_ERROR = new SMTPResponse("501 " + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (no parameters allowed) with STARTTLS command").immutable();
+    private static final Response NOT_SUPPORTED = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) +" Command " + COMMAND_NAME +" unrecognized.").immutable();
     /**
      * @see org.apache.james.protocols.api.handler.CommandHandler#getImplCommands()
      */
@@ -57,28 +61,20 @@ public class StartTlsCmdHandler implemen
      * 
      */
     public Response onCommand(SMTPSession session, Request request) {
-        String command = request.getCommand();
-        String parameters = request.getArgument();
         if (session.isStartTLSSupported()) {
             if (session.isTLSStarted()) {
-                SMTPResponse response = new SMTPResponse("500", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) + " TLS already active RFC2487 5.2");
-                return response;
+                return TLS_ALREADY_ACTIVE;
             } else {
-                SMTPResponse response;
+                String parameters = request.getArgument();
                 if ((parameters == null) || (parameters.length() == 0)) {
-                    response = new SMTPStartTLSResponse("220", DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.UNDEFINED_STATUS) + " Ready to start TLS");
+                    return READY_FOR_STARTTLS;
                 } else {
-                    response = new SMTPResponse("501 " + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (no parameters allowed) with STARTTLS command");
-                }
-                return response;
-                
+                    return SYNTAX_ERROR;
+                } 
             }
 
         } else {
-            StringBuilder result = new StringBuilder();
-            result.append(DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD)).append(" Command ").append(command).append(" unrecognized.");
-            SMTPResponse response = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, result);
-            return response;
+            return NOT_SUPPORTED;
         }
     }
 

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java Sat Dec 24 21:17:27 2011
@@ -47,7 +47,10 @@ public abstract class AbstractGreylistHa
     private long unseenLifeTime = 14400000;
 
 
-    
+    private static final HookResult TO_FAST = new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) 
+            + " Temporary rejected: Reconnect to fast. Please try again later");
+    private static final HookResult TEMPORARY_REJECT = new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) 
+            + " Temporary rejected: Please try again later");
     public void setUnseenLifeTime(long unseenLifeTime) {
         this.unseenLifeTime = unseenLifeTime;
     }
@@ -91,8 +94,7 @@ public abstract class AbstractGreylistHa
                 long acceptTime = createTimeStamp + tempBlockTime;
         
                 if ((time < acceptTime) && (count == 0)) {
-                    return new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) 
-                        + " Temporary rejected: Reconnect to fast. Please try again later");
+                    return TO_FAST;
                 } else {
                     
                     session.getLogger().debug("Update triplet " + ipAddress + " | " + sender + " | " + recip + " -> timestamp: " + time);
@@ -108,8 +110,7 @@ public abstract class AbstractGreylistHa
                 insertTriplet(ipAddress, sender, recip, count, time);
       
                 // Tempory block on new triplet!
-                return new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) 
-                    + " Temporary rejected: Please try again later");
+                return TEMPORARY_REJECT;
             }
 
             // some kind of random cleanup process
@@ -126,7 +127,7 @@ public abstract class AbstractGreylistHa
             // just log the exception
             session.getLogger().error("Error on greylist method: " + e.getMessage());
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return HookResult.declined();
     }
 
     /**
@@ -210,6 +211,6 @@ public abstract class AbstractGreylistHa
         } else {
             session.getLogger().info("IpAddress " + session.getRemoteAddress().getAddress().getHostAddress() + " is allowed to send. Skip greylisting.");
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return HookResult.declined();
     }
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java Sat Dec 24 21:17:27 2011
@@ -67,7 +67,7 @@ public abstract class AbstractValidRcptH
             session.getLogger().info("Rejected message. Unknown user: " + rcpt.toString());
             return new HookResult(HookReturnCode.DENY,SMTPRetCode.MAILBOX_PERM_UNAVAILABLE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.toString());
         } else {
-            return new HookResult(HookReturnCode.DECLINED);
+            return HookResult.declined();
         }
     }
     

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java Sat Dec 24 21:17:27 2011
@@ -204,6 +204,6 @@ public class DNSRBLHandler implements  R
                
             }
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return HookResult.declined();
     }
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java Sat Dec 24 21:17:27 2011
@@ -32,6 +32,8 @@ import org.apache.james.protocols.smtp.h
 
 public class MaxRcptHandler implements RcptHook {
 
+    private static final HookResult MAX_RCPT = new HookResult(HookReturnCode.DENY, SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC)
+            + " Requested action not taken: max recipients reached");
     private int maxRcpt = 0;
 
 
@@ -52,10 +54,9 @@ public class MaxRcptHandler implements R
         if ((session.getRcptCount() + 1) > maxRcpt) {
             session.getLogger().info("Maximum recipients of " + maxRcpt + " reached");
             
-            return new HookResult(HookReturnCode.DENY, SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC)
-                    + " Requested action not taken: max recipients reached");
+            return MAX_RCPT;
         } else {
-            return new HookResult(HookReturnCode.DECLINED);
+            return HookResult.declined();
         }
     }
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java Sat Dec 24 21:17:27 2011
@@ -59,7 +59,7 @@ public class MaxUnknownCmdHandler implem
 
         } else {
             
-            return new HookResult(HookReturnCode.DECLINED);
+            return HookResult.declined();
         }
     }
 

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java Sat Dec 24 21:17:27 2011
@@ -84,7 +84,7 @@ public class ResolvableEhloHeloHandler i
         // try to resolv the provided helo. If it can not resolved do not
         // accept it.
         try {
-        	dnsService.getByName(argument);
+            dnsService.getByName(argument);
         } catch (UnknownHostException e) {
             return true;
         }
@@ -109,7 +109,7 @@ public class ResolvableEhloHeloHandler i
             return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG)
                     + " Provided EHLO/HELO " + session.getAttachment(SMTPSession.CURRENT_HELO_NAME, State.Transaction) + " can not resolved.");
         } else {
-            return new HookResult(HookReturnCode.DECLINED);
+            return HookResult.declined();
         }
     }
 
@@ -118,7 +118,7 @@ public class ResolvableEhloHeloHandler i
      */
     public HookResult doHelo(SMTPSession session, String helo) {
         checkEhloHelo(session, helo);
-        return new HookResult(HookReturnCode.DECLINED);
+        return HookResult.declined();
     }
 
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java Sat Dec 24 21:17:27 2011
@@ -30,6 +30,7 @@ public class ReverseEqualsEhloHeloHandle
     /**
      * @see org.apache.james.protocols.smtp.core.fastfail.ResolvableEhloHeloHandler#isBadHelo(org.apache.james.protocols.smtp.SMTPSession, java.lang.String)
      */
+    @Override
     protected boolean isBadHelo(SMTPSession session, String argument) {
         try {
             // get reverse entry

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java Sat Dec 24 21:17:27 2011
@@ -28,7 +28,6 @@ import java.util.Map;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookResult;
-import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.hook.RcptHook;
 
 /**
@@ -60,17 +59,17 @@ public class SpamTrapHandler implements 
     public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
         String address = session.getRemoteAddress().getAddress().getHostAddress();
         if (isBlocked(address, session)) {
-            return new HookResult(HookReturnCode.DENY);
+            return HookResult.deny();
         } else {
          
             if (spamTrapRecips.contains(rcpt.toString().toLowerCase())){
         
                 addIp(address, session);
             
-                return new HookResult(HookReturnCode.DENY);
+                return HookResult.deny();
             }
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return HookResult.declined();
     }
     
     

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java Sat Dec 24 21:17:27 2011
@@ -57,6 +57,6 @@ public class SupressDuplicateRcptHandler
             session.getLogger().debug("Duplicate recipient not add to recipient list: " + rcpt.toString());
             return new HookResult(HookReturnCode.OK,SMTPRetCode.MAIL_OK, responseBuffer.toString());
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return HookResult.declined();
     }
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java Sat Dec 24 21:17:27 2011
@@ -77,7 +77,7 @@ public class ValidSenderDomainHandler im
         if (check(session,sender)) {
             return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_SYNTAX_SENDER)+ " sender " + sender + " contains a domain with no valid MX records");
         } else {
-            return new HookResult(HookReturnCode.DECLINED);
+            return HookResult.declined();
         }
     }
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java?rev=1223019&r1=1223018&r2=1223019&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java Sat Dec 24 21:17:27 2011
@@ -25,6 +25,12 @@ package org.apache.james.protocols.smtp.
  */
 public final class HookResult {
 
+    private static final HookResult DECLINED = new HookResult(HookReturnCode.DECLINED);
+    private static final HookResult OK = new HookResult(HookReturnCode.OK);
+    private static final HookResult DENY = new HookResult(HookReturnCode.DENY);
+    private static final HookResult DENYSOFT = new HookResult(HookReturnCode.DENYSOFT);
+    private static final HookResult DISCONNECT = new HookResult(HookReturnCode.DISCONNECT);
+
     private int result;
     private String smtpRetCode;
     private String smtpDescription;
@@ -106,4 +112,24 @@ public final class HookResult {
     public String getSmtpDescription() {
         return smtpDescription;
     }
+    
+    public static HookResult declined() {
+        return DECLINED;
+    }
+    
+    public static HookResult ok() {
+        return OK;
+    }
+    
+    public static HookResult deny() {
+        return DENY;
+    }
+    
+    public static HookResult denysoft() {
+        return DENYSOFT;
+    }
+    
+    public static HookResult disconnect() {
+        return DISCONNECT;
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org