On Fri, Nov 10, 2006 at 07:25:25PM -0500, Mark Horn wrote:

> I don't know what to tell you.  The error is with a pipe command. Have
> you looked at the thing that you're piping it to?  If it exits with an
> error, you'll get this type of error, too.

Fine, broken pipe. Yay. Even if I'm doing something *wrong* on the user
end, the point is that the program ought not to die with a useless
message on the server side WITHOUT reporting an error on the client
side. At the very least, I should get an SMTP error code, rather than a
closed connection.

For example:

    cat << EOF | telnet mailhost 8025
    EHLO neysa.codegnome.org
    AUTH PLAIN dGphY29ic1wwdGphY29ic1wwcXVvb3llYTk=
    MAIL FROM:<[EMAIL PROTECTED]>
    RCPT TO:<[EMAIL PROTECTED]>
    DATA
    Testing.
    .
    EOF

provides this output:

    Trying 192.168.76.16...
    Connected to mailhost.codegnome.org.
    Escape character is '^]'.
    220 mailhost.codegnome.org ESMTP tmda-ofmipd
    Connection closed by foreign host.

Where's the error? Where is the indication to the client that the
message was not accepted? Even when I do it interactively, the result is
essentially the same.

I ran a similar test in full debug mode, and get this output:

    $ tmda-ofmipd -fd
    tmda-ofmipd started at Fri, 10 Nov 2006 17:00:04 -0800
            Listening on mailhost.codegnome.org:8025
    Incoming connection from: ('192.168.76.17', 4475)
    Incoming connection to: ('192.168.76.16', 8025)
    Data: 'EHLO client.codegnome.org'
    error: uncaptured python exception, closing channel <__main__.SMTPChannel 
connected 192.168.76.17:4475 at 0xb7cd436c> (socket.error:(32, 'Broken pipe') 
[/usr/lib/python2.3/asynchat.py|initiate_send|218] 
[/usr/lib/python2.3/asyncore.py|send|337])
    error: uncaptured python exception, closing channel <__main__.SMTPChannel 
connected 192.168.76.17:4475 at 0xb7cd436c> (socket.error:(9, 'Bad file 
descriptor') [/usr/lib/python2.3/asynchat.py|initiate_send|218] 
[/usr/lib/python2.3/asyncore.py|send|337])
    Data: 'AUTH PLAIN dGphY29icwB0amFjb2JzAHF1b295ZWE5'
    error: uncaptured python exception, closing channel <__main__.SMTPChannel 
connected 192.168.76.17:4475 at 0xb7cd436c> (socket.error:(9, 'Bad file 
descriptor') [/usr/lib/python2.3/asynchat.py|initiate_send|218] 
[/usr/lib/python2.3/asyncore.py|send|337])
    Auth:  succeeded for user 'tjacobs'
    Data: 'MAIL FROM:<[EMAIL PROTECTED]>'
    ===> MAIL FROM:<[EMAIL PROTECTED]>
    sender: [EMAIL PROTECTED]
    error: uncaptured python exception, closing channel <__main__.SMTPChannel 
connected 192.168.76.17:4475 at 0xb7cd436c> (socket.error:(9, 'Bad file 
descriptor') [/usr/lib/python2.3/asynchat.py|initiate_send|218] 
[/usr/lib/python2.3/asyncore.py|send|337])
    Data: 'RCPT TO:<[EMAIL PROTECTED]>'
    ===> RCPT TO:<[EMAIL PROTECTED]>
    recips: ['[EMAIL PROTECTED]']
    error: uncaptured python exception, closing channel <__main__.SMTPChannel 
connected 192.168.76.17:4475 at 0xb7cd436c> (socket.error:(9, 'Bad file 
descriptor') [/usr/lib/python2.3/asynchat.py|initiate_send|218] 
[/usr/lib/python2.3/asyncore.py|send|337])
    Data: 'DATA'
    error: uncaptured python exception, closing channel <__main__.SMTPChannel 
connected 192.168.76.17:4475 at 0xb7cd436c> (socket.error:(9, 'Bad file 
descriptor') [/usr/lib/python2.3/asynchat.py|initiate_send|218] 
[/usr/lib/python2.3/asyncore.py|send|337])
    Data: 'Testing.'
    error: uncaptured python exception, closing channel <__main__.SMTPChannel 
connected 192.168.76.17:4475 at 0xb7cd436c> (exceptions.IOError:failure 
delivering message to command "['/usr/local/tmda-1.1.8/bin/tmda-inject', '-c', 
'/home/tjacobs/.tmda/config', '[EMAIL PROTECTED]']" (command 
"['/usr/local/tmda-1.1.8/bin/tmda-inject', '-c', '/home/tjacobs/.tmda/config', 
'[EMAIL PROTECTED]']" exited 1  (Traceback (most recent call last):
      File "/usr/local/tmda-1.1.8/bin/tmda-inject", line 118, in ?
        orig_msgout_body_as_raw_string = Util.body_as_raw_string(msgout)
      File "./TMDA/Util.py", line 666, in body_as_raw_string
    ValueError: substring not found)) [/usr/lib/python2.3/asyncore.py|read|69] 
[/usr/lib/python2.3/asyncore.py|handle_read_event|390] 
[/usr/lib/python2.3/asynchat.py|handle_read|136] 
[/usr/local/tmda-1.1.8/bin/tmda-ofmipd|found_terminator|783] 
[/usr/local/tmda-1.1.8/bin/tmda-ofmipd|process_message|1172] 
[./TMDA/Util.py|pipecmd|402])

So, clearly the exception is happening right from the beginning. In
addition, tmda-ofmipd is choking on some CR/LF issue in Util.py when
sent CR/LF in some way it isn't expecting, but that's not the entire
story.

-- 
Unabashedly littering the information superhighway with detritus like
this for over 15 years now.
_____________________________________________
tmda-users mailing list (tmda-users@tmda.net)
http://tmda.net/lists/listinfo/tmda-users

Reply via email to