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 <cfmuns...@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 <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 >> >