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