You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Chua Chee Seng <ch...@gmail.com> on 2007/08/20 10:49:57 UTC

Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

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
-- 
View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12232240
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Chua Chee Seng <ch...@gmail.com>.
Sorry, correction:-

Should be:

line.isContinued() is always returning true

Regards,
Chee Seng


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

-- 
View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12286745
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Rick McGuire <ri...@gmail.com>.
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
>>>>>>>>>   
>>>>>>>>>       
>>>>>>>>>           
>>>>>>>>>               
>>>>>>>>>                   
>>>>>>>>     
>>>>>>>>         
>>>>>>>>             
>>>>>>>>                 
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>   
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>>
>>     
>
>   


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Chua Chee Seng <ch...@gmail.com>.
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!  :-)

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

-- 
View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12352933
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Rick McGuire <ri...@gmail.com>.
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
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>   
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>>
>>     
>
>   


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Chua Chee Seng <ch...@gmail.com>.
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?

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

-- 
View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12305401
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Rick McGuire <ri...@gmail.com>.
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
>>>>>   
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>>
>>     
>
>   


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Chua Chee Seng <ch...@gmail.com>.
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
>>>>   
>>>>       
>>>
>>>     
>>
>>   
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12286630
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Rick McGuire <ri...@gmail.com>.
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
>>>   
>>>       
>>
>>     
>
>   


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Chua Chee Seng <ch...@gmail.com>.
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.  :-)

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

-- 
View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12267277
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Rick McGuire <ri...@gmail.com>.
No, this is just a bug in the Geronimo SMTP code.  The welcome protocol 
handler was not expecting a multi-line response, so things got out of 
sync.  I have a fix for this already (pretty trivial), but I don't have 
a server that displays this behavior to text against.

Rick
'

Johannes Weberhofer, Weberhofer GmbH wrote:
> Hi!
>
> Have you tried to send via the smpt server with another mail-client 
> and from the same IP? Have you checked if your server's ip is in an 
> blacklict (try http://openrbl.org/ ). The issues sounds as if your 
> server has been blocked at the smpt server for some reason!
>
> Good luck,
>
> Johnanes Weberhofer
>
> 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
>>>   
>>
>


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Chua Chee Seng <ch...@gmail.com>.
Hi Johnanes,

Thank you for your reply, but I think the client account and the smtp are
fine, as when I substituded it with Sun's Javamail implementation it works
fine.  The source code shows that it doesn't support multilines 220, and
Rick is going to fix it very soon.  :-)

Thank you very much for the info.  =)

Regards,
Chee Seng


Johannes Weberhofer wrote:
> 
> Hi!
> 
> Have you tried to send via the smpt server with another mail-client and
> from the same IP? Have you checked if your server's ip is in an blacklict
> (try http://openrbl.org/ ). The issues sounds as if your server has been
> blocked at the smpt server for some reason!
> 
> Good luck,
> 
> Johnanes Weberhofer
> 
> 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
>>>   
>> 
> 
> -- 
> 
> 
> |---------------------------------
> |  weberhofer GmbH               | Johannes Weberhofer
> |  information technologies
> |  Austria, 1080 Wien, Blindengasse 52/3
> |----------------------------------------------------------->>
> 
> 

-- 
View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12286698
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by "Johannes Weberhofer, Weberhofer GmbH" <of...@weberhofer.at>.
Hi!

Have you tried to send via the smpt server with another mail-client and from the same IP? Have you checked if your server's ip is in an blacklict (try http://openrbl.org/ ). The issues sounds as if your server has been blocked at the smpt server for some reason!

Good luck,

Johnanes Weberhofer

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

-- 


|---------------------------------
|  weberhofer GmbH               | Johannes Weberhofer
|  information technologies
|  Austria, 1080 Wien, Blindengasse 52/3
|----------------------------------------------------------->>

Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines

Posted by Rick McGuire <ri...@gmail.com>.
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
>