You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2006/04/16 19:22:38 UTC

svn commit: r394514 - in /james/server/trunk/src/java/org/apache/james/smtpserver: EhloCmdHandler.java HeloCmdHandler.java MailCmdHandler.java SMTPHandler.java SMTPSession.java

Author: noel
Date: Sun Apr 16 10:22:35 2006
New Revision: 394514

URL: http://svn.apache.org/viewcvs?rev=394514&view=rev
Log:
Fix JAMES-479, so that RSET no longer invalidates HELO/EHLO check.  Also fix line endings in SMTPSession.java

Modified:
    james/server/trunk/src/java/org/apache/james/smtpserver/EhloCmdHandler.java
    james/server/trunk/src/java/org/apache/james/smtpserver/HeloCmdHandler.java
    james/server/trunk/src/java/org/apache/james/smtpserver/MailCmdHandler.java
    james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java
    james/server/trunk/src/java/org/apache/james/smtpserver/SMTPSession.java

Modified: james/server/trunk/src/java/org/apache/james/smtpserver/EhloCmdHandler.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/smtpserver/EhloCmdHandler.java?rev=394514&r1=394513&r2=394514&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/EhloCmdHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/EhloCmdHandler.java Sun Apr 16 10:22:35 2006
@@ -92,6 +92,7 @@
             session.writeResponse(responseString);
         } else if (badEhlo == false){
             session.resetState();
+            session.setHeloEhloSend(true);
             session.getState().put(SMTPSession.CURRENT_HELO_MODE, COMMAND_NAME);
 
             ArrayList esmtpextensions = new ArrayList();

Modified: james/server/trunk/src/java/org/apache/james/smtpserver/HeloCmdHandler.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/smtpserver/HeloCmdHandler.java?rev=394514&r1=394513&r2=394514&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/HeloCmdHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/HeloCmdHandler.java Sun Apr 16 10:22:35 2006
@@ -93,6 +93,7 @@
             getLogger().info(responseString);
         } else if (badHelo == false) {
             session.resetState();
+            session.setHeloEhloSend(true);
             session.getState().put(SMTPSession.CURRENT_HELO_MODE, COMMAND_NAME);
             session.getResponseBuffer().append("250 ")
                           .append(session.getConfigurationData().getHelloName())

Modified: james/server/trunk/src/java/org/apache/james/smtpserver/MailCmdHandler.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/smtpserver/MailCmdHandler.java?rev=394514&r1=394513&r2=394514&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/MailCmdHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/MailCmdHandler.java Sun Apr 16 10:22:35 2006
@@ -105,7 +105,7 @@
         if (session.getState().containsKey(SMTPSession.SENDER)) {
             responseString = "503 "+DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" Sender already specified";
             session.writeResponse(responseString);
-        } else if (!session.getState().containsKey(SMTPSession.CURRENT_HELO_MODE) && session.useHeloEhloEnforcement()) {
+        } else if (!session.isHeloEhloSend() && session.useHeloEhloEnforcement()) {
             responseString = "503 "+DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" Need HELO or EHLO before MAIL";
             session.writeResponse(responseString);
         } else if (argument == null || !argument.toUpperCase(Locale.US).equals("FROM")

Modified: james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java?rev=394514&r1=394513&r2=394514&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java Sun Apr 16 10:22:35 2006
@@ -168,6 +168,11 @@
     private boolean heloEhloEnforcement;
     
     /**
+     * Whether the remote Server has send HELO/EHLO
+     */
+    private boolean heloEhloSend;
+    
+    /**
      * TEMPORARY: is the sending address blocklisted
      */
     private boolean blocklisted;
@@ -709,6 +714,21 @@
     public boolean useHeloEhloEnforcement() {
         return heloEhloEnforcement;
     }
+    
+    /**
+     * @see org.apache.james.smtpserver.SMTPSession#isHeloEhloSend()
+     */
+    public boolean isHeloEhloSend() {
+        return heloEhloSend;
+    }
+    
+    /**
+     * @see org.apache.james.smtpserver.SMTPSession#setHeloEhloSend()
+     */
+    public void setHeloEhloSend(boolean heloEhloSend ) {
+        this.heloEhloSend = heloEhloSend;
+    }
+    
     /**
      * @see org.apache.james.smtpserver.SMTPSession#getUser()
      */

Modified: james/server/trunk/src/java/org/apache/james/smtpserver/SMTPSession.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/smtpserver/SMTPSession.java?rev=394514&r1=394513&r2=394514&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/SMTPSession.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/SMTPSession.java Sun Apr 16 10:22:35 2006
@@ -1,224 +1,236 @@
-/***********************************************************************
- * Copyright (c) 1999-2006 The Apache Software Foundation.             *
- * All rights reserved.                                                *
- * ------------------------------------------------------------------- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you *
- * may not use this file except in compliance with the License. You    *
- * may obtain a copy of the License at:                                *
- *                                                                     *
- *     http://www.apache.org/licenses/LICENSE-2.0                      *
- *                                                                     *
- * Unless required by applicable law or agreed to in writing, software *
- * distributed under the License is distributed on an "AS IS" BASIS,   *
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or     *
- * implied.  See the License for the specific language governing       *
- * permissions and limitations under the License.                      *
- ***********************************************************************/
-
-package org.apache.james.smtpserver;
-
-
-import org.apache.james.util.watchdog.Watchdog;
-import org.apache.mailet.Mail;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-
-/**
- * All the handlers access this interface to communicate with
- * SMTPHandler object
- */
-
-public interface SMTPSession {
-
-    // Keys used to store/lookup data in the internal state hash map
-    public final static String MESG_FAILED = "MESG_FAILED";   // Message failed flag
-    public final static String SENDER = "SENDER_ADDRESS";     // Sender's email address
-    public final static String RCPT_LIST = "RCPT_LIST";   // The message recipients
-    public final static String CURRENT_HELO_MODE = "CURRENT_HELO_MODE"; // HELO or EHLO
-
-    /**
-     * Writes response string to the client
-     *
-     * @param respString String that needs to send to the client
-     */
-    void writeResponse(String respString);
-
-    /**
-     * Reads a line of characters off the command line.
-     *
-     * @return the trimmed input line
-     * @throws IOException if an exception is generated reading in the input characters
-     */
-    String readCommandLine() throws IOException;
-
-
-    /**
-     * Returns ResponseBuffer, this optimizes the unecessary creation of resources
-     * by each handler object
-     *
-     * @return responseBuffer
-     */
-    StringBuffer getResponseBuffer();
-
-    /**
-     * Clears the response buffer, returning the String of characters in the buffer.
-     *
-     * @return the data in the response buffer
-     */
-    String clearResponseBuffer();
-
-    /**
-     * Returns Inputstream for handling messages and commands
-     *
-     * @return InputStream object
-     */
-    InputStream getInputStream();
-
-    /**
-     * Returns currently process command name
-     *
-     * @return current command name
-     */
-    String getCommandName();
-
-    /**
-     * Returns currently process command argument
-     *
-     * @return current command argument
-     */
-    String getCommandArgument();
-
-    /**
-     * Returns Mail object for message handlers to process
-     *
-     * @return Mail object
-     */
-    Mail getMail();
-
-    /**
-     * Sets the MailImpl object for further processing
-     *
-     * @param mail MailImpl object
-     */
-    void setMail(Mail mail);
-
-    /**
-     * Returns host name of the client
-     *
-     * @return hostname of the client
-     */
-    String getRemoteHost();
-
-    /**
-     * Returns host ip address of the client
-     *
-     * @return host ip address of the client
-     */
-    String getRemoteIPAddress();
-
-    /**
-     * this makes the message to be dropped inprotocol
-     *
-     */
-    void abortMessage();
-
-    /**
-     * this makes the session to close
-     *
-     */
-    void endSession();
-
-    /**
-     * Returns the session status
-     *
-     * @return if the session is open or closed
-     */
-    boolean isSessionEnded();
-
-    /**
-     * Returns Map that consists of the state of the SMTPSession
-     *
-     * @return map of the current SMTPSession state
-     */
-    HashMap getState();
-
-    /**
-     * Resets message-specific, but not authenticated user, state.
-     *
-     */
-    void resetState();
-
-    /**
-     * Returns SMTPHandler service wide configuration
-     *
-     * @return SMTPHandlerConfigurationData
-     */
-    SMTPHandlerConfigurationData getConfigurationData();
-
-    /**
-     * Sets the blocklisted value
-     *
-     * @param blocklisted
-     */
-    void setBlockListed(boolean blocklisted);
-
-    /**
-     * Returns the blocklisted status
-     *
-     * @return blocklisted
-     */
-    boolean isBlockListed();
-
-    /**
-     * Returns whether Relaying is allowed or not
-     *
-     * @return the relaying status
-     */
-    boolean isRelayingAllowed();
-
-    /**
-     * Returns whether Authentication is required or not
-     *
-     * @return authentication required or not
-     */
-    boolean isAuthRequired();
-    
-    /**
-     * Returns whether remote server needs to send HELO/EHLO
-     *
-     * @return HELO/EHLO required or not
-     */
-    boolean useHeloEhloEnforcement();
-
-    /**
-     * Returns the user name associated with this SMTP interaction.
-     *
-     * @return the user name
-     */
-    String getUser();
-
-    /**
-     * Sets the user name associated with this SMTP interaction.
-     *
-     * @param userID the user name
-     */
-    void setUser(String user);
-
-    /**
-     * Returns Watchdog object used for handling timeout
-     *
-     * @return Watchdog object
-     */
-    Watchdog getWatchdog();
-
-    /**
-     * Returns the SMTP session id
-     *
-     * @return SMTP session id
-     */
-    String getSessionID();
-
-}
-
+/***********************************************************************
+ * Copyright (c) 1999-2006 The Apache Software Foundation.             *
+ * All rights reserved.                                                *
+ * ------------------------------------------------------------------- *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you *
+ * may not use this file except in compliance with the License. You    *
+ * may obtain a copy of the License at:                                *
+ *                                                                     *
+ *     http://www.apache.org/licenses/LICENSE-2.0                      *
+ *                                                                     *
+ * Unless required by applicable law or agreed to in writing, software *
+ * distributed under the License is distributed on an "AS IS" BASIS,   *
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or     *
+ * implied.  See the License for the specific language governing       *
+ * permissions and limitations under the License.                      *
+ ***********************************************************************/
+
+package org.apache.james.smtpserver;
+
+
+import org.apache.james.util.watchdog.Watchdog;
+import org.apache.mailet.Mail;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+
+/**
+ * All the handlers access this interface to communicate with
+ * SMTPHandler object
+ */
+
+public interface SMTPSession {
+
+    // Keys used to store/lookup data in the internal state hash map
+    public final static String MESG_FAILED = "MESG_FAILED";   // Message failed flag
+    public final static String SENDER = "SENDER_ADDRESS";     // Sender's email address
+    public final static String RCPT_LIST = "RCPT_LIST";   // The message recipients
+    public final static String CURRENT_HELO_MODE = "CURRENT_HELO_MODE"; // HELO or EHLO
+
+    /**
+     * Writes response string to the client
+     *
+     * @param respString String that needs to send to the client
+     */
+    void writeResponse(String respString);
+
+    /**
+     * Reads a line of characters off the command line.
+     *
+     * @return the trimmed input line
+     * @throws IOException if an exception is generated reading in the input characters
+     */
+    String readCommandLine() throws IOException;
+
+
+    /**
+     * Returns ResponseBuffer, this optimizes the unecessary creation of resources
+     * by each handler object
+     *
+     * @return responseBuffer
+     */
+    StringBuffer getResponseBuffer();
+
+    /**
+     * Clears the response buffer, returning the String of characters in the buffer.
+     *
+     * @return the data in the response buffer
+     */
+    String clearResponseBuffer();
+
+    /**
+     * Returns Inputstream for handling messages and commands
+     *
+     * @return InputStream object
+     */
+    InputStream getInputStream();
+
+    /**
+     * Returns currently process command name
+     *
+     * @return current command name
+     */
+    String getCommandName();
+
+    /**
+     * Returns currently process command argument
+     *
+     * @return current command argument
+     */
+    String getCommandArgument();
+
+    /**
+     * Returns Mail object for message handlers to process
+     *
+     * @return Mail object
+     */
+    Mail getMail();
+
+    /**
+     * Sets the MailImpl object for further processing
+     *
+     * @param mail MailImpl object
+     */
+    void setMail(Mail mail);
+
+    /**
+     * Returns host name of the client
+     *
+     * @return hostname of the client
+     */
+    String getRemoteHost();
+
+    /**
+     * Returns host ip address of the client
+     *
+     * @return host ip address of the client
+     */
+    String getRemoteIPAddress();
+
+    /**
+     * this makes the message to be dropped inprotocol
+     *
+     */
+    void abortMessage();
+
+    /**
+     * this makes the session to close
+     *
+     */
+    void endSession();
+
+    /**
+     * Returns the session status
+     *
+     * @return if the session is open or closed
+     */
+    boolean isSessionEnded();
+
+    /**
+     * Returns Map that consists of the state of the SMTPSession
+     *
+     * @return map of the current SMTPSession state
+     */
+    HashMap getState();
+
+    /**
+     * Resets message-specific, but not authenticated user, state.
+     *
+     */
+    void resetState();
+
+    /**
+     * Returns SMTPHandler service wide configuration
+     *
+     * @return SMTPHandlerConfigurationData
+     */
+    SMTPHandlerConfigurationData getConfigurationData();
+
+    /**
+     * Sets the blocklisted value
+     *
+     * @param blocklisted
+     */
+    void setBlockListed(boolean blocklisted);
+
+    /**
+     * Returns the blocklisted status
+     *
+     * @return blocklisted
+     */
+    boolean isBlockListed();
+
+    /**
+     * Returns whether Relaying is allowed or not
+     *
+     * @return the relaying status
+     */
+    boolean isRelayingAllowed();
+
+    /**
+     * Returns whether Authentication is required or not
+     *
+     * @return authentication required or not
+     */
+    boolean isAuthRequired();
+    
+    /**
+     * Returns whether remote server needs to send HELO/EHLO
+     *
+     * @return HELO/EHLO required or not
+     */
+    boolean useHeloEhloEnforcement();
+
+    /**
+     * Identify if a HELO/EHLO was send in this session
+     * 
+     * @return HELO/EHLO was send
+     */
+    boolean isHeloEhloSend();
+    
+    /**
+     * Get called if HELO/EHLO was send
+     */
+    void setHeloEhloSend(boolean heloEhloSend);
+    
+    /**
+     * Returns the user name associated with this SMTP interaction.
+     *
+     * @return the user name
+     */
+    String getUser();
+
+    /**
+     * Sets the user name associated with this SMTP interaction.
+     *
+     * @param userID the user name
+     */
+    void setUser(String user);
+
+    /**
+     * Returns Watchdog object used for handling timeout
+     *
+     * @return Watchdog object
+     */
+    Watchdog getWatchdog();
+
+    /**
+     * Returns the SMTP session id
+     *
+     * @return SMTP session id
+     */
+    String getSessionID();
+
+}
+



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


Re: svn commit: r394514 - in /james/server/trunk/src/java/org/apache/james/smtpserver: EhloCmdHandler.java HeloCmdHandler.java MailCmdHandler.java SMTPHandler.java SMTPSession.java

Posted by Stefano Bagnara <ap...@bago.org>.
I reverted this patch and changed RSET adding a get/set of the 
CURRENT_HELO_MODE around the session.reset as we also do in SMTPHandler 
after a message has been received.

Less code changed and a common way to solve the same problem in multiple 
classes seems a better solution to me.

Stefano

noel@apache.org wrote:
> Author: noel
> Date: Sun Apr 16 10:22:35 2006
> New Revision: 394514
> 
> URL: http://svn.apache.org/viewcvs?rev=394514&view=rev
> Log:
> Fix JAMES-479, so that RSET no longer invalidates HELO/EHLO check.  Also fix line endings in SMTPSession.java
> 
> Modified:
>     james/server/trunk/src/java/org/apache/james/smtpserver/EhloCmdHandler.java
>     james/server/trunk/src/java/org/apache/james/smtpserver/HeloCmdHandler.java
>     james/server/trunk/src/java/org/apache/james/smtpserver/MailCmdHandler.java
>     james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java
>     james/server/trunk/src/java/org/apache/james/smtpserver/SMTPSession.java


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


Re: svn commit: r394514 - in /james/server/trunk/src/java/org/apache/james/smtpserver: EhloCmdHandler.java HeloCmdHandler.java MailCmdHandler.java SMTPHandler.java SMTPSession.java

Posted by Stefano Bagnara <ap...@bago.org>.
Norman Maurer wrote:
> Not notice that solution :-(
> Thx...

Don't worry, we're here to review ;-)
Thank you, anyway, for your fast patch to the bug!

Stefano


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


Re: svn commit: r394514 - in /james/server/trunk/src/java/org/apache/james/smtpserver: EhloCmdHandler.java HeloCmdHandler.java MailCmdHandler.java SMTPHandler.java SMTPSession.java

Posted by Norman Maurer <nm...@byteaction.de>.
Am Montag, den 17.04.2006, 16:25 +0200 schrieb Stefano Bagnara:
> Norman Maurer wrote:
> > Not notice that solution :-(
> > Thx...
> 
> Don't worry, we're here to review ;-)
> Thank you, anyway, for your fast patch to the bug!

Im glad to help. James is a great project. Im happy to contribute and
fix bugs.

bye



Re: svn commit: r394514 - in /james/server/trunk/src/java/org/apache/james/smtpserver: EhloCmdHandler.java HeloCmdHandler.java MailCmdHandler.java SMTPHandler.java SMTPSession.java

Posted by Norman Maurer <nm...@byteaction.de>.
Not notice that solution :-(
Thx...

bye
Norman 

Am Montag, den 17.04.2006, 03:15 +0200 schrieb Stefano Bagnara:
> I reverted this patch and changed RSET adding a get/set of the 
> CURRENT_HELO_MODE around the session.reset as we also do in SMTPHandler 
> after a message has been received.
> 
> Less code changed and a common way to solve the same problem in multiple 
> classes seems a better solution to me.
> 
> Stefano
> 
> noel@apache.org wrote:
> > Author: noel
> > Date: Sun Apr 16 10:22:35 2006
> > New Revision: 394514
> > 
> > URL: http://svn.apache.org/viewcvs?rev=394514&view=rev
> > Log:
> > Fix JAMES-479, so that RSET no longer invalidates HELO/EHLO check.  Also fix line endings in SMTPSession.java
> > 
> > Modified:
> >     james/server/trunk/src/java/org/apache/james/smtpserver/EhloCmdHandler.java
> >     james/server/trunk/src/java/org/apache/james/smtpserver/HeloCmdHandler.java
> >     james/server/trunk/src/java/org/apache/james/smtpserver/MailCmdHandler.java
> >     james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java
> >     james/server/trunk/src/java/org/apache/james/smtpserver/SMTPSession.java
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
> 
> !EXCUBATOR:1,4442eccc37026128182523!