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.