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

Reply via email to