geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chua Chee Seng <chuacheesen...@gmail.com>
Subject Re: Geronimo 1.1.1's Javamail does not work for some SMTP server with more than 1 beginning lines
Date Thu, 23 Aug 2007 02:48:37 GMT

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.


Mime
View raw message