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.