geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick McGuire <rick...@gmail.com>
Subject Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines
Date Mon, 27 Aug 2007 16:59:26 GMT
Chua Chee Seng wrote:
> Hi Rick,
>
> Sorry for writing back late as I was out of town.  imho, generalizing it
> would be a good idea.  If the spec allows it, people will do it.
>
> Once again, thanks for the help!  :-)
>   
And thank YOU for the help too.  You're extremely thorough analysis of 
the problem made this very easy to fix.

Rick


> Regards,
> Chee Seng
>
>
> Rick McGuire wrote:
>   
>> Chua Chee Seng wrote:
>>     
>>> Hi Rick,
>>>
>>> It works!  Thank you very much. :-)
>>>
>>> If you don't mind, I am curious about the rule '220-' indicating there is
>>> continuous line and '220' indicating it does not have continuous line, is
>>> this rule in the SMTP specification?
>>>   
>>>       
>> Yes, this is part of the SMTP specification, although only place I'd 
>> encountered a continuation response was the EHLO command.  I might want 
>> to generalize the receiving of the response lines to automatically 
>> account for continuatations....I'm now nervous that there might be other 
>> places where this might show up.
>>
>> Rick
>>     
>>> Once again, thank you for your help.
>>>
>>> Regards,
>>> Chee Seng
>>>
>>>
>>>
>>> Rick McGuire wrote:
>>>   
>>>       
>>>> Your analysis is exactly correct, it was a silly mistake on my part 
>>>> (sigh).  I'm glad I asked you to check it out before I committed the 
>>>> change!  Anyway, I've refreshed the jar file out on people.apache.org, 
>>>> so if you would give the new version a try, I'd really appreciate it.
>>>>
>>>> Rick
>>>>
>>>> Chua Chee Seng wrote:
>>>>     
>>>>         
>>>>> Hi Rick,
>>>>>
>>>>> It does not work.  When executed, the debugging console is showing
>>>>> these
>>>>> lines:-
>>>>>
>>>>> 220-xxx.xxx.xxx ESMTP Exim x.xx #1 Mon, 20 Aug 2007 16:29:11 +0800
>>>>> 220-We do not authorize the use of this system to transport unsolicted,
>>>>> 220 and/or bulk email.
>>>>>
>>>>> It then stopped there until a Read timed out exception is thrown. 
>>>>> Seems
>>>>> to
>>>>> me that the client is not sending EHLO/HELO to the server.
>>>>>
>>>>> I decompiled SMTPTransport and SMTPReply (I don't have the modified
>>>>> source
>>>>> code) to see what can be wrong, I think getWelcome() method in
>>>>> SMTPTransport
>>>>> is causing the problem:-
>>>>>
>>>>> protected boolean getWelcome()
>>>>>         throws MessagingException
>>>>> {
>>>>>         SMTPReply line = getReply();
>>>>>         if(line.isError())
>>>>>             return false;
>>>>>         for(; line.isContinued(); getReply());
>>>>>         return true;
>>>>> }
>>>>>
>>>>> In the for loop, the line.isContinued() is always returning false as
it
>>>>> does
>>>>> not get setting to new reference to SMTPReply returned by getReply()
>>>>> call
>>>>> in
>>>>> the for loop.  I think something like the following should work:-
>>>>>
>>>>> protected boolean getWelcome()
>>>>>         throws MessagingException
>>>>> {
>>>>>         SMTPReply line = getReply();
>>>>>         if(line.isError())
>>>>>             return false;
>>>>>
>>>>>         while(line.isContinued())
>>>>>               line = getReply();
>>>>>
>>>>>         return true;
>>>>> }
>>>>>
>>>>> As it is decompiled code, I am not sure if your source code is like the
>>>>> above, so it is just my guess. I would be happy to help to test again
>>>>> with
>>>>> new builds.  :-)
>>>>>
>>>>> Best Regards,
>>>>> Chee Seng
>>>>>
>>>>>
>>>>> Rick McGuire wrote:
>>>>>   
>>>>>       
>>>>>           
>>>>>> Chua Chee Seng wrote:
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>>> Hi Rick,
>>>>>>>
>>>>>>> Thanks for the reply.  I would be happy to help out testing it.

>>>>>>> However,
>>>>>>> I
>>>>>>> am very new to this community and some guidance is really
>>>>>>> appreciated. 
>>>>>>> :-)
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>> This should be fairly simple.  I built a 1.1.1 version of SMTP code
>>>>>> and 
>>>>>> placed it here:
>>>>>>
>>>>>> http://people.apache.org/~rickmcguire/stage-javamail/geronimo-javamail-transport-1.1.1.jar
>>>>>>
>>>>>> Just replace the geronimo-javamail-transport jar file in your 1.1.1

>>>>>> server assembly, and retry your program.  That will verify that my
fix 
>>>>>> is working correctly and I'll be able to commit my fix for the
>>>>>> problem.  
>>>>>> Unfortunately, the fix won't ship until the next Geronimo update,
but 
>>>>>> you'll have a corrected jar to run with while you're on 1.1.1.
>>>>>>
>>>>>> Rick
>>>>>>
>>>>>>
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>>> Regards,
>>>>>>> Chee Seng
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Rick McGuire wrote:
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>>> This is the first time I've encountered an SMTP server that
sends a 
>>>>>>>> response back like this.  I've opened a JIRA for this issue:
>>>>>>>>
>>>>>>>> https://issues.apache.org/jira/browse/GERONIMO-3427
>>>>>>>>
>>>>>>>> and I'll take a look at fixing this.  Since I don't have
access to
>>>>>>>> an 
>>>>>>>> SMTP server that behaves this way, are you willing/able to
help try
>>>>>>>> out 
>>>>>>>> potential fixes?
>>>>>>>>
>>>>>>>> Rick
>>>>>>>>
>>>>>>>> Chua Chee Seng wrote:
>>>>>>>>     
>>>>>>>>         
>>>>>>>>             
>>>>>>>>                 
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I am trying to use the Geronimo Javamail.  I have setup
the
>>>>>>>>> resource
>>>>>>>>> and
>>>>>>>>> resource-ref stuff and try to send a mail from the application.
 I
>>>>>>>>> turn
>>>>>>>>> off
>>>>>>>>> the debug flag and see the following in the console:-
>>>>>>>>>
>>>>>>>>> ...
>>>>>>>>> 220-xxx.xxx.xxx ESMTP Exim x.xx #1 Mon, 20 Aug 2007 16:29:11
+0800
>>>>>>>>> EHLO xxxxx
>>>>>>>>> 220-We do not authorize the use of this system to transport
>>>>>>>>> unsolicted,
>>>>>>>>> HELO xxxxx
>>>>>>>>> 220 and/or bulk email.
>>>>>>>>> ...
>>>>>>>>>
>>>>>>>>> An exception is then thrown complaining that it fails
to send HELO
>>>>>>>>> to
>>>>>>>>> the
>>>>>>>>> server.
>>>>>>>>>
>>>>>>>>> When using telnet xxxx 25 to my SMTP server, I found
out that once
>>>>>>>>> connected, the SMTP is sending back three lines of text:-
>>>>>>>>> 220-xxx.xxx.xxx ESMTP Exim x.xx #1 Mon, 20 Aug 2007 16:29:11
+0800
>>>>>>>>> 220-We do not authorize the use of this system to transport
>>>>>>>>> unsolicted,
>>>>>>>>> 220 and/or bulk email.
>>>>>>>>>
>>>>>>>>> I then try with a local SMTP using Apache JAMES, which
successfully
>>>>>>>>> send
>>>>>>>>> the
>>>>>>>>> mail.  When I try to telnet localhost 25, it is sending
back only
>>>>>>>>> one
>>>>>>>>> line
>>>>>>>>> of text:-
>>>>>>>>>
>>>>>>>>> 220 xxxx SMTP Server (JAMES SMTP Server 2.3.1) ready
Mon, 20 Aug
>>>>>>>>> 2007
>>>>>>>>> 16:32:26 +0800 (SGT)
>>>>>>>>>
>>>>>>>>> I am suspecting Geronimo Javamail implementation (version
1.1.1)
>>>>>>>>> cannot
>>>>>>>>> be
>>>>>>>>> used on SMTP who sends back more than 1 lines of 220
service ready. 
>>>>>>>>> I
>>>>>>>>> investigate the source code of
>>>>>>>>> org.apache.geronimo.javamail.transport.smtp.SMTPTransport
and study
>>>>>>>>> that
>>>>>>>>> getReply() method is using the receiveLine() method to
read
>>>>>>>>> response
>>>>>>>>> from
>>>>>>>>> the server.  As receivedLine() is using end of stream
(read() ==-1)
>>>>>>>>> or
>>>>>>>>> CR
>>>>>>>>> or
>>>>>>>>> LF to indicate end of response from server, so in the
above
>>>>>>>>> scenario
>>>>>>>>> each
>>>>>>>>> 220 are identified as a response from the server.  After
receiving
>>>>>>>>> the
>>>>>>>>> first
>>>>>>>>> 220, the client send a EHLO but fails as the server is
sending back
>>>>>>>>> the
>>>>>>>>> 2nd
>>>>>>>>> 220.  The client then try to send a HELO but receive
the 3rd 220,
>>>>>>>>> which
>>>>>>>>> it
>>>>>>>>> finally gave up and throw a fails to send HELO exception.
>>>>>>>>>
>>>>>>>>> I have switch to Sun Javamail implementation to solve
the problem. 
>>>>>>>>> However,
>>>>>>>>> I personally prefer to use Geronimo implementation due
to
>>>>>>>>> installation
>>>>>>>>> issue.  Is there a better way, or is it in the later
version
>>>>>>>>> (Geronimo
>>>>>>>>> 1.2,
>>>>>>>>> 2.0, I didn't try  :P), the Geronimo Javamail can handle
SMTP that
>>>>>>>>> sends
>>>>>>>>> more than 1 lines of 220 back to client (like the SMTP
server that
>>>>>>>>> I
>>>>>>>>> am
>>>>>>>>> facing)?
>>>>>>>>>
>>>>>>>>> Thanks in advance for any advice.
>>>>>>>>>
>>>>>>>>> Best Regards,
>>>>>>>>> Chee Seng
>>>>>>>>>   
>>>>>>>>>       
>>>>>>>>>           
>>>>>>>>>               
>>>>>>>>>                   
>>>>>>>>     
>>>>>>>>         
>>>>>>>>             
>>>>>>>>                 
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>   
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>>
>>     
>
>   


Mime
View raw message