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" <techst...@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 <techst...@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 <techst...@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-unsubscr...@james.apache.org >>>>>> For additional commands, e-mail: server-user-h...@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-unsubscr...@james.apache.org >>>> For additional commands, e-mail: server-user-h...@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-unsubscr...@james.apache.org >> For additional commands, e-mail: server-user-h...@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-unsubscr...@james.apache.org > For additional commands, e-mail: server-user-h...@james.apache.org > >