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 <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
>>>>>
>

---------------------------------------------------------------------
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