You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2006/12/14 18:51:09 UTC

svn commit: r487278 - in /james/server/trunk/src: conf/james-config.xml java/org/apache/james/transport/mailets/RemoteDelivery.java

Author: norman
Date: Thu Dec 14 09:51:09 2006
New Revision: 487278

URL: http://svn.apache.org/viewvc?view=rev&rev=487278
Log:
Add config parameter to RemoteDelivery to configure helo. See JAMES-735

Modified:
    james/server/trunk/src/conf/james-config.xml
    james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java

Modified: james/server/trunk/src/conf/james-config.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/conf/james-config.xml?view=diff&rev=487278&r1=487277&r2=487278
==============================================================================
--- james/server/trunk/src/conf/james-config.xml (original)
+++ james/server/trunk/src/conf/james-config.xml Thu Dec 14 09:51:09 2006
@@ -697,6 +697,12 @@
             <gateway> otherserver.mydomain.com </gateway>
             <gatewayPort>25</gatewayPort>
             -->
+            
+            <!-- The name which will be used as HELO. If not set the heloName configured in James block -->
+            <!-- will be used. -->
+            <!--
+            <helloName> myMailServer </helloName> 
+            -->
          </mailet>
 
       </processor>

Modified: james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java?view=diff&rev=487278&r1=487277&r2=487278
==============================================================================
--- james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java (original)
+++ james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java Thu Dec 14 09:51:09 2006
@@ -228,6 +228,8 @@
     // The retry count dnsProblemErrors
     private int dnsProblemRetry = 0;
     
+    private String helloName = null;
+    
     /**
      * Initialize the mailet
      */
@@ -385,6 +387,9 @@
         if (dnsRetry != null && !dnsRetry.equals("")) {
             dnsProblemRetry = Integer.parseInt(dnsRetry); 
         }
+        
+        helloName = getInitParameter("helloName");
+        
     }
     
     /**
@@ -1110,26 +1115,43 @@
      * there are any
      */
     public void run() {
-
-        /* TODO: CHANGE ME!!! The problem is that we need to wait for James to
-         * finish initializing.  We expect the HELLO_NAME to be put into
-         * the MailetContext, but in the current configuration we get
-         * started before the SMTP Server, which establishes the value.
-         * Since there is no contractual guarantee that there will be a
-         * HELLO_NAME value, we can't just wait for it.  As a temporary
-         * measure, I'm inserting this philosophically unsatisfactory
-         * fix.
-         */
-        long stop = System.currentTimeMillis() + 60000;
-        while ((getMailetContext().getAttribute(Constants.HELLO_NAME) == null)
-               && stop > System.currentTimeMillis()) {
-            try {
-                Thread.sleep(1000);
-            } catch (Exception ignored) {} // wait for James to finish initializing
-        }
-
         //Checks the pool and delivers a mail message
         Properties props = new Properties();
+        
+        if (helloName == null) {
+            /* TODO: CHANGE ME!!! The problem is that we need to wait for James to
+             * finish initializing.  We expect the HELLO_NAME to be put into
+             * the MailetContext, but in the current configuration we get
+             * started before the SMTP Server, which establishes the value.
+             * Since there is no contractual guarantee that there will be a
+             * HELLO_NAME value, we can't just wait for it.  As a temporary
+             * measure, I'm inserting this philosophically unsatisfactory
+             * fix.
+             * 
+             * When we drop backward compatibility we can remove the waiting, cause if the heloName is configured
+             * in the james block it will be set in the attributes before the mailets get init
+             */
+            long stop = System.currentTimeMillis() + 60000;
+            while ((getMailetContext().getAttribute(Constants.HELLO_NAME) == null)
+                   && stop > System.currentTimeMillis()) {
+                try {
+                    Thread.sleep(1000);
+                } catch (Exception ignored) {} // wait for James to finish initializing
+            }
+            
+            String defaultDomain = (String) getMailetContext().getAttribute(Constants.HELLO_NAME);
+            if (defaultDomain != null) {
+                props.put("mail.smtp.localhost", defaultDomain);
+            } else {
+                defaultDomain = (String) getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN);
+                if (defaultDomain != null) {
+                    props.put("mail.smtp.localhost", defaultDomain);
+                }
+            }
+        } else {
+            props.put("mail.smtp.localhost", helloName);
+        }
+        
         //Not needed for production environment
         props.put("mail.debug", "false");
         // Reactivated: javamail 1.3.2 should no more have problems with "250 OK"
@@ -1145,17 +1167,6 @@
 
         props.put("mail.smtp.connectiontimeout", connectionTimeout + "");
         props.put("mail.smtp.sendpartial",String.valueOf(sendPartial));
-
-        //Set the hostname we'll use as this server
-        if (getMailetContext().getAttribute(Constants.HELLO_NAME) != null) {
-            props.put("mail.smtp.localhost", getMailetContext().getAttribute(Constants.HELLO_NAME));
-        }
-        else {
-            String defaultDomain = (String) getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN);
-            if (defaultDomain != null) {
-                props.put("mail.smtp.localhost", defaultDomain);
-            }
-        }
 
         if (isBindUsed) {
             // undocumented JavaMail 1.2 feature, smtp transport will use



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


Re: svn commit: r487278 - in /james/server/trunk/src: conf/james-config.xml java/org/apache/james/transport/mailets/RemoteDelivery.java

Posted by Norman Maurer <nm...@byteaction.de>.
I just reviewed. It makes really more sense. I will revert and backport
the other change.

bye
Norman

Stefano Bagnara schrieb:
> -0
>
> In trunk we already have the option to use:
> <mail.smtp.localhost>some.host.name</mail.smtp.localhost>
> inside the RemoteDelivery.
> So this patch simply add another way to do the same thing.
>
> If you think this helloName deserve more attention then imho we should
> better add a comment about the <mail.smtp.localhost> configuration
> option.
>
> Stefano
>
> norman@apache.org wrote:
>> Author: norman
>> Date: Thu Dec 14 09:51:09 2006
>> New Revision: 487278
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=487278
>> Log:
>> Add config parameter to RemoteDelivery to configure helo. See JAMES-735
>>
>> Modified:
>>     james/server/trunk/src/conf/james-config.xml
>>    
>> james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
>>
>>
>> Modified: james/server/trunk/src/conf/james-config.xml
>> URL:
>> http://svn.apache.org/viewvc/james/server/trunk/src/conf/james-config.xml?view=diff&rev=487278&r1=487277&r2=487278
>>
>> ==============================================================================
>>
>> --- james/server/trunk/src/conf/james-config.xml (original)
>> +++ james/server/trunk/src/conf/james-config.xml Thu Dec 14 09:51:09
>> 2006
>> @@ -697,6 +697,12 @@
>>              <gateway> otherserver.mydomain.com </gateway>
>>              <gatewayPort>25</gatewayPort>
>>              -->
>> +            +            <!-- The name which will be used as HELO.
>> If not set the heloName configured in James block -->
>> +            <!-- will be used. -->
>> +            <!--
>> +            <helloName> myMailServer </helloName> +            -->
>>           </mailet>
>>  
>>        </processor>
>>
>> Modified:
>> james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
>>
>> URL:
>> http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java?view=diff&rev=487278&r1=487277&r2=487278
>>
>> ==============================================================================
>>
>> ---
>> james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
>> (original)
>> +++
>> james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
>> Thu Dec 14 09:51:09 2006
>> @@ -228,6 +228,8 @@
>>      // The retry count dnsProblemErrors
>>      private int dnsProblemRetry = 0;
>>      +    private String helloName = null;
>> +         /**
>>       * Initialize the mailet
>>       */
>> @@ -385,6 +387,9 @@
>>          if (dnsRetry != null && !dnsRetry.equals("")) {
>>              dnsProblemRetry = Integer.parseInt(dnsRetry);          }
>> +        +        helloName = getInitParameter("helloName");
>> +             }
>>           /**
>> @@ -1110,26 +1115,43 @@
>>       * there are any
>>       */
>>      public void run() {
>> -
>> -        /* TODO: CHANGE ME!!! The problem is that we need to wait
>> for James to
>> -         * finish initializing.  We expect the HELLO_NAME to be put
>> into
>> -         * the MailetContext, but in the current configuration we get
>> -         * started before the SMTP Server, which establishes the value.
>> -         * Since there is no contractual guarantee that there will be a
>> -         * HELLO_NAME value, we can't just wait for it.  As a temporary
>> -         * measure, I'm inserting this philosophically unsatisfactory
>> -         * fix.
>> -         */
>> -        long stop = System.currentTimeMillis() + 60000;
>> -        while
>> ((getMailetContext().getAttribute(Constants.HELLO_NAME) == null)
>> -               && stop > System.currentTimeMillis()) {
>> -            try {
>> -                Thread.sleep(1000);
>> -            } catch (Exception ignored) {} // wait for James to
>> finish initializing
>> -        }
>> -
>>          //Checks the pool and delivers a mail message
>>          Properties props = new Properties();
>> +        +        if (helloName == null) {
>> +            /* TODO: CHANGE ME!!! The problem is that we need to
>> wait for James to
>> +             * finish initializing.  We expect the HELLO_NAME to be
>> put into
>> +             * the MailetContext, but in the current configuration
>> we get
>> +             * started before the SMTP Server, which establishes the
>> value.
>> +             * Since there is no contractual guarantee that there
>> will be a
>> +             * HELLO_NAME value, we can't just wait for it.  As a
>> temporary
>> +             * measure, I'm inserting this philosophically
>> unsatisfactory
>> +             * fix.
>> +             * +             * When we drop backward compatibility
>> we can remove the waiting, cause if the heloName is configured
>> +             * in the james block it will be set in the attributes
>> before the mailets get init
>> +             */
>> +            long stop = System.currentTimeMillis() + 60000;
>> +            while
>> ((getMailetContext().getAttribute(Constants.HELLO_NAME) == null)
>> +                   && stop > System.currentTimeMillis()) {
>> +                try {
>> +                    Thread.sleep(1000);
>> +                } catch (Exception ignored) {} // wait for James to
>> finish initializing
>> +            }
>> +            +            String defaultDomain = (String)
>> getMailetContext().getAttribute(Constants.HELLO_NAME);
>> +            if (defaultDomain != null) {
>> +                props.put("mail.smtp.localhost", defaultDomain);
>> +            } else {
>> +                defaultDomain = (String)
>> getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN);
>> +                if (defaultDomain != null) {
>> +                    props.put("mail.smtp.localhost", defaultDomain);
>> +                }
>> +            }
>> +        } else {
>> +            props.put("mail.smtp.localhost", helloName);
>> +        }
>> +                 //Not needed for production environment
>>          props.put("mail.debug", "false");
>>          // Reactivated: javamail 1.3.2 should no more have problems
>> with "250 OK"
>> @@ -1145,17 +1167,6 @@
>>  
>>          props.put("mail.smtp.connectiontimeout", connectionTimeout +
>> "");
>>          props.put("mail.smtp.sendpartial",String.valueOf(sendPartial));
>> -
>> -        //Set the hostname we'll use as this server
>> -        if (getMailetContext().getAttribute(Constants.HELLO_NAME) !=
>> null) {
>> -            props.put("mail.smtp.localhost",
>> getMailetContext().getAttribute(Constants.HELLO_NAME));
>> -        }
>> -        else {
>> -            String defaultDomain = (String)
>> getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN);
>> -            if (defaultDomain != null) {
>> -                props.put("mail.smtp.localhost", defaultDomain);
>> -            }
>> -        }
>>  
>>          if (isBindUsed) {
>>              // undocumented JavaMail 1.2 feature, smtp transport
>> will use
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-dev-help@james.apache.org
>>
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>



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


Re: svn commit: r487278 - in /james/server/trunk/src: conf/james-config.xml java/org/apache/james/transport/mailets/RemoteDelivery.java

Posted by Stefano Bagnara <ap...@bago.org>.
-0

In trunk we already have the option to use:
<mail.smtp.localhost>some.host.name</mail.smtp.localhost>
inside the RemoteDelivery.
So this patch simply add another way to do the same thing.

If you think this helloName deserve more attention then imho we should 
better add a comment about the <mail.smtp.localhost> configuration option.

Stefano

norman@apache.org wrote:
> Author: norman
> Date: Thu Dec 14 09:51:09 2006
> New Revision: 487278
> 
> URL: http://svn.apache.org/viewvc?view=rev&rev=487278
> Log:
> Add config parameter to RemoteDelivery to configure helo. See JAMES-735
> 
> Modified:
>     james/server/trunk/src/conf/james-config.xml
>     james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
> 
> Modified: james/server/trunk/src/conf/james-config.xml
> URL: http://svn.apache.org/viewvc/james/server/trunk/src/conf/james-config.xml?view=diff&rev=487278&r1=487277&r2=487278
> ==============================================================================
> --- james/server/trunk/src/conf/james-config.xml (original)
> +++ james/server/trunk/src/conf/james-config.xml Thu Dec 14 09:51:09 2006
> @@ -697,6 +697,12 @@
>              <gateway> otherserver.mydomain.com </gateway>
>              <gatewayPort>25</gatewayPort>
>              -->
> +            
> +            <!-- The name which will be used as HELO. If not set the heloName configured in James block -->
> +            <!-- will be used. -->
> +            <!--
> +            <helloName> myMailServer </helloName> 
> +            -->
>           </mailet>
>  
>        </processor>
> 
> Modified: james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
> URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java?view=diff&rev=487278&r1=487277&r2=487278
> ==============================================================================
> --- james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java (original)
> +++ james/server/trunk/src/java/org/apache/james/transport/mailets/RemoteDelivery.java Thu Dec 14 09:51:09 2006
> @@ -228,6 +228,8 @@
>      // The retry count dnsProblemErrors
>      private int dnsProblemRetry = 0;
>      
> +    private String helloName = null;
> +    
>      /**
>       * Initialize the mailet
>       */
> @@ -385,6 +387,9 @@
>          if (dnsRetry != null && !dnsRetry.equals("")) {
>              dnsProblemRetry = Integer.parseInt(dnsRetry); 
>          }
> +        
> +        helloName = getInitParameter("helloName");
> +        
>      }
>      
>      /**
> @@ -1110,26 +1115,43 @@
>       * there are any
>       */
>      public void run() {
> -
> -        /* TODO: CHANGE ME!!! The problem is that we need to wait for James to
> -         * finish initializing.  We expect the HELLO_NAME to be put into
> -         * the MailetContext, but in the current configuration we get
> -         * started before the SMTP Server, which establishes the value.
> -         * Since there is no contractual guarantee that there will be a
> -         * HELLO_NAME value, we can't just wait for it.  As a temporary
> -         * measure, I'm inserting this philosophically unsatisfactory
> -         * fix.
> -         */
> -        long stop = System.currentTimeMillis() + 60000;
> -        while ((getMailetContext().getAttribute(Constants.HELLO_NAME) == null)
> -               && stop > System.currentTimeMillis()) {
> -            try {
> -                Thread.sleep(1000);
> -            } catch (Exception ignored) {} // wait for James to finish initializing
> -        }
> -
>          //Checks the pool and delivers a mail message
>          Properties props = new Properties();
> +        
> +        if (helloName == null) {
> +            /* TODO: CHANGE ME!!! The problem is that we need to wait for James to
> +             * finish initializing.  We expect the HELLO_NAME to be put into
> +             * the MailetContext, but in the current configuration we get
> +             * started before the SMTP Server, which establishes the value.
> +             * Since there is no contractual guarantee that there will be a
> +             * HELLO_NAME value, we can't just wait for it.  As a temporary
> +             * measure, I'm inserting this philosophically unsatisfactory
> +             * fix.
> +             * 
> +             * When we drop backward compatibility we can remove the waiting, cause if the heloName is configured
> +             * in the james block it will be set in the attributes before the mailets get init
> +             */
> +            long stop = System.currentTimeMillis() + 60000;
> +            while ((getMailetContext().getAttribute(Constants.HELLO_NAME) == null)
> +                   && stop > System.currentTimeMillis()) {
> +                try {
> +                    Thread.sleep(1000);
> +                } catch (Exception ignored) {} // wait for James to finish initializing
> +            }
> +            
> +            String defaultDomain = (String) getMailetContext().getAttribute(Constants.HELLO_NAME);
> +            if (defaultDomain != null) {
> +                props.put("mail.smtp.localhost", defaultDomain);
> +            } else {
> +                defaultDomain = (String) getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN);
> +                if (defaultDomain != null) {
> +                    props.put("mail.smtp.localhost", defaultDomain);
> +                }
> +            }
> +        } else {
> +            props.put("mail.smtp.localhost", helloName);
> +        }
> +        
>          //Not needed for production environment
>          props.put("mail.debug", "false");
>          // Reactivated: javamail 1.3.2 should no more have problems with "250 OK"
> @@ -1145,17 +1167,6 @@
>  
>          props.put("mail.smtp.connectiontimeout", connectionTimeout + "");
>          props.put("mail.smtp.sendpartial",String.valueOf(sendPartial));
> -
> -        //Set the hostname we'll use as this server
> -        if (getMailetContext().getAttribute(Constants.HELLO_NAME) != null) {
> -            props.put("mail.smtp.localhost", getMailetContext().getAttribute(Constants.HELLO_NAME));
> -        }
> -        else {
> -            String defaultDomain = (String) getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN);
> -            if (defaultDomain != null) {
> -                props.put("mail.smtp.localhost", defaultDomain);
> -            }
> -        }
>  
>          if (isBindUsed) {
>              // undocumented JavaMail 1.2 feature, smtp transport will use
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
> 
> 



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