Re: Bugs in tmda-ofmipd?

"Todd A. Jacobs" <[email protected]>
Newsgroups gmane.mail.spam.tmda.user
Message-ID <[email protected]>
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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.