You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-user@james.apache.org by Jerry Malcolm <te...@malcolms.com> on 2014/10/27 06:44:04 UTC

James 3 b4 HELO Override Not Working?

I have been running James 3 b4 for several months.  I was having some 
outbound mail rejected by gmail and started doing some research.  I did 
an email test using mail-tester.com and got the error message that my 
HELO did not match the rDNS.  It reports:

IP: 64.34.163.186
HELO: p2825577
rDNS: mail.jwmhosting.com

The p2825577 number is my Windows Server 2008 machine name.  I don't 
want to use that.

In the RemoteDelivery mailet config, I have the following:

<mail.smtp.localhost>mail.jwmhosting.com</mail.smtp.localhost>

If I'm reading the instructions correctly, this should cause the 
specified value (mail.jwmhosting.com) to be sent on the HELO instead of 
the p282... number, correct?  But it isn't.

What am I doing wrong?

BTW...  I tried changing my rDNS to the p282... number.  rDNS's have to 
be a fully qualified domain name.  So it won't take it.  Fine... I then 
tried changing my Win Server 08 machine name to be mail.jwmhosting.com.  
No go on that either.  Can't have periods in Win machines names.... So 
I'm stuck.  Please advise....

This is kinda urgent since I now realize that there's a distinct 
possibility that some of my clients' emails are not getting through due 
to this.  So thanks in advance for a quick reply to this.

Jerry


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


Re: James 3 b4 HELO Override Not Working?

Posted by Jerry Malcolm <te...@malcolms.com>.
More progress... But now I'm really stumped.  I dug into the 
remoteDelivery mailet source.  I did confirm that James is NOT using the 
smtpserver.xml 'hello' value at all for outbound HELO.  It is definitely 
using the config parms for the remoteDelivery mailet.

In the mailet, the outbound HELO value is set by javax.mail.Transport 
based on the 'mail.smtp.localhost' property passed in via the Properties 
object.  According to the Transport javadoc, it says it'll use the 
property value for HELO if it's set, and if it's not set, it'll use 
InetAddress.getLocalHost().getHostName().  Fine.  So I cloned the mailet 
so I could add log statements and do some debug.   I add two log 
statements right above the 'transport.sendMessage()' call in the 
RemoteDelivery mailet:

      log( "JWMRemoteDelivery.deliver() mail.smtp.localhost - " + 
props.getProperty( "mail.smtp.localhost" ));

      log( "JWMRemoteDelivery.deliver() 
InetAddress.getLocalHost().getHostName() - " + 
InetAddress.getLocalHost().getHostName() );

       transport.sendMessage(message, addr);

In the log, I get....

INFO  09:52:19,480 | james.mailetcontext | JWMRemoteDelivery.deliver() 
mail.smtp.localhost - mail.jwmhosting.com

INFO  09:52:19,480 | james.mailetcontext | JWMRemoteDelivery.deliver() 
InetAddress.getLocalHost().getHostName() - p2825577

This is precisely what I expected to get.  BUT.... when the mail is 
sent, the p282.... is sent in the HELO.

It appears that javax.mail.Transport is ignoring the property (or not 
recognizing that it is set).  But I'm pretty certain that a bug that is 
that blatant would not be hanging around unreported in a base java class 
like Transport.  But, then again, that's what I appear to be seeing.

Where am I going wrong?

Secondarily, anybody know how I can change what java reports back on the 
InetAddress call other than changing the machine name?  Is there a JVM 
parameter I can pass in?  If I can force that, problem solved for me 
(although it's still not working correctly).

Thanks again.

Jerry



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


Re: James 3 b4 HELO Override Not Working?

Posted by Jerry Malcolm <te...@malcolms.com>.
Robert,

Thank you so much for the quick reply.  I will probably start the 
process of moving up to the latest beta soon.  But i know it's not a 
trivial process, and I don't want to risk destabilizing the environment 
at this point.  Just need to get this HELO thing fixed quickly and keep 
the clients happy at least for another day....

I see where I left of 'mail.' in the helloName in the smtpserver.xml.  
But that appears to only be used for inbound SMTP.   In the 
mailetcontainer template file, as part of the remoteDelivery mailet, 
there is this:

           <!-- Set the HELO/EHLO name to use when connectiong to remote 
SMTP-Server -->
           <!--
<mail.smtp.localhost>myMailServer</mail.smtp.localhost>
             -->
        </mailet>

Why are there two different places to specify the HELO name?  If the 
smtpserver.xml one is supposed to be used for inbound and outbound, this 
is redundant.  I know smtpserver.xml hello is used for inbound smtp. 
That is working. But it appears that James isn't using either one of 
these (the smtpserver hello def or the RemoteDelivery HELO def) for 
OUTBOUND smtp (which is the one I care about).  After changing the 
smtpserver.xml to mail.jwmhosting.com and verifying the remoteDelivery 
mailet HELO def is also mail.jwmhosting.com, mail-tester reports that 
it's still getting the Win Server machine name....

At this point, I'm willing to hardcode the HELO in the java file and 
rebuild the jar.  But I'm not that familiar with the James source. By 
chance could you point me to a particular class or package inside James 
where the HELO command is sent on outbound?

Thanks again.

Jerry


On 10/27/2014 3:51 AM, Robert Munn wrote:
> Your rDNS: mail.jwmhosting.com looks correct to me.
>
> I just did a telnet check of your smtp server:
>
> $ telnet
> telnet > open mail.jwmhosting.com 25
> telnet > helo foo.com
>
> reply shows:
> 250 jwmhosting.com Hello foo.com [xx.xx.xx.xx]) <- my ip address
>
>
> What is important here is the helo name : jwmhosting.com. It should say mail.jwmhosting.com. This is a spammer flag and can get your mail rejected depending on the host. That is what the mail-tester service is complaining about.
>
> You set this in smptserver.xml (smtpserver.conf in beta4?)
>
> Look for the block below, change it :
>
> <helloName autodetect=“false”>mail.jwmhosting.com</helloName>
>
>
>     <!-- This is the name used by the server to identify itself in the SMTP -->
>          <!-- protocol.  If autodetect is TRUE, the server will discover its -->
>          <!-- own host name and use that in the protocol.  If discovery fails, -->
>          <!-- the value of 'localhost' is used.  If autodetect is FALSE, James -->
>          <!-- will use the specified value. -->
>          <!--
>          <helloName autodetect="true">myMailServer</helloName>
>           -->
>
> FYI, beta4 has a deadlocking problem, you might want to upgrade to beta 5. I have instructions on how to build it from source on YouTube:
>
> https://www.youtube.com/channel/UChNyi0dlyanLLhp7cA9q5dA
>
> or if you prefer a text tutorial, on my blog:
>
> http://blog.bonnydoonmedia.com/post.cfm/building-apache-james-from-source
>
>
>
> On Oct 26, 2014, at 10:44 PM, Jerry Malcolm <te...@malcolms.com> wrote:
>
>> I have been running James 3 b4 for several months.  I was having some outbound mail rejected by gmail and started doing some research.  I did an email test using mail-tester.com and got the error message that my HELO did not match the rDNS.  It reports:
>>
>> IP: 64.34.163.186
>> HELO: p2825577
>> rDNS: mail.jwmhosting.com
>>
>> The p2825577 number is my Windows Server 2008 machine name.  I don't want to use that.
>>
>> In the RemoteDelivery mailet config, I have the following:
>>
>> <mail.smtp.localhost>mail.jwmhosting.com</mail.smtp.localhost>
>>
>> If I'm reading the instructions correctly, this should cause the specified value (mail.jwmhosting.com) to be sent on the HELO instead of the p282... number, correct?  But it isn't.
>>
>> What am I doing wrong?
>>
>> BTW...  I tried changing my rDNS to the p282... number.  rDNS's have to be a fully qualified domain name.  So it won't take it.  Fine... I then tried changing my Win Server 08 machine name to be mail.jwmhosting.com.  No go on that either.  Can't have periods in Win machines names.... So I'm stuck.  Please advise....
>>
>> This is kinda urgent since I now realize that there's a distinct possibility that some of my clients' emails are not getting through due to this.  So thanks in advance for a quick reply to this.
>>
>> Jerry
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2015.0.5315 / Virus Database: 4189/8459 - Release Date: 10/26/14
>


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


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
Here is the answer, in RemoteDelivery.java, line 136:

 * <li><b>heloName</b> (optional) - a String containing the name used in the SMTP HELO and EHLO commands. Default is the default domain,
 * which is typically <code>localhost</code>.</li>


so in mailetcontainer.xml, this line:

<!-- Set the HELO/EHLO name to use when connectiong to remote SMTP-Server -->
<mail.smtp.localhost>mail.jwmhosting.com</mail.smtp.localhost>

should be this:

<heloName>mail.jwmhosting.com</heloName>
        

change, restart, and retry, you should be good to go.
       
On Oct 27, 2014, at 1:51 AM, Robert Munn <ro...@gmail.com> wrote:

> Your rDNS: mail.jwmhosting.com looks correct to me.
> 
> I just did a telnet check of your smtp server:
> 
> $ telnet
> telnet > open mail.jwmhosting.com 25
> telnet > helo foo.com
> 
> reply shows:
> 250 jwmhosting.com Hello foo.com [xx.xx.xx.xx]) <- my ip address
> 
> 
> What is important here is the helo name : jwmhosting.com. It should say mail.jwmhosting.com. This is a spammer flag and can get your mail rejected depending on the host. That is what the mail-tester service is complaining about.
> 
> You set this in smptserver.xml (smtpserver.conf in beta4?)
> 
> Look for the block below, change it :
> 
> <helloName autodetect=“false”>mail.jwmhosting.com</helloName>
> 
> 
>    <!-- This is the name used by the server to identify itself in the SMTP -->
>         <!-- protocol.  If autodetect is TRUE, the server will discover its -->
>         <!-- own host name and use that in the protocol.  If discovery fails, -->
>         <!-- the value of 'localhost' is used.  If autodetect is FALSE, James -->
>         <!-- will use the specified value. -->
>         <!--
>         <helloName autodetect="true">myMailServer</helloName>
>          -->
> 
> FYI, beta4 has a deadlocking problem, you might want to upgrade to beta 5. I have instructions on how to build it from source on YouTube:
> 
> https://www.youtube.com/channel/UChNyi0dlyanLLhp7cA9q5dA
> 
> or if you prefer a text tutorial, on my blog:
> 
> http://blog.bonnydoonmedia.com/post.cfm/building-apache-james-from-source
> 
> 
> 
> On Oct 26, 2014, at 10:44 PM, Jerry Malcolm <te...@malcolms.com> wrote:
> 
>> I have been running James 3 b4 for several months.  I was having some outbound mail rejected by gmail and started doing some research.  I did an email test using mail-tester.com and got the error message that my HELO did not match the rDNS.  It reports:
>> 
>> IP: 64.34.163.186
>> HELO: p2825577
>> rDNS: mail.jwmhosting.com
>> 
>> The p2825577 number is my Windows Server 2008 machine name.  I don't want to use that.
>> 
>> In the RemoteDelivery mailet config, I have the following:
>> 
>> <mail.smtp.localhost>mail.jwmhosting.com</mail.smtp.localhost>
>> 
>> If I'm reading the instructions correctly, this should cause the specified value (mail.jwmhosting.com) to be sent on the HELO instead of the p282... number, correct?  But it isn't.
>> 
>> What am I doing wrong?
>> 
>> BTW...  I tried changing my rDNS to the p282... number.  rDNS's have to be a fully qualified domain name.  So it won't take it.  Fine... I then tried changing my Win Server 08 machine name to be mail.jwmhosting.com.  No go on that either.  Can't have periods in Win machines names.... So I'm stuck.  Please advise....
>> 
>> This is kinda urgent since I now realize that there's a distinct possibility that some of my clients' emails are not getting through due to this.  So thanks in advance for a quick reply to this.
>> 
>> Jerry
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>> 
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
tickets created and patch files uploaded.

On Mar 3, 2015, at 1:09 PM, Robert Munn <ro...@gmail.com> wrote:

> ok
> 
> On Mar 1, 2015 12:51 AM, "Eric Charles" <er...@apache.org> wrote:
> Can you open a JIRA and upload your patches there?
> 
> On 10/28/2014 12:11 AM, Robert Munn wrote:
> > OK, I made an Eclipse patch for the RemoteDelivery issue. I also made a patch for a mod I made to ReadOnlyUsersLDAPRespository.java that filters LDAP users by an additional filter string specified in the ldap conf file. Details, and patches, available on my blog:
> >
> > http://blog.bonnydoonmedia.com/post.cfm/patches-for-apache-james-mail-server-3-0-beta5
> >
> >
> >
> > On Oct 27, 2014, at 2:05 PM, Robert Munn <cf...@gmail.com> wrote:
> >
> >> Forgot one thing. Just above the try{} block, Transport transport is defined. I changed it to this:
> >>
> >> SMTPTransport transport = null;
> >>
> >>
> >>
> >> On Oct 27, 2014, at 1:54 PM, Robert Munn <cf...@gmail.com> wrote:
> >>
> >>> Here is my code. Import the SMTPTransport class, and replace this:
> >>>
> >>>  transport = session.getTransport(outgoingMailServer);
> >>>
> >>> with this:
> >>>
> >>>  transport =  (SMTPTransport) session.getTransport(outgoingMailServer);
> >>>  transport.setLocalHost( props.getProperty("mail.smtp.localhost", heloName) );
> >>>
> >>> I added:
> >>>
> >>>         <!-- Set the HELO/EHLO name to use when connectiong to remote SMTP-Server -->
> >>>         <mail.smtp.localhost>mail.legacyavatar.com</mail.smtp.localhost>
> >>>
> >>> and I have confirmed that it is being picked up by props.getProperty(“mail.smtp.localhost”).
> >>>
> >>>
> >>>
> >>>
> >>> On Oct 27, 2014, at 1:23 PM, Robert Munn <cf...@gmail.com> wrote:
> >>>
> >>>> Great stuff. I got the build working as well. I don’t like the fact that we’re forcing it to use SMTPTransport, ruling out using other transport providers, but if you look at the section of the code just below there, you see this:
> >>>>
> >>>>      // if the transport is a SMTPTransport (from sun) some
> >>>>      // performance enhancement can be done.
> >>>>      if (transport.getClass().getName().endsWith(".SMTPTransport")) {
> >>>>
> >>>> so there is a section that is testing the class and adding extensions already. I might wrap the code in a class name check and only call setLocalHost() if I find org.apache.geronimo.javamail.transport.smtp.SMTPTransport.
> >>>>
> >>>> Also, you only need to import that class, not the entire org.apache.geronimo.javamail.transport.smtp.* package. Better for the memory footprint.
> >>>>
> >>>>
> >>>> I will help with jDKIM, I will need to set it up myself. Where to start?
> >>>>
> >>>>
> >>>>
> >>>> On Oct 27, 2014, at 12:29 PM, Jerry Malcolm <te...@malcolms.com> wrote:
> >>>>
> >>>>> Well, Robert, you get the prize.... It works (finally)!
> >>>>>
> >>>>> Two changes required to RemoteDelivery mailet:
> >>>>>
> >>>>> Add:
> >>>>> import org.apache.geronimo.javamail.transport.smtp.*;
> >>>>>
> >>>>> Right after:
> >>>>> transport = session.getTransport(outgoingMailServer);
> >>>>>
> >>>>> add:
> >>>>> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost( "mail.jwmhosting.com");
> >>>>>
> >>>>> or be more generic and get the value from props.
> >>>>>
> >>>>> The setLocalHost needs to be right after the object is instantiated since the HELO is sent on one of the first calls to transport.
> >>>>>
> >>>>> This fixes it (thank you so much for your help).  But Geronimo is still not following the spec and honoring the property mail.smtp.localhost.  It needs to be fixed in a subsequent release.
> >>>>>
> >>>>> Basically everybody using James 3 needs to add this fix to the mailet, at least if running on a Windows server.  Or verify through mail-tester.com that the HELO is correct.  Going back to the orig problem, gmail was not delivering tons of my mail due to this.
> >>>>>
> >>>>> Thanks again.
> >>>>>
> >>>>> Now.... anybody offer any help on getting jDKIM working?  I've got it implemented and the DNS is set up.  But mail-tester is telling me the signature is invalid.  On to the next problem.....
> >>>>>
> >>>>> Jerry
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
> >>>>>> The mailet only sees 'transport' which is cast to generic "javax.mail.Transport".   The localhost methods and connection methods are all part of the geronimo impl.  You'll need to cast the transport to the geronimo package for the class, then see if you can get the connection object from the transport.  Might work.  But non-trivial.  I'll play around with that was well.
> >>>>>>
> >>>>>> Jerry
> >>>>>>
> >>>>>> On 10/27/2014 1:41 PM, Robert Munn wrote:
> >>>>>>> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
> >>>>>>>
> >>>>>>>  public String getLocalHost() throws MessagingException {
> >>>>>>>      if (localHost == null) {
> >>>>>>>
> >>>>>>>          try {
> >>>>>>>              localHost = InetAddress.getLocalHost().getHostName();
> >>>>>>>          } catch (UnknownHostException e) {
> >>>>>>>              // fine, we're misconfigured - ignore
> >>>>>>>          }
> >>>>>>>
> >>>>>>>          if (localHost == null) {
> >>>>>>>              localHost = props.getProperty(MAIL_LOCALHOST);
> >>>>>>>          }
> >>>>>>>
> >>>>>>>          if (localHost == null) {
> >>>>>>>              localHost = props.getSessionProperty(MAIL_LOCALHOST);
> >>>>>>>          }
> >>>>>>>
> >>>>>>>          if (localHost == null) {
> >>>>>>>              throw new MessagingException("Can't get local hostname. "
> >>>>>>>                      + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
> >>>>>>>          }
> >>>>>>>      }
> >>>>>>>
> >>>>>>>      return localHost;
> >>>>>>>  }
> >>>>>>>
> >>>>>>>       /**
> >>>>>>>   * Explicitly set the local host information.
> >>>>>>>   *
> >>>>>>>   * @param localHost
> >>>>>>>   *            The new localHost name.
> >>>>>>>   */
> >>>>>>>  public void setLocalHost(String localHost) {
> >>>>>>>      this.localHost = localHost;
> >>>>>>>  }
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
> >>>>>>>
> >>>>>>>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
> >>>>>>>>
> >>>>>>>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
> >>>>>>>>
> >>>>>>>> The very first thing in the MailConnection.getLocalHost() method should be something like:
> >>>>>>>> ---------------------------------------
> >>>>>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
> >>>>>>>> ---------------------------------------
> >>>>>>>> Then let it try all of the other options if and only if this property is NOT set.
> >>>>>>>>
> >>>>>>>> Jerry
> >>>>>>>>
> >>>>>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
> >>>>>>>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
> >>>>>>>>>
> >>>>>>>>> public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
> >>>>>>>>>
> >>>>>>>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
> >>>>>>>>>
> >>>>>>>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
> >>>>>>>>>>
> >>>>>>>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
> >>>>>>>>>>
> >>>>>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
> >>>>>>>>>>
> >>>>>>>>>> So.... half the problem is done... we know the culprit. Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
> >>>>>>>>>>
> >>>>>>>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
> >>>>>>>>>>
> >>>>>>>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
> >>>>>>>>>>
> >>>>>>>>>> Still open to other suggestions for quicker workaround.....
> >>>>>>>>>>
> >>>>>>>>>> Thanks.
> >>>>>>>>>>
> >>>>>>>>>> Jerry
> >>>>>>>>>>
> >>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> >>>>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> -----
> >>>>>>>>> No virus found in this message.
> >>>>>>>>> Checked by AVG - www.avg.com
> >>>>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
> >>>>>>>>>
> >>>>>>>> ---------------------------------------------------------------------
> >>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> >>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
> >>>>>>>
> >>>>>>>
> >>>>>>> -----
> >>>>>>> No virus found in this message.
> >>>>>>> Checked by AVG - www.avg.com
> >>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
> >>>>>>>
> >>>>>>
> >>>>>> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> >>>>>> For additional commands, e-mail: server-user-help@james.apache.org
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> -----
> >>>>>> No virus found in this message.
> >>>>>> Checked by AVG - www.avg.com
> >>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> >>>>> For additional commands, e-mail: server-user-help@james.apache.org
> >>>>>
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
ok
On Mar 1, 2015 12:51 AM, "Eric Charles" <er...@apache.org> wrote:

> Can you open a JIRA and upload your patches there?
>
> On 10/28/2014 12:11 AM, Robert Munn wrote:
> > OK, I made an Eclipse patch for the RemoteDelivery issue. I also made a
> patch for a mod I made to ReadOnlyUsersLDAPRespository.java that filters
> LDAP users by an additional filter string specified in the ldap conf file.
> Details, and patches, available on my blog:
> >
> >
> http://blog.bonnydoonmedia.com/post.cfm/patches-for-apache-james-mail-server-3-0-beta5
> >
> >
> >
> > On Oct 27, 2014, at 2:05 PM, Robert Munn <cf...@gmail.com> wrote:
> >
> >> Forgot one thing. Just above the try{} block, Transport transport is
> defined. I changed it to this:
> >>
> >> SMTPTransport transport = null;
> >>
> >>
> >>
> >> On Oct 27, 2014, at 1:54 PM, Robert Munn <cf...@gmail.com> wrote:
> >>
> >>> Here is my code. Import the SMTPTransport class, and replace this:
> >>>
> >>>  transport = session.getTransport(outgoingMailServer);
> >>>
> >>> with this:
> >>>
> >>>  transport =  (SMTPTransport) session.getTransport(outgoingMailServer);
> >>>  transport.setLocalHost( props.getProperty("mail.smtp.localhost",
> heloName) );
> >>>
> >>> I added:
> >>>
> >>>         <!-- Set the HELO/EHLO name to use when connectiong to remote
> SMTP-Server -->
> >>>         <mail.smtp.localhost>mail.legacyavatar.com
> </mail.smtp.localhost>
> >>>
> >>> and I have confirmed that it is being picked up by
> props.getProperty(“mail.smtp.localhost”).
> >>>
> >>>
> >>>
> >>>
> >>> On Oct 27, 2014, at 1:23 PM, Robert Munn <cf...@gmail.com> wrote:
> >>>
> >>>> Great stuff. I got the build working as well. I don’t like the fact
> that we’re forcing it to use SMTPTransport, ruling out using other
> transport providers, but if you look at the section of the code just below
> there, you see this:
> >>>>
> >>>>      // if the transport is a SMTPTransport (from sun) some
> >>>>      // performance enhancement can be done.
> >>>>      if (transport.getClass().getName().endsWith(".SMTPTransport")) {
> >>>>
> >>>> so there is a section that is testing the class and adding extensions
> already. I might wrap the code in a class name check and only call
> setLocalHost() if I find
> org.apache.geronimo.javamail.transport.smtp.SMTPTransport.
> >>>>
> >>>> Also, you only need to import that class, not the entire
> org.apache.geronimo.javamail.transport.smtp.* package. Better for the
> memory footprint.
> >>>>
> >>>>
> >>>> I will help with jDKIM, I will need to set it up myself. Where to
> start?
> >>>>
> >>>>
> >>>>
> >>>> On Oct 27, 2014, at 12:29 PM, Jerry Malcolm <te...@malcolms.com>
> wrote:
> >>>>
> >>>>> Well, Robert, you get the prize.... It works (finally)!
> >>>>>
> >>>>> Two changes required to RemoteDelivery mailet:
> >>>>>
> >>>>> Add:
> >>>>> import org.apache.geronimo.javamail.transport.smtp.*;
> >>>>>
> >>>>> Right after:
> >>>>> transport = session.getTransport(outgoingMailServer);
> >>>>>
> >>>>> add:
> >>>>>
> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost(
> "mail.jwmhosting.com");
> >>>>>
> >>>>> or be more generic and get the value from props.
> >>>>>
> >>>>> The setLocalHost needs to be right after the object is instantiated
> since the HELO is sent on one of the first calls to transport.
> >>>>>
> >>>>> This fixes it (thank you so much for your help).  But Geronimo is
> still not following the spec and honoring the property
> mail.smtp.localhost.  It needs to be fixed in a subsequent release.
> >>>>>
> >>>>> Basically everybody using James 3 needs to add this fix to the
> mailet, at least if running on a Windows server.  Or verify through
> mail-tester.com that the HELO is correct.  Going back to the orig
> problem, gmail was not delivering tons of my mail due to this.
> >>>>>
> >>>>> Thanks again.
> >>>>>
> >>>>> Now.... anybody offer any help on getting jDKIM working?  I've got
> it implemented and the DNS is set up.  But mail-tester is telling me the
> signature is invalid.  On to the next problem.....
> >>>>>
> >>>>> Jerry
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
> >>>>>> The mailet only sees 'transport' which is cast to generic
> "javax.mail.Transport".   The localhost methods and connection methods are
> all part of the geronimo impl.  You'll need to cast the transport to the
> geronimo package for the class, then see if you can get the connection
> object from the transport.  Might work.  But non-trivial.  I'll play around
> with that was well.
> >>>>>>
> >>>>>> Jerry
> >>>>>>
> >>>>>> On 10/27/2014 1:41 PM, Robert Munn wrote:
> >>>>>>> Here is the base code. Note localHost is a property of the
> MailConnection class. Note also that there is a setLocalHost() method. I am
> going to try setting the localhost property from RemoteDelivery using
> setLocalHost( localHost ).
> >>>>>>>
> >>>>>>>  public String getLocalHost() throws MessagingException {
> >>>>>>>      if (localHost == null) {
> >>>>>>>
> >>>>>>>          try {
> >>>>>>>              localHost = InetAddress.getLocalHost().getHostName();
> >>>>>>>          } catch (UnknownHostException e) {
> >>>>>>>              // fine, we're misconfigured - ignore
> >>>>>>>          }
> >>>>>>>
> >>>>>>>          if (localHost == null) {
> >>>>>>>              localHost = props.getProperty(MAIL_LOCALHOST);
> >>>>>>>          }
> >>>>>>>
> >>>>>>>          if (localHost == null) {
> >>>>>>>              localHost = props.getSessionProperty(MAIL_LOCALHOST);
> >>>>>>>          }
> >>>>>>>
> >>>>>>>          if (localHost == null) {
> >>>>>>>              throw new MessagingException("Can't get local
> hostname. "
> >>>>>>>                      + " Please correctly configure JDK/DNS or set
> mail.smtp.localhost");
> >>>>>>>          }
> >>>>>>>      }
> >>>>>>>
> >>>>>>>      return localHost;
> >>>>>>>  }
> >>>>>>>
> >>>>>>>       /**
> >>>>>>>   * Explicitly set the local host information.
> >>>>>>>   *
> >>>>>>>   * @param localHost
> >>>>>>>   *            The new localHost name.
> >>>>>>>   */
> >>>>>>>  public void setLocalHost(String localHost) {
> >>>>>>>      this.localHost = localHost;
> >>>>>>>  }
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <
> techstuff@malcolms.com> wrote:
> >>>>>>>
> >>>>>>>> mailet calls 'transport' which is an "SMTPTransport" instance.
> SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from
> MailConnection.getLocalHost().
> >>>>>>>>
> >>>>>>>> That method returns the
> InetAddress().getLocalHost().getHostName() first.  According to the spec,
> that should only occur IF the property mail.smtp.localhost is not set.  So
> i think the fix should be in that method.
> >>>>>>>>
> >>>>>>>> The very first thing in the MailConnection.getLocalHost() method
> should be something like:
> >>>>>>>> ---------------------------------------
> >>>>>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return(
> props.getProperty( "mail.smtp.localhost" ));
> >>>>>>>> ---------------------------------------
> >>>>>>>> Then let it try all of the other options if and only if this
> property is NOT set.
> >>>>>>>>
> >>>>>>>> Jerry
> >>>>>>>>
> >>>>>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
> >>>>>>>>> More info. SMPTConnection.java extends MailConnection.java which
> has a method with this signature:
> >>>>>>>>>
> >>>>>>>>> public boolean protocolConnect(String host, int port, String
> username, String password) throws MessagingException
> >>>>>>>>>
> >>>>>>>>> If you fail to pass ‘host’ as an argument to the method, the
> host defaults to ‘localhost’. A patch could be made there. A better patch
> would be to find the upstream code that is calling this method and patch it
> to send the correct hostname. I am hunting for that location, please let me
> know if you have any suggestions...
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <
> techstuff@malcolms.com> wrote:
> >>>>>>>>>
> >>>>>>>>>> Thanks for jumping in and investigating.  This has gone from
> ugly to horrible....  I think I have found the culprit.
> >>>>>>>>>>
> >>>>>>>>>> I first had to figure out who is providing the class for
> SMTPTransport.   figured out that the package for SMTPTransport is:
> org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM
> implementation.... It's apache, and I am about to withdraw my statement
> that 'surely the transport class couldn't be ignoring a property".....
> >>>>>>>>>>
> >>>>>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which
> actually returns the localhost name.  And... no surprise at this point, it
> totally ignores the mail.smtp.localhost property. The property doesn't even
> appear anywher in the class.  First line in getLocalHost() pulls the
> InetAddress.getLocalHost().getHostName() value.
> >>>>>>>>>>
> >>>>>>>>>> So.... half the problem is done... we know the culprit. Now I
> guess (oh joy....) I get to download the whole geronimo package, set up a
> build process, fix the code, and replace the jar on my server. (yuck).
> >>>>>>>>>>
> >>>>>>>>>> That is... unless someone already has a VERY quick way to patch
> and rebuild geronimo.....  Looking for volunteers.... :-)
> >>>>>>>>>>
> >>>>>>>>>> In the meantime, I will also try adding that JVM parameter to
> try to override the Win Server machine name.
> >>>>>>>>>>
> >>>>>>>>>> Still open to other suggestions for quicker workaround.....
> >>>>>>>>>>
> >>>>>>>>>> Thanks.
> >>>>>>>>>>
> >>>>>>>>>> Jerry
> >>>>>>>>>>
> >>>>>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>>>> To unsubscribe, e-mail:
> server-user-unsubscribe@james.apache.org
> >>>>>>>>>> For additional commands, e-mail:
> server-user-help@james.apache.org
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> -----
> >>>>>>>>> No virus found in this message.
> >>>>>>>>> Checked by AVG - www.avg.com
> >>>>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date:
> 10/27/14
> >>>>>>>>>
> >>>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> >>>>>>>> For additional commands, e-mail:
> server-user-help@james.apache.org
> >>>>>>>
> >>>>>>>
> >>>>>>> -----
> >>>>>>> No virus found in this message.
> >>>>>>> Checked by AVG - www.avg.com
> >>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date:
> 10/27/14
> >>>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> >>>>>> For additional commands, e-mail: server-user-help@james.apache.org
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> -----
> >>>>>> No virus found in this message.
> >>>>>> Checked by AVG - www.avg.com
> >>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date:
> 10/27/14
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> >>>>> For additional commands, e-mail: server-user-help@james.apache.org
> >>>>>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
>

Re: James 3 b4 HELO Override Not Working?

Posted by Eric Charles <er...@apache.org>.
Can you open a JIRA and upload your patches there?

On 10/28/2014 12:11 AM, Robert Munn wrote:
> OK, I made an Eclipse patch for the RemoteDelivery issue. I also made a patch for a mod I made to ReadOnlyUsersLDAPRespository.java that filters LDAP users by an additional filter string specified in the ldap conf file. Details, and patches, available on my blog:
>
> http://blog.bonnydoonmedia.com/post.cfm/patches-for-apache-james-mail-server-3-0-beta5
>
>
>
> On Oct 27, 2014, at 2:05 PM, Robert Munn <cf...@gmail.com> wrote:
>
>> Forgot one thing. Just above the try{} block, Transport transport is defined. I changed it to this:
>>
>> SMTPTransport transport = null;
>>
>>
>>
>> On Oct 27, 2014, at 1:54 PM, Robert Munn <cf...@gmail.com> wrote:
>>
>>> Here is my code. Import the SMTPTransport class, and replace this:
>>>
>>>  transport = session.getTransport(outgoingMailServer);
>>>
>>> with this:
>>>
>>>  transport =  (SMTPTransport) session.getTransport(outgoingMailServer);
>>>  transport.setLocalHost( props.getProperty("mail.smtp.localhost", heloName) );
>>>
>>> I added:
>>>
>>>         <!-- Set the HELO/EHLO name to use when connectiong to remote SMTP-Server -->
>>>         <mail.smtp.localhost>mail.legacyavatar.com</mail.smtp.localhost>
>>>
>>> and I have confirmed that it is being picked up by props.getProperty(“mail.smtp.localhost”).
>>>
>>>
>>>
>>>
>>> On Oct 27, 2014, at 1:23 PM, Robert Munn <cf...@gmail.com> wrote:
>>>
>>>> Great stuff. I got the build working as well. I don’t like the fact that we’re forcing it to use SMTPTransport, ruling out using other transport providers, but if you look at the section of the code just below there, you see this:
>>>>
>>>>      // if the transport is a SMTPTransport (from sun) some
>>>>      // performance enhancement can be done.
>>>>      if (transport.getClass().getName().endsWith(".SMTPTransport")) {
>>>>
>>>> so there is a section that is testing the class and adding extensions already. I might wrap the code in a class name check and only call setLocalHost() if I find org.apache.geronimo.javamail.transport.smtp.SMTPTransport. 
>>>>
>>>> Also, you only need to import that class, not the entire org.apache.geronimo.javamail.transport.smtp.* package. Better for the memory footprint.
>>>>
>>>>
>>>> I will help with jDKIM, I will need to set it up myself. Where to start?
>>>>
>>>>
>>>>
>>>> On Oct 27, 2014, at 12:29 PM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>
>>>>> Well, Robert, you get the prize.... It works (finally)!
>>>>>
>>>>> Two changes required to RemoteDelivery mailet:
>>>>>
>>>>> Add:
>>>>> import org.apache.geronimo.javamail.transport.smtp.*;
>>>>>
>>>>> Right after:
>>>>> transport = session.getTransport(outgoingMailServer);
>>>>>
>>>>> add:
>>>>> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost( "mail.jwmhosting.com");
>>>>>
>>>>> or be more generic and get the value from props.
>>>>>
>>>>> The setLocalHost needs to be right after the object is instantiated since the HELO is sent on one of the first calls to transport.
>>>>>
>>>>> This fixes it (thank you so much for your help).  But Geronimo is still not following the spec and honoring the property mail.smtp.localhost.  It needs to be fixed in a subsequent release.
>>>>>
>>>>> Basically everybody using James 3 needs to add this fix to the mailet, at least if running on a Windows server.  Or verify through mail-tester.com that the HELO is correct.  Going back to the orig problem, gmail was not delivering tons of my mail due to this.
>>>>>
>>>>> Thanks again.
>>>>>
>>>>> Now.... anybody offer any help on getting jDKIM working?  I've got it implemented and the DNS is set up.  But mail-tester is telling me the signature is invalid.  On to the next problem.....
>>>>>
>>>>> Jerry
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
>>>>>> The mailet only sees 'transport' which is cast to generic "javax.mail.Transport".   The localhost methods and connection methods are all part of the geronimo impl.  You'll need to cast the transport to the geronimo package for the class, then see if you can get the connection object from the transport.  Might work.  But non-trivial.  I'll play around with that was well.
>>>>>>
>>>>>> Jerry
>>>>>>
>>>>>> On 10/27/2014 1:41 PM, Robert Munn wrote:
>>>>>>> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
>>>>>>>
>>>>>>>  public String getLocalHost() throws MessagingException {
>>>>>>>      if (localHost == null) {
>>>>>>>
>>>>>>>          try {
>>>>>>>              localHost = InetAddress.getLocalHost().getHostName();
>>>>>>>          } catch (UnknownHostException e) {
>>>>>>>              // fine, we're misconfigured - ignore
>>>>>>>          }
>>>>>>>
>>>>>>>          if (localHost == null) {
>>>>>>>              localHost = props.getProperty(MAIL_LOCALHOST);
>>>>>>>          }
>>>>>>>
>>>>>>>          if (localHost == null) {
>>>>>>>              localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>>>>>>          }
>>>>>>>
>>>>>>>          if (localHost == null) {
>>>>>>>              throw new MessagingException("Can't get local hostname. "
>>>>>>>                      + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
>>>>>>>          }
>>>>>>>      }
>>>>>>>
>>>>>>>      return localHost;
>>>>>>>  }
>>>>>>>
>>>>>>>       /**
>>>>>>>   * Explicitly set the local host information.
>>>>>>>   *
>>>>>>>   * @param localHost
>>>>>>>   *            The new localHost name.
>>>>>>>   */
>>>>>>>  public void setLocalHost(String localHost) {
>>>>>>>      this.localHost = localHost;
>>>>>>>  }
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>>>>
>>>>>>>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
>>>>>>>>
>>>>>>>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
>>>>>>>>
>>>>>>>> The very first thing in the MailConnection.getLocalHost() method should be something like:
>>>>>>>> ---------------------------------------
>>>>>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
>>>>>>>> ---------------------------------------
>>>>>>>> Then let it try all of the other options if and only if this property is NOT set.
>>>>>>>>
>>>>>>>> Jerry
>>>>>>>>
>>>>>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>>>>>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>>>>>>>>>
>>>>>>>>> public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>>>>>>>>>
>>>>>>>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>>>>>>
>>>>>>>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>>>>>>>>>
>>>>>>>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>>>>>>>>>
>>>>>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>>>>>>>>>
>>>>>>>>>> So.... half the problem is done... we know the culprit. Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>>>>>>>>>
>>>>>>>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>>>>>>
>>>>>>>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>>>>>>>>>
>>>>>>>>>> Still open to other suggestions for quicker workaround.....
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> Jerry
>>>>>>>>>>
>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -----
>>>>>>>>> No virus found in this message.
>>>>>>>>> Checked by AVG - www.avg.com
>>>>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>>
>>>>>>>
>>>>>>> -----
>>>>>>> No virus found in this message.
>>>>>>> Checked by AVG - www.avg.com
>>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>
>>>>>>
>>>>>>
>>>>>> -----
>>>>>> No virus found in this message.
>>>>>> Checked by AVG - www.avg.com
>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>
>

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


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <cf...@gmail.com>.
OK, I made an Eclipse patch for the RemoteDelivery issue. I also made a patch for a mod I made to ReadOnlyUsersLDAPRespository.java that filters LDAP users by an additional filter string specified in the ldap conf file. Details, and patches, available on my blog:

http://blog.bonnydoonmedia.com/post.cfm/patches-for-apache-james-mail-server-3-0-beta5



On Oct 27, 2014, at 2:05 PM, Robert Munn <cf...@gmail.com> wrote:

> Forgot one thing. Just above the try{} block, Transport transport is defined. I changed it to this:
> 
> SMTPTransport transport = null;
> 
> 
> 
> On Oct 27, 2014, at 1:54 PM, Robert Munn <cf...@gmail.com> wrote:
> 
>> Here is my code. Import the SMTPTransport class, and replace this:
>> 
>>  transport = session.getTransport(outgoingMailServer);
>> 
>> with this:
>> 
>>  transport =  (SMTPTransport) session.getTransport(outgoingMailServer);
>>  transport.setLocalHost( props.getProperty("mail.smtp.localhost", heloName) );
>> 
>> I added:
>> 
>>         <!-- Set the HELO/EHLO name to use when connectiong to remote SMTP-Server -->
>>         <mail.smtp.localhost>mail.legacyavatar.com</mail.smtp.localhost>
>> 
>> and I have confirmed that it is being picked up by props.getProperty(“mail.smtp.localhost”).
>> 
>> 
>> 
>> 
>> On Oct 27, 2014, at 1:23 PM, Robert Munn <cf...@gmail.com> wrote:
>> 
>>> Great stuff. I got the build working as well. I don’t like the fact that we’re forcing it to use SMTPTransport, ruling out using other transport providers, but if you look at the section of the code just below there, you see this:
>>> 
>>>      // if the transport is a SMTPTransport (from sun) some
>>>      // performance enhancement can be done.
>>>      if (transport.getClass().getName().endsWith(".SMTPTransport")) {
>>> 
>>> so there is a section that is testing the class and adding extensions already. I might wrap the code in a class name check and only call setLocalHost() if I find org.apache.geronimo.javamail.transport.smtp.SMTPTransport. 
>>> 
>>> Also, you only need to import that class, not the entire org.apache.geronimo.javamail.transport.smtp.* package. Better for the memory footprint.
>>> 
>>> 
>>> I will help with jDKIM, I will need to set it up myself. Where to start?
>>> 
>>> 
>>> 
>>> On Oct 27, 2014, at 12:29 PM, Jerry Malcolm <te...@malcolms.com> wrote:
>>> 
>>>> Well, Robert, you get the prize.... It works (finally)!
>>>> 
>>>> Two changes required to RemoteDelivery mailet:
>>>> 
>>>> Add:
>>>> import org.apache.geronimo.javamail.transport.smtp.*;
>>>> 
>>>> Right after:
>>>> transport = session.getTransport(outgoingMailServer);
>>>> 
>>>> add:
>>>> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost( "mail.jwmhosting.com");
>>>> 
>>>> or be more generic and get the value from props.
>>>> 
>>>> The setLocalHost needs to be right after the object is instantiated since the HELO is sent on one of the first calls to transport.
>>>> 
>>>> This fixes it (thank you so much for your help).  But Geronimo is still not following the spec and honoring the property mail.smtp.localhost.  It needs to be fixed in a subsequent release.
>>>> 
>>>> Basically everybody using James 3 needs to add this fix to the mailet, at least if running on a Windows server.  Or verify through mail-tester.com that the HELO is correct.  Going back to the orig problem, gmail was not delivering tons of my mail due to this.
>>>> 
>>>> Thanks again.
>>>> 
>>>> Now.... anybody offer any help on getting jDKIM working?  I've got it implemented and the DNS is set up.  But mail-tester is telling me the signature is invalid.  On to the next problem.....
>>>> 
>>>> Jerry
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
>>>>> The mailet only sees 'transport' which is cast to generic "javax.mail.Transport".   The localhost methods and connection methods are all part of the geronimo impl.  You'll need to cast the transport to the geronimo package for the class, then see if you can get the connection object from the transport.  Might work.  But non-trivial.  I'll play around with that was well.
>>>>> 
>>>>> Jerry
>>>>> 
>>>>> On 10/27/2014 1:41 PM, Robert Munn wrote:
>>>>>> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
>>>>>> 
>>>>>>  public String getLocalHost() throws MessagingException {
>>>>>>      if (localHost == null) {
>>>>>> 
>>>>>>          try {
>>>>>>              localHost = InetAddress.getLocalHost().getHostName();
>>>>>>          } catch (UnknownHostException e) {
>>>>>>              // fine, we're misconfigured - ignore
>>>>>>          }
>>>>>> 
>>>>>>          if (localHost == null) {
>>>>>>              localHost = props.getProperty(MAIL_LOCALHOST);
>>>>>>          }
>>>>>> 
>>>>>>          if (localHost == null) {
>>>>>>              localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>>>>>          }
>>>>>> 
>>>>>>          if (localHost == null) {
>>>>>>              throw new MessagingException("Can't get local hostname. "
>>>>>>                      + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
>>>>>>          }
>>>>>>      }
>>>>>> 
>>>>>>      return localHost;
>>>>>>  }
>>>>>> 
>>>>>>       /**
>>>>>>   * Explicitly set the local host information.
>>>>>>   *
>>>>>>   * @param localHost
>>>>>>   *            The new localHost name.
>>>>>>   */
>>>>>>  public void setLocalHost(String localHost) {
>>>>>>      this.localHost = localHost;
>>>>>>  }
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>>> 
>>>>>>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
>>>>>>> 
>>>>>>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
>>>>>>> 
>>>>>>> The very first thing in the MailConnection.getLocalHost() method should be something like:
>>>>>>> ---------------------------------------
>>>>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
>>>>>>> ---------------------------------------
>>>>>>> Then let it try all of the other options if and only if this property is NOT set.
>>>>>>> 
>>>>>>> Jerry
>>>>>>> 
>>>>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>>>>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>>>>>>>> 
>>>>>>>> public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>>>>>>>> 
>>>>>>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>>>>> 
>>>>>>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>>>>>>>> 
>>>>>>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>>>>>>>> 
>>>>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>>>>>>>> 
>>>>>>>>> So.... half the problem is done... we know the culprit. Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>>>>>>>> 
>>>>>>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>>>>> 
>>>>>>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>>>>>>>> 
>>>>>>>>> Still open to other suggestions for quicker workaround.....
>>>>>>>>> 
>>>>>>>>> Thanks.
>>>>>>>>> 
>>>>>>>>> Jerry
>>>>>>>>> 
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> -----
>>>>>>>> No virus found in this message.
>>>>>>>> Checked by AVG - www.avg.com
>>>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>>>>>> 
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -----
>>>>>> No virus found in this message.
>>>>>> Checked by AVG - www.avg.com
>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>>>>>> 
>>>>> 
>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>> 
>>>>> 
>>>>> 
>>>>> -----
>>>>> No virus found in this message.
>>>>> Checked by AVG - www.avg.com
>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>> 
>>> 
>> 
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <cf...@gmail.com>.
Forgot one thing. Just above the try{} block, Transport transport is defined. I changed it to this:

SMTPTransport transport = null;



On Oct 27, 2014, at 1:54 PM, Robert Munn <cf...@gmail.com> wrote:

> Here is my code. Import the SMTPTransport class, and replace this:
> 
>   transport = session.getTransport(outgoingMailServer);
> 
> with this:
> 
>   transport =  (SMTPTransport) session.getTransport(outgoingMailServer);
>   transport.setLocalHost( props.getProperty("mail.smtp.localhost", heloName) );
> 
> I added:
> 
>          <!-- Set the HELO/EHLO name to use when connectiong to remote SMTP-Server -->
>          <mail.smtp.localhost>mail.legacyavatar.com</mail.smtp.localhost>
> 
> and I have confirmed that it is being picked up by props.getProperty(“mail.smtp.localhost”).
> 
> 
> 
> 
> On Oct 27, 2014, at 1:23 PM, Robert Munn <cf...@gmail.com> wrote:
> 
>> Great stuff. I got the build working as well. I don’t like the fact that we’re forcing it to use SMTPTransport, ruling out using other transport providers, but if you look at the section of the code just below there, you see this:
>> 
>>       // if the transport is a SMTPTransport (from sun) some
>>       // performance enhancement can be done.
>>       if (transport.getClass().getName().endsWith(".SMTPTransport")) {
>> 
>> so there is a section that is testing the class and adding extensions already. I might wrap the code in a class name check and only call setLocalHost() if I find org.apache.geronimo.javamail.transport.smtp.SMTPTransport. 
>> 
>> Also, you only need to import that class, not the entire org.apache.geronimo.javamail.transport.smtp.* package. Better for the memory footprint.
>> 
>> 
>> I will help with jDKIM, I will need to set it up myself. Where to start?
>> 
>> 
>> 
>> On Oct 27, 2014, at 12:29 PM, Jerry Malcolm <te...@malcolms.com> wrote:
>> 
>>> Well, Robert, you get the prize.... It works (finally)!
>>> 
>>> Two changes required to RemoteDelivery mailet:
>>> 
>>> Add:
>>> import org.apache.geronimo.javamail.transport.smtp.*;
>>> 
>>> Right after:
>>>  transport = session.getTransport(outgoingMailServer);
>>> 
>>> add:
>>> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost( "mail.jwmhosting.com");
>>> 
>>> or be more generic and get the value from props.
>>> 
>>> The setLocalHost needs to be right after the object is instantiated since the HELO is sent on one of the first calls to transport.
>>> 
>>> This fixes it (thank you so much for your help).  But Geronimo is still not following the spec and honoring the property mail.smtp.localhost.  It needs to be fixed in a subsequent release.
>>> 
>>> Basically everybody using James 3 needs to add this fix to the mailet, at least if running on a Windows server.  Or verify through mail-tester.com that the HELO is correct.  Going back to the orig problem, gmail was not delivering tons of my mail due to this.
>>> 
>>> Thanks again.
>>> 
>>> Now.... anybody offer any help on getting jDKIM working?  I've got it implemented and the DNS is set up.  But mail-tester is telling me the signature is invalid.  On to the next problem.....
>>> 
>>> Jerry
>>> 
>>> 
>>> 
>>> 
>>> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
>>>> The mailet only sees 'transport' which is cast to generic "javax.mail.Transport".   The localhost methods and connection methods are all part of the geronimo impl.  You'll need to cast the transport to the geronimo package for the class, then see if you can get the connection object from the transport.  Might work.  But non-trivial.  I'll play around with that was well.
>>>> 
>>>> Jerry
>>>> 
>>>> On 10/27/2014 1:41 PM, Robert Munn wrote:
>>>>> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
>>>>> 
>>>>>   public String getLocalHost() throws MessagingException {
>>>>>       if (localHost == null) {
>>>>> 
>>>>>           try {
>>>>>               localHost = InetAddress.getLocalHost().getHostName();
>>>>>           } catch (UnknownHostException e) {
>>>>>               // fine, we're misconfigured - ignore
>>>>>           }
>>>>> 
>>>>>           if (localHost == null) {
>>>>>               localHost = props.getProperty(MAIL_LOCALHOST);
>>>>>           }
>>>>> 
>>>>>           if (localHost == null) {
>>>>>               localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>>>>           }
>>>>> 
>>>>>           if (localHost == null) {
>>>>>               throw new MessagingException("Can't get local hostname. "
>>>>>                       + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
>>>>>           }
>>>>>       }
>>>>> 
>>>>>       return localHost;
>>>>>   }
>>>>> 
>>>>>        /**
>>>>>    * Explicitly set the local host information.
>>>>>    *
>>>>>    * @param localHost
>>>>>    *            The new localHost name.
>>>>>    */
>>>>>   public void setLocalHost(String localHost) {
>>>>>       this.localHost = localHost;
>>>>>   }
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>> 
>>>>>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
>>>>>> 
>>>>>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
>>>>>> 
>>>>>> The very first thing in the MailConnection.getLocalHost() method should be something like:
>>>>>> ---------------------------------------
>>>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
>>>>>> ---------------------------------------
>>>>>> Then let it try all of the other options if and only if this property is NOT set.
>>>>>> 
>>>>>> Jerry
>>>>>> 
>>>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>>>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>>>>>>> 
>>>>>>> public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>>>>>>> 
>>>>>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>>>> 
>>>>>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>>>>>>> 
>>>>>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>>>>>>> 
>>>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>>>>>>> 
>>>>>>>> So.... half the problem is done... we know the culprit. Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>>>>>>> 
>>>>>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>>>> 
>>>>>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>>>>>>> 
>>>>>>>> Still open to other suggestions for quicker workaround.....
>>>>>>>> 
>>>>>>>> Thanks.
>>>>>>>> 
>>>>>>>> Jerry
>>>>>>>> 
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -----
>>>>>>> No virus found in this message.
>>>>>>> Checked by AVG - www.avg.com
>>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>>>>> 
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>> 
>>>>> 
>>>>> 
>>>>> -----
>>>>> No virus found in this message.
>>>>> Checked by AVG - www.avg.com
>>>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>> 
>>>> 
>>>> 
>>>> -----
>>>> No virus found in this message.
>>>> Checked by AVG - www.avg.com
>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>> 
>> 
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <cf...@gmail.com>.
Here is my code. Import the SMTPTransport class, and replace this:

   transport = session.getTransport(outgoingMailServer);

with this:

   transport =  (SMTPTransport) session.getTransport(outgoingMailServer);
   transport.setLocalHost( props.getProperty("mail.smtp.localhost", heloName) );
                        
I added:

          <!-- Set the HELO/EHLO name to use when connectiong to remote SMTP-Server -->
          <mail.smtp.localhost>mail.legacyavatar.com</mail.smtp.localhost>

and I have confirmed that it is being picked up by props.getProperty(“mail.smtp.localhost”).




On Oct 27, 2014, at 1:23 PM, Robert Munn <cf...@gmail.com> wrote:

> Great stuff. I got the build working as well. I don’t like the fact that we’re forcing it to use SMTPTransport, ruling out using other transport providers, but if you look at the section of the code just below there, you see this:
> 
>        // if the transport is a SMTPTransport (from sun) some
>        // performance enhancement can be done.
>        if (transport.getClass().getName().endsWith(".SMTPTransport")) {
> 
> so there is a section that is testing the class and adding extensions already. I might wrap the code in a class name check and only call setLocalHost() if I find org.apache.geronimo.javamail.transport.smtp.SMTPTransport. 
> 
> Also, you only need to import that class, not the entire org.apache.geronimo.javamail.transport.smtp.* package. Better for the memory footprint.
> 
> 
> I will help with jDKIM, I will need to set it up myself. Where to start?
> 
> 
> 
> On Oct 27, 2014, at 12:29 PM, Jerry Malcolm <te...@malcolms.com> wrote:
> 
>> Well, Robert, you get the prize.... It works (finally)!
>> 
>> Two changes required to RemoteDelivery mailet:
>> 
>> Add:
>> import org.apache.geronimo.javamail.transport.smtp.*;
>> 
>> Right after:
>>   transport = session.getTransport(outgoingMailServer);
>> 
>> add:
>> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost( "mail.jwmhosting.com");
>> 
>> or be more generic and get the value from props.
>> 
>> The setLocalHost needs to be right after the object is instantiated since the HELO is sent on one of the first calls to transport.
>> 
>> This fixes it (thank you so much for your help).  But Geronimo is still not following the spec and honoring the property mail.smtp.localhost.  It needs to be fixed in a subsequent release.
>> 
>> Basically everybody using James 3 needs to add this fix to the mailet, at least if running on a Windows server.  Or verify through mail-tester.com that the HELO is correct.  Going back to the orig problem, gmail was not delivering tons of my mail due to this.
>> 
>> Thanks again.
>> 
>> Now.... anybody offer any help on getting jDKIM working?  I've got it implemented and the DNS is set up.  But mail-tester is telling me the signature is invalid.  On to the next problem.....
>> 
>> Jerry
>> 
>> 
>> 
>> 
>> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
>>> The mailet only sees 'transport' which is cast to generic "javax.mail.Transport".   The localhost methods and connection methods are all part of the geronimo impl.  You'll need to cast the transport to the geronimo package for the class, then see if you can get the connection object from the transport.  Might work.  But non-trivial.  I'll play around with that was well.
>>> 
>>> Jerry
>>> 
>>> On 10/27/2014 1:41 PM, Robert Munn wrote:
>>>> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
>>>> 
>>>>    public String getLocalHost() throws MessagingException {
>>>>        if (localHost == null) {
>>>> 
>>>>            try {
>>>>                localHost = InetAddress.getLocalHost().getHostName();
>>>>            } catch (UnknownHostException e) {
>>>>                // fine, we're misconfigured - ignore
>>>>            }
>>>> 
>>>>            if (localHost == null) {
>>>>                localHost = props.getProperty(MAIL_LOCALHOST);
>>>>            }
>>>> 
>>>>            if (localHost == null) {
>>>>                localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>>>            }
>>>> 
>>>>            if (localHost == null) {
>>>>                throw new MessagingException("Can't get local hostname. "
>>>>                        + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
>>>>            }
>>>>        }
>>>> 
>>>>        return localHost;
>>>>    }
>>>> 
>>>>         /**
>>>>     * Explicitly set the local host information.
>>>>     *
>>>>     * @param localHost
>>>>     *            The new localHost name.
>>>>     */
>>>>    public void setLocalHost(String localHost) {
>>>>        this.localHost = localHost;
>>>>    }
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>> 
>>>>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
>>>>> 
>>>>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
>>>>> 
>>>>> The very first thing in the MailConnection.getLocalHost() method should be something like:
>>>>> ---------------------------------------
>>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
>>>>> ---------------------------------------
>>>>> Then let it try all of the other options if and only if this property is NOT set.
>>>>> 
>>>>> Jerry
>>>>> 
>>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>>>>>> 
>>>>>>  public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>>>>>> 
>>>>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>>> 
>>>>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>>>>>> 
>>>>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>>>>>> 
>>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>>>>>> 
>>>>>>> So.... half the problem is done... we know the culprit. Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>>>>>> 
>>>>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>>> 
>>>>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>>>>>> 
>>>>>>> Still open to other suggestions for quicker workaround.....
>>>>>>> 
>>>>>>> Thanks.
>>>>>>> 
>>>>>>> Jerry
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -----
>>>>>> No virus found in this message.
>>>>>> Checked by AVG - www.avg.com
>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>>>> 
>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>> 
>>>> 
>>>> 
>>>> -----
>>>> No virus found in this message.
>>>> Checked by AVG - www.avg.com
>>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>> 
>>> 
>>> 
>>> -----
>>> No virus found in this message.
>>> Checked by AVG - www.avg.com
>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>> 
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <cf...@gmail.com>.
Great stuff. I got the build working as well. I don’t like the fact that we’re forcing it to use SMTPTransport, ruling out using other transport providers, but if you look at the section of the code just below there, you see this:

        // if the transport is a SMTPTransport (from sun) some
        // performance enhancement can be done.
        if (transport.getClass().getName().endsWith(".SMTPTransport")) {

so there is a section that is testing the class and adding extensions already. I might wrap the code in a class name check and only call setLocalHost() if I find org.apache.geronimo.javamail.transport.smtp.SMTPTransport. 

Also, you only need to import that class, not the entire org.apache.geronimo.javamail.transport.smtp.* package. Better for the memory footprint.


I will help with jDKIM, I will need to set it up myself. Where to start?



On Oct 27, 2014, at 12:29 PM, Jerry Malcolm <te...@malcolms.com> wrote:

> Well, Robert, you get the prize.... It works (finally)!
> 
> Two changes required to RemoteDelivery mailet:
> 
> Add:
> import org.apache.geronimo.javamail.transport.smtp.*;
> 
> Right after:
>    transport = session.getTransport(outgoingMailServer);
> 
> add:
> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost( "mail.jwmhosting.com");
> 
> or be more generic and get the value from props.
> 
> The setLocalHost needs to be right after the object is instantiated since the HELO is sent on one of the first calls to transport.
> 
> This fixes it (thank you so much for your help).  But Geronimo is still not following the spec and honoring the property mail.smtp.localhost.  It needs to be fixed in a subsequent release.
> 
> Basically everybody using James 3 needs to add this fix to the mailet, at least if running on a Windows server.  Or verify through mail-tester.com that the HELO is correct.  Going back to the orig problem, gmail was not delivering tons of my mail due to this.
> 
> Thanks again.
> 
> Now.... anybody offer any help on getting jDKIM working?  I've got it implemented and the DNS is set up.  But mail-tester is telling me the signature is invalid.  On to the next problem.....
> 
> Jerry
> 
> 
> 
> 
> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
>> The mailet only sees 'transport' which is cast to generic "javax.mail.Transport".   The localhost methods and connection methods are all part of the geronimo impl.  You'll need to cast the transport to the geronimo package for the class, then see if you can get the connection object from the transport.  Might work.  But non-trivial.  I'll play around with that was well.
>> 
>> Jerry
>> 
>> On 10/27/2014 1:41 PM, Robert Munn wrote:
>>> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
>>> 
>>>     public String getLocalHost() throws MessagingException {
>>>         if (localHost == null) {
>>> 
>>>             try {
>>>                 localHost = InetAddress.getLocalHost().getHostName();
>>>             } catch (UnknownHostException e) {
>>>                 // fine, we're misconfigured - ignore
>>>             }
>>> 
>>>             if (localHost == null) {
>>>                 localHost = props.getProperty(MAIL_LOCALHOST);
>>>             }
>>> 
>>>             if (localHost == null) {
>>>                 localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>>             }
>>> 
>>>             if (localHost == null) {
>>>                 throw new MessagingException("Can't get local hostname. "
>>>                         + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
>>>             }
>>>         }
>>> 
>>>         return localHost;
>>>     }
>>> 
>>>          /**
>>>      * Explicitly set the local host information.
>>>      *
>>>      * @param localHost
>>>      *            The new localHost name.
>>>      */
>>>     public void setLocalHost(String localHost) {
>>>         this.localHost = localHost;
>>>     }
>>> 
>>> 
>>> 
>>> 
>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>> 
>>>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
>>>> 
>>>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
>>>> 
>>>> The very first thing in the MailConnection.getLocalHost() method should be something like:
>>>> ---------------------------------------
>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
>>>> ---------------------------------------
>>>> Then let it try all of the other options if and only if this property is NOT set.
>>>> 
>>>> Jerry
>>>> 
>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>>>>> 
>>>>>   public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>>>>> 
>>>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>>> 
>>>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>>>>> 
>>>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>>>>> 
>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>>>>> 
>>>>>> So.... half the problem is done... we know the culprit. Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>>>>> 
>>>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>> 
>>>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>>>>> 
>>>>>> Still open to other suggestions for quicker workaround.....
>>>>>> 
>>>>>> Thanks.
>>>>>> 
>>>>>> Jerry
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>> 
>>>>> 
>>>>> 
>>>>> -----
>>>>> No virus found in this message.
>>>>> Checked by AVG - www.avg.com
>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>> 
>>> 
>>> 
>>> -----
>>> No virus found in this message.
>>> Checked by AVG - www.avg.com
>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>> 
>> 
>> 
>> -----
>> No virus found in this message.
>> Checked by AVG - www.avg.com
>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <cf...@gmail.com>.
Last followup about this subject for now. I did some digging into Geronimo Javamail. There is a newer version, but the implementation has not changed, and I don’t think it is regarded as a bug. I don’t see in the docs where mail.smtp.localhost is supposed to preempt the InetAddress.getLocalHost().getHostName() method call. Jerry, if you could point me in the right direction that would be great.

I also did some digging about InetAddress.getLocalHost().getHostName()  and found no clear answer that it is the “accepted” way to get the hostname, for exactly the reason that we have encountered - too many ways for the configuration (DNS, etc.) to foul up the works. There is also a discussion that has me thinking getCanonicalHostName() should be the method called because it will try to get the FQDN, where getHostName() is clearly just grabbing the local server name. 

http://stackoverflow.com/questions/7348711/recommended-way-to-get-hostname-in-java/7800008#7800008

http://stackoverflow.com/questions/12669076/host-name-vs-canonical-host-name

I agree with you that MailConnection.java should check for “mail.smtp.localhost" in properties first, but it looks like the property being used in Geronimo is “localhost”, so I don’t know whether it is worth pursing a fix at this time. I may run it by the Geronimo mailing list to see if anyone has run into this issue.






On Oct 27, 2014, at 7:50 PM, Robert Munn <cf...@gmail.com> wrote:

> A couple of additional notes. This issue appeared on Ubuntu as well, so it
> is not just a windows issue.
> 
> On the  good side, the version of Geronimo java mail in the app is fairly
> old, so this bug may be fixed already.
> On Oct 27, 2014 12:29 PM, "Jerry Malcolm" <te...@malcolms.com> wrote:
> 
>> Well, Robert, you get the prize.... It works (finally)!
>> 
>> Two changes required to RemoteDelivery mailet:
>> 
>> Add:
>> import org.apache.geronimo.javamail.transport.smtp.*;
>> 
>> Right after:
>>    transport = session.getTransport(outgoingMailServer);
>> 
>> add:
>> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost(
>> "mail.jwmhosting.com");
>> 
>> or be more generic and get the value from props.
>> 
>> The setLocalHost needs to be right after the object is instantiated since
>> the HELO is sent on one of the first calls to transport.
>> 
>> This fixes it (thank you so much for your help).  But Geronimo is still
>> not following the spec and honoring the property mail.smtp.localhost.  It
>> needs to be fixed in a subsequent release.
>> 
>> Basically everybody using James 3 needs to add this fix to the mailet, at
>> least if running on a Windows server.  Or verify through mail-tester.com
>> that the HELO is correct.  Going back to the orig problem, gmail was not
>> delivering tons of my mail due to this.
>> 
>> Thanks again.
>> 
>> Now.... anybody offer any help on getting jDKIM working?  I've got it
>> implemented and the DNS is set up.  But mail-tester is telling me the
>> signature is invalid.  On to the next problem.....
>> 
>> Jerry
>> 
>> 
>> 
>> 
>> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
>> 
>>> The mailet only sees 'transport' which is cast to generic
>>> "javax.mail.Transport".   The localhost methods and connection methods are
>>> all part of the geronimo impl.  You'll need to cast the transport to the
>>> geronimo package for the class, then see if you can get the connection
>>> object from the transport.  Might work.  But non-trivial.  I'll play around
>>> with that was well.
>>> 
>>> Jerry
>>> 
>>> On 10/27/2014 1:41 PM, Robert Munn wrote:
>>> 
>>>> Here is the base code. Note localHost is a property of the
>>>> MailConnection class. Note also that there is a setLocalHost() method. I am
>>>> going to try setting the localhost property from RemoteDelivery using
>>>> setLocalHost( localHost ).
>>>> 
>>>>     public String getLocalHost() throws MessagingException {
>>>>         if (localHost == null) {
>>>> 
>>>>             try {
>>>>                 localHost = InetAddress.getLocalHost().getHostName();
>>>>             } catch (UnknownHostException e) {
>>>>                 // fine, we're misconfigured - ignore
>>>>             }
>>>> 
>>>>             if (localHost == null) {
>>>>                 localHost = props.getProperty(MAIL_LOCALHOST);
>>>>             }
>>>> 
>>>>             if (localHost == null) {
>>>>                 localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>>>             }
>>>> 
>>>>             if (localHost == null) {
>>>>                 throw new MessagingException("Can't get local hostname.
>>>> "
>>>>                         + " Please correctly configure JDK/DNS or set
>>>> mail.smtp.localhost");
>>>>             }
>>>>         }
>>>> 
>>>>         return localHost;
>>>>     }
>>>> 
>>>>          /**
>>>>      * Explicitly set the local host information.
>>>>      *
>>>>      * @param localHost
>>>>      *            The new localHost name.
>>>>      */
>>>>     public void setLocalHost(String localHost) {
>>>>         this.localHost = localHost;
>>>>     }
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com>
>>>> wrote:
>>>> 
>>>> mailet calls 'transport' which is an "SMTPTransport" instance.
>>>>> SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from
>>>>> MailConnection.getLocalHost().
>>>>> 
>>>>> That method returns the InetAddress().getLocalHost().getHostName()
>>>>> first.  According to the spec, that should only occur IF the property
>>>>> mail.smtp.localhost is not set.  So i think the fix should be in that
>>>>> method.
>>>>> 
>>>>> The very first thing in the MailConnection.getLocalHost() method should
>>>>> be something like:
>>>>> ---------------------------------------
>>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return(
>>>>> props.getProperty( "mail.smtp.localhost" ));
>>>>> ---------------------------------------
>>>>> Then let it try all of the other options if and only if this property
>>>>> is NOT set.
>>>>> 
>>>>> Jerry
>>>>> 
>>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>>> 
>>>>>> More info. SMPTConnection.java extends MailConnection.java which has a
>>>>>> method with this signature:
>>>>>> 
>>>>>>   public boolean protocolConnect(String host, int port, String
>>>>>> username, String password) throws MessagingException
>>>>>> 
>>>>>> If you fail to pass ‘host’ as an argument to the method, the host
>>>>>> defaults to ‘localhost’. A patch could be made there. A better patch would
>>>>>> be to find the upstream code that is calling this method and patch it to
>>>>>> send the correct hostname. I am hunting for that location, please let me
>>>>>> know if you have any suggestions...
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com>
>>>>>> wrote:
>>>>>> 
>>>>>> Thanks for jumping in and investigating.  This has gone from ugly to
>>>>>>> horrible....  I think I have found the culprit.
>>>>>>> 
>>>>>>> I first had to figure out who is providing the class for
>>>>>>> SMTPTransport.   figured out that the package for SMTPTransport is:
>>>>>>> org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base
>>>>>>> JVM implementation.... It's apache, and I am about to withdraw my statement
>>>>>>> that 'surely the transport class couldn't be ignoring a property".....
>>>>>>> 
>>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which
>>>>>>> actually returns the localhost name.  And... no surprise at this point, it
>>>>>>> totally ignores the mail.smtp.localhost property. The property doesn't even
>>>>>>> appear anywher in the class.  First line in getLocalHost() pulls the
>>>>>>> InetAddress.getLocalHost().getHostName() value.
>>>>>>> 
>>>>>>> So.... half the problem is done... we know the culprit. Now I guess
>>>>>>> (oh joy....) I get to download the whole geronimo package, set up a build
>>>>>>> process, fix the code, and replace the jar on my server. (yuck).
>>>>>>> 
>>>>>>> That is... unless someone already has a VERY quick way to patch and
>>>>>>> rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>>> 
>>>>>>> In the meantime, I will also try adding that JVM parameter to try to
>>>>>>> override the Win Server machine name.
>>>>>>> 
>>>>>>> Still open to other suggestions for quicker workaround.....
>>>>>>> 
>>>>>>> Thanks.
>>>>>>> 
>>>>>>> Jerry
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> -----
>>>>>> No virus found in this message.
>>>>>> Checked by AVG - www.avg.com
>>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date:
>>>>>> 10/27/14
>>>>>> 
>>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> -----
>>>> No virus found in this message.
>>>> Checked by AVG - www.avg.com
>>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>>>> 
>>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>> 
>>> 
>>> 
>>> -----
>>> No virus found in this message.
>>> Checked by AVG - www.avg.com
>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>> 
>> 


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


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <cf...@gmail.com>.
A couple of additional notes. This issue appeared on Ubuntu as well, so it
is not just a windows issue.

On the  good side, the version of Geronimo java mail in the app is fairly
old, so this bug may be fixed already.
On Oct 27, 2014 12:29 PM, "Jerry Malcolm" <te...@malcolms.com> wrote:

> Well, Robert, you get the prize.... It works (finally)!
>
> Two changes required to RemoteDelivery mailet:
>
> Add:
> import org.apache.geronimo.javamail.transport.smtp.*;
>
> Right after:
>     transport = session.getTransport(outgoingMailServer);
>
> add:
> ((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost(
> "mail.jwmhosting.com");
>
> or be more generic and get the value from props.
>
> The setLocalHost needs to be right after the object is instantiated since
> the HELO is sent on one of the first calls to transport.
>
> This fixes it (thank you so much for your help).  But Geronimo is still
> not following the spec and honoring the property mail.smtp.localhost.  It
> needs to be fixed in a subsequent release.
>
> Basically everybody using James 3 needs to add this fix to the mailet, at
> least if running on a Windows server.  Or verify through mail-tester.com
> that the HELO is correct.  Going back to the orig problem, gmail was not
> delivering tons of my mail due to this.
>
> Thanks again.
>
> Now.... anybody offer any help on getting jDKIM working?  I've got it
> implemented and the DNS is set up.  But mail-tester is telling me the
> signature is invalid.  On to the next problem.....
>
> Jerry
>
>
>
>
> On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
>
>> The mailet only sees 'transport' which is cast to generic
>> "javax.mail.Transport".   The localhost methods and connection methods are
>> all part of the geronimo impl.  You'll need to cast the transport to the
>> geronimo package for the class, then see if you can get the connection
>> object from the transport.  Might work.  But non-trivial.  I'll play around
>> with that was well.
>>
>> Jerry
>>
>> On 10/27/2014 1:41 PM, Robert Munn wrote:
>>
>>> Here is the base code. Note localHost is a property of the
>>> MailConnection class. Note also that there is a setLocalHost() method. I am
>>> going to try setting the localhost property from RemoteDelivery using
>>> setLocalHost( localHost ).
>>>
>>>      public String getLocalHost() throws MessagingException {
>>>          if (localHost == null) {
>>>
>>>              try {
>>>                  localHost = InetAddress.getLocalHost().getHostName();
>>>              } catch (UnknownHostException e) {
>>>                  // fine, we're misconfigured - ignore
>>>              }
>>>
>>>              if (localHost == null) {
>>>                  localHost = props.getProperty(MAIL_LOCALHOST);
>>>              }
>>>
>>>              if (localHost == null) {
>>>                  localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>>              }
>>>
>>>              if (localHost == null) {
>>>                  throw new MessagingException("Can't get local hostname.
>>> "
>>>                          + " Please correctly configure JDK/DNS or set
>>> mail.smtp.localhost");
>>>              }
>>>          }
>>>
>>>          return localHost;
>>>      }
>>>
>>>           /**
>>>       * Explicitly set the local host information.
>>>       *
>>>       * @param localHost
>>>       *            The new localHost name.
>>>       */
>>>      public void setLocalHost(String localHost) {
>>>          this.localHost = localHost;
>>>      }
>>>
>>>
>>>
>>>
>>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com>
>>> wrote:
>>>
>>>  mailet calls 'transport' which is an "SMTPTransport" instance.
>>>> SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from
>>>> MailConnection.getLocalHost().
>>>>
>>>> That method returns the InetAddress().getLocalHost().getHostName()
>>>> first.  According to the spec, that should only occur IF the property
>>>> mail.smtp.localhost is not set.  So i think the fix should be in that
>>>> method.
>>>>
>>>> The very first thing in the MailConnection.getLocalHost() method should
>>>> be something like:
>>>> ---------------------------------------
>>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return(
>>>> props.getProperty( "mail.smtp.localhost" ));
>>>> ---------------------------------------
>>>> Then let it try all of the other options if and only if this property
>>>> is NOT set.
>>>>
>>>> Jerry
>>>>
>>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>>
>>>>> More info. SMPTConnection.java extends MailConnection.java which has a
>>>>> method with this signature:
>>>>>
>>>>>    public boolean protocolConnect(String host, int port, String
>>>>> username, String password) throws MessagingException
>>>>>
>>>>> If you fail to pass ‘host’ as an argument to the method, the host
>>>>> defaults to ‘localhost’. A patch could be made there. A better patch would
>>>>> be to find the upstream code that is calling this method and patch it to
>>>>> send the correct hostname. I am hunting for that location, please let me
>>>>> know if you have any suggestions...
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com>
>>>>> wrote:
>>>>>
>>>>>  Thanks for jumping in and investigating.  This has gone from ugly to
>>>>>> horrible....  I think I have found the culprit.
>>>>>>
>>>>>> I first had to figure out who is providing the class for
>>>>>> SMTPTransport.   figured out that the package for SMTPTransport is:
>>>>>> org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base
>>>>>> JVM implementation.... It's apache, and I am about to withdraw my statement
>>>>>> that 'surely the transport class couldn't be ignoring a property".....
>>>>>>
>>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which
>>>>>> actually returns the localhost name.  And... no surprise at this point, it
>>>>>> totally ignores the mail.smtp.localhost property. The property doesn't even
>>>>>> appear anywher in the class.  First line in getLocalHost() pulls the
>>>>>> InetAddress.getLocalHost().getHostName() value.
>>>>>>
>>>>>> So.... half the problem is done... we know the culprit. Now I guess
>>>>>> (oh joy....) I get to download the whole geronimo package, set up a build
>>>>>> process, fix the code, and replace the jar on my server. (yuck).
>>>>>>
>>>>>> That is... unless someone already has a VERY quick way to patch and
>>>>>> rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>>
>>>>>> In the meantime, I will also try adding that JVM parameter to try to
>>>>>> override the Win Server machine name.
>>>>>>
>>>>>> Still open to other suggestions for quicker workaround.....
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> Jerry
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> -----
>>>>> No virus found in this message.
>>>>> Checked by AVG - www.avg.com
>>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date:
>>>>> 10/27/14
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>
>>>
>>>
>>>
>>> -----
>>> No virus found in this message.
>>> Checked by AVG - www.avg.com
>>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>>
>>
>> -----
>> No virus found in this message.
>> Checked by AVG - www.avg.com
>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
>

Re: James 3 b4 HELO Override Not Working?

Posted by Jerry Malcolm <te...@malcolms.com>.
Well, Robert, you get the prize.... It works (finally)!

Two changes required to RemoteDelivery mailet:

Add:
import org.apache.geronimo.javamail.transport.smtp.*;

Right after:
     transport = session.getTransport(outgoingMailServer);

add:
((org.apache.geronimo.javamail.transport.smtp.SMTPTransport)transport).setLocalHost( 
"mail.jwmhosting.com");

or be more generic and get the value from props.

The setLocalHost needs to be right after the object is instantiated 
since the HELO is sent on one of the first calls to transport.

This fixes it (thank you so much for your help).  But Geronimo is still 
not following the spec and honoring the property mail.smtp.localhost.  
It needs to be fixed in a subsequent release.

Basically everybody using James 3 needs to add this fix to the mailet, 
at least if running on a Windows server.  Or verify through 
mail-tester.com that the HELO is correct.  Going back to the orig 
problem, gmail was not delivering tons of my mail due to this.

Thanks again.

Now.... anybody offer any help on getting jDKIM working?  I've got it 
implemented and the DNS is set up.  But mail-tester is telling me the 
signature is invalid.  On to the next problem.....

Jerry




On 10/27/2014 2:00 PM, Jerry Malcolm wrote:
> The mailet only sees 'transport' which is cast to generic 
> "javax.mail.Transport".   The localhost methods and connection methods 
> are all part of the geronimo impl.  You'll need to cast the transport 
> to the geronimo package for the class, then see if you can get the 
> connection object from the transport.  Might work.  But non-trivial.  
> I'll play around with that was well.
>
> Jerry
>
> On 10/27/2014 1:41 PM, Robert Munn wrote:
>> Here is the base code. Note localHost is a property of the 
>> MailConnection class. Note also that there is a setLocalHost() 
>> method. I am going to try setting the localhost property from 
>> RemoteDelivery using setLocalHost( localHost ).
>>
>>      public String getLocalHost() throws MessagingException {
>>          if (localHost == null) {
>>
>>              try {
>>                  localHost = InetAddress.getLocalHost().getHostName();
>>              } catch (UnknownHostException e) {
>>                  // fine, we're misconfigured - ignore
>>              }
>>
>>              if (localHost == null) {
>>                  localHost = props.getProperty(MAIL_LOCALHOST);
>>              }
>>
>>              if (localHost == null) {
>>                  localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>              }
>>
>>              if (localHost == null) {
>>                  throw new MessagingException("Can't get local 
>> hostname. "
>>                          + " Please correctly configure JDK/DNS or 
>> set mail.smtp.localhost");
>>              }
>>          }
>>
>>          return localHost;
>>      }
>>
>>           /**
>>       * Explicitly set the local host information.
>>       *
>>       * @param localHost
>>       *            The new localHost name.
>>       */
>>      public void setLocalHost(String localHost) {
>>          this.localHost = localHost;
>>      }
>>
>>
>>
>>
>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> 
>> wrote:
>>
>>> mailet calls 'transport' which is an "SMTPTransport" instance. 
>>> SMTPTransport calls SMTPConnection.getLocalHost() which is inherited 
>>> from MailConnection.getLocalHost().
>>>
>>> That method returns the InetAddress().getLocalHost().getHostName() 
>>> first.  According to the spec, that should only occur IF the 
>>> property mail.smtp.localhost is not set.  So i think the fix should 
>>> be in that method.
>>>
>>> The very first thing in the MailConnection.getLocalHost() method 
>>> should be something like:
>>> ---------------------------------------
>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( 
>>> props.getProperty( "mail.smtp.localhost" ));
>>> ---------------------------------------
>>> Then let it try all of the other options if and only if this 
>>> property is NOT set.
>>>
>>> Jerry
>>>
>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>> More info. SMPTConnection.java extends MailConnection.java which 
>>>> has a method with this signature:
>>>>
>>>>    public boolean protocolConnect(String host, int port, String 
>>>> username, String password) throws MessagingException
>>>>
>>>> If you fail to pass ‘host’ as an argument to the method, the host 
>>>> defaults to ‘localhost’. A patch could be made there. A better 
>>>> patch would be to find the upstream code that is calling this 
>>>> method and patch it to send the correct hostname. I am hunting for 
>>>> that location, please let me know if you have any suggestions...
>>>>
>>>>
>>>>
>>>>
>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm 
>>>> <te...@malcolms.com> wrote:
>>>>
>>>>> Thanks for jumping in and investigating.  This has gone from ugly 
>>>>> to horrible....  I think I have found the culprit.
>>>>>
>>>>> I first had to figure out who is providing the class for 
>>>>> SMTPTransport.   figured out that the package for SMTPTransport 
>>>>> is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a 
>>>>> base JVM implementation.... It's apache, and I am about to 
>>>>> withdraw my statement that 'surely the transport class couldn't be 
>>>>> ignoring a property".....
>>>>>
>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which 
>>>>> actually returns the localhost name.  And... no surprise at this 
>>>>> point, it totally ignores the mail.smtp.localhost property. The 
>>>>> property doesn't even appear anywher in the class.  First line in 
>>>>> getLocalHost() pulls the InetAddress.getLocalHost().getHostName() 
>>>>> value.
>>>>>
>>>>> So.... half the problem is done... we know the culprit. Now I 
>>>>> guess (oh joy....) I get to download the whole geronimo package, 
>>>>> set up a build process, fix the code, and replace the jar on my 
>>>>> server. (yuck).
>>>>>
>>>>> That is... unless someone already has a VERY quick way to patch 
>>>>> and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>>
>>>>> In the meantime, I will also try adding that JVM parameter to try 
>>>>> to override the Win Server machine name.
>>>>>
>>>>> Still open to other suggestions for quicker workaround.....
>>>>>
>>>>> Thanks.
>>>>>
>>>>> Jerry
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>
>>>>
>>>>
>>>> -----
>>>> No virus found in this message.
>>>> Checked by AVG - www.avg.com
>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 
>>>> 10/27/14
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>>
>>
>> -----
>> No virus found in this message.
>> Checked by AVG - www.avg.com
>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 
>> 10/27/14
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14


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


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
I may have a good build, stand by. I got the transport cast as SMTPTransport. The code will need some polishing, let’s see first if it works.

On Oct 27, 2014, at 12:00 PM, Jerry Malcolm <te...@malcolms.com> wrote:

> The mailet only sees 'transport' which is cast to generic "javax.mail.Transport".   The localhost methods and connection methods are all part of the geronimo impl.  You'll need to cast the transport to the geronimo package for the class, then see if you can get the connection object from the transport.  Might work.  But non-trivial.  I'll play around with that was well.
> 
> Jerry
> 
> On 10/27/2014 1:41 PM, Robert Munn wrote:
>> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
>> 
>>     public String getLocalHost() throws MessagingException {
>>         if (localHost == null) {
>> 
>>             try {
>>                 localHost = InetAddress.getLocalHost().getHostName();
>>             } catch (UnknownHostException e) {
>>                 // fine, we're misconfigured - ignore
>>             }
>> 
>>             if (localHost == null) {
>>                 localHost = props.getProperty(MAIL_LOCALHOST);
>>             }
>> 
>>             if (localHost == null) {
>>                 localHost = props.getSessionProperty(MAIL_LOCALHOST);
>>             }
>> 
>>             if (localHost == null) {
>>                 throw new MessagingException("Can't get local hostname. "
>>                         + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
>>             }
>>         }
>> 
>>         return localHost;
>>     }
>> 
>>          /**
>>      * Explicitly set the local host information.
>>      *
>>      * @param localHost
>>      *            The new localHost name.
>>      */
>>     public void setLocalHost(String localHost) {
>>         this.localHost = localHost;
>>     }
>> 
>> 
>> 
>> 
>> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>> 
>>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
>>> 
>>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
>>> 
>>> The very first thing in the MailConnection.getLocalHost()  method should be something like:
>>> ---------------------------------------
>>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
>>> ---------------------------------------
>>> Then let it try all of the other options if and only if this property is NOT set.
>>> 
>>> Jerry
>>> 
>>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>>>> 
>>>>   public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>>>> 
>>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>> 
>>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>>>> 
>>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>>>> 
>>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>>>> 
>>>>> So.... half the problem is done... we know the culprit.  Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>>>> 
>>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>> 
>>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>>>> 
>>>>> Still open to other suggestions for quicker workaround.....
>>>>> 
>>>>> Thanks.
>>>>> 
>>>>> Jerry
>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>> 
>>>> 
>>>> 
>>>> -----
>>>> No virus found in this message.
>>>> Checked by AVG - www.avg.com
>>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>> 
>> 
>> 
>> -----
>> No virus found in this message.
>> Checked by AVG - www.avg.com
>> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
> 


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


Re: James 3 b4 HELO Override Not Working?

Posted by Jerry Malcolm <te...@malcolms.com>.
The mailet only sees 'transport' which is cast to generic 
"javax.mail.Transport".   The localhost methods and connection methods 
are all part of the geronimo impl.  You'll need to cast the transport to 
the geronimo package for the class, then see if you can get the 
connection object from the transport.  Might work.  But non-trivial.  
I'll play around with that was well.

Jerry

On 10/27/2014 1:41 PM, Robert Munn wrote:
> Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).
>
>      public String getLocalHost() throws MessagingException {
>          if (localHost == null) {
>
>              try {
>                  localHost = InetAddress.getLocalHost().getHostName();
>              } catch (UnknownHostException e) {
>                  // fine, we're misconfigured - ignore
>              }
>
>              if (localHost == null) {
>                  localHost = props.getProperty(MAIL_LOCALHOST);
>              }
>
>              if (localHost == null) {
>                  localHost = props.getSessionProperty(MAIL_LOCALHOST);
>              }
>
>              if (localHost == null) {
>                  throw new MessagingException("Can't get local hostname. "
>                          + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
>              }
>          }
>
>          return localHost;
>      }
>
>      
>      /**
>       * Explicitly set the local host information.
>       *
>       * @param localHost
>       *            The new localHost name.
>       */
>      public void setLocalHost(String localHost) {
>          this.localHost = localHost;
>      }
>
>
>
>
> On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>
>> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
>>
>> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
>>
>> The very first thing in the MailConnection.getLocalHost()  method should be something like:
>> ---------------------------------------
>> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
>> ---------------------------------------
>> Then let it try all of the other options if and only if this property is NOT set.
>>
>> Jerry
>>
>> On 10/27/2014 1:07 PM, Robert Munn wrote:
>>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>>>
>>>    public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>>>
>>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>>>
>>>
>>>
>>>
>>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>>>
>>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>>>
>>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>>>
>>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>>>
>>>> So.... half the problem is done... we know the culprit.  Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>>>
>>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>>>
>>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>>>
>>>> Still open to other suggestions for quicker workaround.....
>>>>
>>>> Thanks.
>>>>
>>>> Jerry
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>
>>>
>>>
>>> -----
>>> No virus found in this message.
>>> Checked by AVG - www.avg.com
>>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2015.0.5315 / Virus Database: 4189/8463 - Release Date: 10/27/14
>


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


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
Here is the base code. Note localHost is a property of the MailConnection class. Note also that there is a setLocalHost() method. I am going to try setting the localhost property from RemoteDelivery using setLocalHost( localHost ).

    public String getLocalHost() throws MessagingException {
        if (localHost == null) {

            try {
                localHost = InetAddress.getLocalHost().getHostName();
            } catch (UnknownHostException e) {
                // fine, we're misconfigured - ignore
            }

            if (localHost == null) {
                localHost = props.getProperty(MAIL_LOCALHOST);
            }

            if (localHost == null) {
                localHost = props.getSessionProperty(MAIL_LOCALHOST);
            }

            if (localHost == null) {
                throw new MessagingException("Can't get local hostname. "
                        + " Please correctly configure JDK/DNS or set mail.smtp.localhost");
            }
        }

        return localHost;
    }

    
    /**
     * Explicitly set the local host information.
     *
     * @param localHost
     *            The new localHost name.
     */
    public void setLocalHost(String localHost) {
        this.localHost = localHost;
    }




On Oct 27, 2014, at 11:28 AM, Jerry Malcolm <te...@malcolms.com> wrote:

> mailet calls 'transport' which is an "SMTPTransport" instance. SMTPTransport calls SMTPConnection.getLocalHost() which is inherited from MailConnection.getLocalHost().
> 
> That method returns the InetAddress().getLocalHost().getHostName() first.  According to the spec, that should only occur IF the property mail.smtp.localhost is not set.  So i think the fix should be in that method.
> 
> The very first thing in the MailConnection.getLocalHost()  method should be something like:
> ---------------------------------------
> if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( props.getProperty( "mail.smtp.localhost" ));
> ---------------------------------------
> Then let it try all of the other options if and only if this property is NOT set.
> 
> Jerry
> 
> On 10/27/2014 1:07 PM, Robert Munn wrote:
>> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>> 
>>   public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>> 
>> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>> 
>> 
>> 
>> 
>> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>> 
>>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>> 
>>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>> 
>>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>> 
>>> So.... half the problem is done... we know the culprit.  Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>> 
>>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>> 
>>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>> 
>>> Still open to other suggestions for quicker workaround.....
>>> 
>>> Thanks.
>>> 
>>> Jerry
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>> 
>> 
>> 
>> 
>> -----
>> No virus found in this message.
>> Checked by AVG - www.avg.com
>> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org


Re: James 3 b4 HELO Override Not Working?

Posted by Jerry Malcolm <te...@malcolms.com>.
mailet calls 'transport' which is an "SMTPTransport" instance. 
SMTPTransport calls SMTPConnection.getLocalHost() which is inherited 
from MailConnection.getLocalHost().

That method returns the InetAddress().getLocalHost().getHostName() 
first.  According to the spec, that should only occur IF the property 
mail.smtp.localhost is not set.  So i think the fix should be in that 
method.

The very first thing in the MailConnection.getLocalHost()  method should 
be something like:
---------------------------------------
if ( props.getProperty( "mail.smtp.localhost" ) != null ) return( 
props.getProperty( "mail.smtp.localhost" ));
---------------------------------------
Then let it try all of the other options if and only if this property is 
NOT set.

Jerry

On 10/27/2014 1:07 PM, Robert Munn wrote:
> More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:
>
>    public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException
>
> If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...
>
>
>
>
> On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:
>
>> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
>>
>> I first had to figure out who is providing the class for SMTPTransport.   figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
>>
>> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
>>
>> So.... half the problem is done... we know the culprit.  Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
>>
>> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
>>
>> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
>>
>> Still open to other suggestions for quicker workaround.....
>>
>> Thanks.
>>
>> Jerry
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2015.0.5315 / Virus Database: 4189/8462 - Release Date: 10/27/14
>


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


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
More info. SMPTConnection.java extends MailConnection.java which has a method with this signature:

  public boolean protocolConnect(String host, int port, String username, String password) throws MessagingException

If you fail to pass ‘host’ as an argument to the method, the host defaults to ‘localhost’. A patch could be made there. A better patch would be to find the upstream code that is calling this method and patch it to send the correct hostname. I am hunting for that location, please let me know if you have any suggestions...




On Oct 27, 2014, at 10:25 AM, Jerry Malcolm <te...@malcolms.com> wrote:

> Thanks for jumping in and investigating.  This has gone from ugly to horrible....  I think I have found the culprit.
> 
> I first had to figure out who is providing the class for SMTPTransport.  I figured out that the package for SMTPTransport is: org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM implementation.... It's apache, and I am about to withdraw my statement that 'surely the transport class couldn't be ignoring a property".....
> 
> Geronimo's SMTPTransport.java uses a class SMTPConnection which actually returns the localhost name.  And... no surprise at this point, it totally ignores the mail.smtp.localhost property. The property doesn't even appear anywher in the class.  First line in getLocalHost() pulls the InetAddress.getLocalHost().getHostName() value.
> 
> So.... half the problem is done... we know the culprit.  Now I guess (oh joy....) I get to download the whole geronimo package, set up a build process, fix the code, and replace the jar on my server. (yuck).
> 
> That is... unless someone already has a VERY quick way to patch and rebuild geronimo.....  Looking for volunteers.... :-)
> 
> In the meantime, I will also try adding that JVM parameter to try to override the Win Server machine name.
> 
> Still open to other suggestions for quicker workaround.....
> 
> Thanks.
> 
> Jerry
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Jerry Malcolm <te...@malcolms.com>.
Thanks for jumping in and investigating.  This has gone from ugly to 
horrible....  I think I have found the culprit.

I first had to figure out who is providing the class for SMTPTransport.  
I figured out that the package for SMTPTransport is: 
org.apache.geronimo.javamail.transport.smtp.  So it is NOT a base JVM 
implementation.... It's apache, and I am about to withdraw my statement 
that 'surely the transport class couldn't be ignoring a property".....

Geronimo's SMTPTransport.java uses a class SMTPConnection which actually 
returns the localhost name.  And... no surprise at this point, it 
totally ignores the mail.smtp.localhost property. The property doesn't 
even appear anywher in the class.  First line in getLocalHost() pulls 
the InetAddress.getLocalHost().getHostName() value.

So.... half the problem is done... we know the culprit.  Now I guess (oh 
joy....) I get to download the whole geronimo package, set up a build 
process, fix the code, and replace the jar on my server. (yuck).

That is... unless someone already has a VERY quick way to patch and 
rebuild geronimo.....  Looking for volunteers.... :-)

In the meantime, I will also try adding that JVM parameter to try to 
override the Win Server machine name.

Still open to other suggestions for quicker workaround.....

Thanks.

Jerry

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


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
well, this looks like it is hard-coded in AbstractConfigurableAsyncServer.java in the trunk code,

    /**
     * Configure the helloName for the given Configuration
     * 
     * @param handlerConfiguration
     * @throws ConfigurationException
     */
    protected void configureHelloName(Configuration handlerConfiguration) throws ConfigurationException {
        StringBuilder infoBuffer;
        String hostName;
        try {
            hostName = InetAddress.getLocalHost().getHostName();
        } catch (UnknownHostException ue) {
            hostName = "localhost";
        }

        infoBuffer = new StringBuilder(64).append(getServiceType()).append(" is running on: ").append(hostName);
        getLogger().info(infoBuffer.toString());

        boolean autodetect = handlerConfiguration.getBoolean(HELLO_NAME + ".[@autodetect]", true);
        if (autodetect) {
            helloName = hostName;
        } else {
            helloName = handlerConfiguration.getString(HELLO_NAME);
            if (helloName == null || helloName.trim().length() < 1) {
                throw new ConfigurationException("Please configure the helloName or use autodetect");
            }
        }

        infoBuffer = new StringBuilder(64).append(getServiceType()).append(" handler hello name is: ").append(helloName);
        getLogger().info(infoBuffer.toString());
    }

I am looking at a fix for this, but I am not an expert in this codebase either. 




On Oct 27, 2014, at 9:07 AM, Robert Munn <ro...@gmail.com> wrote:

> hmm, wait, that isn’t working . another check ...
> 
> On Oct 27, 2014, at 1:51 AM, Robert Munn <ro...@gmail.com> wrote:
> 
>> Your rDNS: mail.jwmhosting.com looks correct to me.
>> 
>> I just did a telnet check of your smtp server:
>> 
>> $ telnet
>> telnet > open mail.jwmhosting.com 25
>> telnet > helo foo.com
>> 
>> reply shows:
>> 250 jwmhosting.com Hello foo.com [xx.xx.xx.xx]) <- my ip address
>> 
>> 
>> What is important here is the helo name : jwmhosting.com. It should say mail.jwmhosting.com. This is a spammer flag and can get your mail rejected depending on the host. That is what the mail-tester service is complaining about.
>> 
>> You set this in smptserver.xml (smtpserver.conf in beta4?)
>> 
>> Look for the block below, change it :
>> 
>> <helloName autodetect=“false”>mail.jwmhosting.com</helloName>
>> 
>> 
>>    <!-- This is the name used by the server to identify itself in the SMTP -->
>>         <!-- protocol.  If autodetect is TRUE, the server will discover its -->
>>         <!-- own host name and use that in the protocol.  If discovery fails, -->
>>         <!-- the value of 'localhost' is used.  If autodetect is FALSE, James -->
>>         <!-- will use the specified value. -->
>>         <!--
>>         <helloName autodetect="true">myMailServer</helloName>
>>          -->
>> 
>> FYI, beta4 has a deadlocking problem, you might want to upgrade to beta 5. I have instructions on how to build it from source on YouTube:
>> 
>> https://www.youtube.com/channel/UChNyi0dlyanLLhp7cA9q5dA
>> 
>> or if you prefer a text tutorial, on my blog:
>> 
>> http://blog.bonnydoonmedia.com/post.cfm/building-apache-james-from-source
>> 
>> 
>> 
>> On Oct 26, 2014, at 10:44 PM, Jerry Malcolm <te...@malcolms.com> wrote:
>> 
>>> I have been running James 3 b4 for several months.  I was having some outbound mail rejected by gmail and started doing some research.  I did an email test using mail-tester.com and got the error message that my HELO did not match the rDNS.  It reports:
>>> 
>>> IP: 64.34.163.186
>>> HELO: p2825577
>>> rDNS: mail.jwmhosting.com
>>> 
>>> The p2825577 number is my Windows Server 2008 machine name.  I don't want to use that.
>>> 
>>> In the RemoteDelivery mailet config, I have the following:
>>> 
>>> <mail.smtp.localhost>mail.jwmhosting.com</mail.smtp.localhost>
>>> 
>>> If I'm reading the instructions correctly, this should cause the specified value (mail.jwmhosting.com) to be sent on the HELO instead of the p282... number, correct?  But it isn't.
>>> 
>>> What am I doing wrong?
>>> 
>>> BTW...  I tried changing my rDNS to the p282... number.  rDNS's have to be a fully qualified domain name.  So it won't take it.  Fine... I then tried changing my Win Server 08 machine name to be mail.jwmhosting.com.  No go on that either.  Can't have periods in Win machines names.... So I'm stuck.  Please advise....
>>> 
>>> This is kinda urgent since I now realize that there's a distinct possibility that some of my clients' emails are not getting through due to this.  So thanks in advance for a quick reply to this.
>>> 
>>> Jerry
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>> 
>> 
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
hmm, wait, that isn’t working . another check ...

On Oct 27, 2014, at 1:51 AM, Robert Munn <ro...@gmail.com> wrote:

> Your rDNS: mail.jwmhosting.com looks correct to me.
> 
> I just did a telnet check of your smtp server:
> 
> $ telnet
> telnet > open mail.jwmhosting.com 25
> telnet > helo foo.com
> 
> reply shows:
> 250 jwmhosting.com Hello foo.com [xx.xx.xx.xx]) <- my ip address
> 
> 
> What is important here is the helo name : jwmhosting.com. It should say mail.jwmhosting.com. This is a spammer flag and can get your mail rejected depending on the host. That is what the mail-tester service is complaining about.
> 
> You set this in smptserver.xml (smtpserver.conf in beta4?)
> 
> Look for the block below, change it :
> 
> <helloName autodetect=“false”>mail.jwmhosting.com</helloName>
> 
> 
>    <!-- This is the name used by the server to identify itself in the SMTP -->
>         <!-- protocol.  If autodetect is TRUE, the server will discover its -->
>         <!-- own host name and use that in the protocol.  If discovery fails, -->
>         <!-- the value of 'localhost' is used.  If autodetect is FALSE, James -->
>         <!-- will use the specified value. -->
>         <!--
>         <helloName autodetect="true">myMailServer</helloName>
>          -->
> 
> FYI, beta4 has a deadlocking problem, you might want to upgrade to beta 5. I have instructions on how to build it from source on YouTube:
> 
> https://www.youtube.com/channel/UChNyi0dlyanLLhp7cA9q5dA
> 
> or if you prefer a text tutorial, on my blog:
> 
> http://blog.bonnydoonmedia.com/post.cfm/building-apache-james-from-source
> 
> 
> 
> On Oct 26, 2014, at 10:44 PM, Jerry Malcolm <te...@malcolms.com> wrote:
> 
>> I have been running James 3 b4 for several months.  I was having some outbound mail rejected by gmail and started doing some research.  I did an email test using mail-tester.com and got the error message that my HELO did not match the rDNS.  It reports:
>> 
>> IP: 64.34.163.186
>> HELO: p2825577
>> rDNS: mail.jwmhosting.com
>> 
>> The p2825577 number is my Windows Server 2008 machine name.  I don't want to use that.
>> 
>> In the RemoteDelivery mailet config, I have the following:
>> 
>> <mail.smtp.localhost>mail.jwmhosting.com</mail.smtp.localhost>
>> 
>> If I'm reading the instructions correctly, this should cause the specified value (mail.jwmhosting.com) to be sent on the HELO instead of the p282... number, correct?  But it isn't.
>> 
>> What am I doing wrong?
>> 
>> BTW...  I tried changing my rDNS to the p282... number.  rDNS's have to be a fully qualified domain name.  So it won't take it.  Fine... I then tried changing my Win Server 08 machine name to be mail.jwmhosting.com.  No go on that either.  Can't have periods in Win machines names.... So I'm stuck.  Please advise....
>> 
>> This is kinda urgent since I now realize that there's a distinct possibility that some of my clients' emails are not getting through due to this.  So thanks in advance for a quick reply to this.
>> 
>> Jerry
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>> 
> 


Re: James 3 b4 HELO Override Not Working?

Posted by Robert Munn <ro...@gmail.com>.
Your rDNS: mail.jwmhosting.com looks correct to me.

I just did a telnet check of your smtp server:

$ telnet
telnet > open mail.jwmhosting.com 25
telnet > helo foo.com

reply shows:
250 jwmhosting.com Hello foo.com [xx.xx.xx.xx]) <- my ip address


What is important here is the helo name : jwmhosting.com. It should say mail.jwmhosting.com. This is a spammer flag and can get your mail rejected depending on the host. That is what the mail-tester service is complaining about.

You set this in smptserver.xml (smtpserver.conf in beta4?)

Look for the block below, change it :

<helloName autodetect=“false”>mail.jwmhosting.com</helloName>


   <!-- This is the name used by the server to identify itself in the SMTP -->
        <!-- protocol.  If autodetect is TRUE, the server will discover its -->
        <!-- own host name and use that in the protocol.  If discovery fails, -->
        <!-- the value of 'localhost' is used.  If autodetect is FALSE, James -->
        <!-- will use the specified value. -->
        <!--
        <helloName autodetect="true">myMailServer</helloName>
         -->

FYI, beta4 has a deadlocking problem, you might want to upgrade to beta 5. I have instructions on how to build it from source on YouTube:

https://www.youtube.com/channel/UChNyi0dlyanLLhp7cA9q5dA

or if you prefer a text tutorial, on my blog:

http://blog.bonnydoonmedia.com/post.cfm/building-apache-james-from-source



On Oct 26, 2014, at 10:44 PM, Jerry Malcolm <te...@malcolms.com> wrote:

> I have been running James 3 b4 for several months.  I was having some outbound mail rejected by gmail and started doing some research.  I did an email test using mail-tester.com and got the error message that my HELO did not match the rDNS.  It reports:
> 
> IP: 64.34.163.186
> HELO: p2825577
> rDNS: mail.jwmhosting.com
> 
> The p2825577 number is my Windows Server 2008 machine name.  I don't want to use that.
> 
> In the RemoteDelivery mailet config, I have the following:
> 
> <mail.smtp.localhost>mail.jwmhosting.com</mail.smtp.localhost>
> 
> If I'm reading the instructions correctly, this should cause the specified value (mail.jwmhosting.com) to be sent on the HELO instead of the p282... number, correct?  But it isn't.
> 
> What am I doing wrong?
> 
> BTW...  I tried changing my rDNS to the p282... number.  rDNS's have to be a fully qualified domain name.  So it won't take it.  Fine... I then tried changing my Win Server 08 machine name to be mail.jwmhosting.com.  No go on that either.  Can't have periods in Win machines names.... So I'm stuck.  Please advise....
> 
> This is kinda urgent since I now realize that there's a distinct possibility that some of my clients' emails are not getting through due to this.  So thanks in advance for a quick reply to this.
> 
> Jerry
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>