Re: Bugs in tmda-ofmipd?

Stephen Warren <[email protected]>
Newsgroups gmane.mail.spam.tmda.user
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Todd A. Jacobs wrote:
> 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.

Aha! So, this bug is still there.

I recently made a checkin to solve the dropped-connection issue.
However, it caused other issues and I reverted it the next release.

Can you find the following code in tmda-ofmipd (indentation is
different, it's somewhere near line 845, a couple versions ago):

if not throttlescript or not os.system("%s %s" % (throttlescript, \
        self.__auth_username)):
  status = self.__server.process_message(self.__peer,
                                         self.__mailfrom,
                                         self.__rcpttos,
                                         self.__data,
                                         self.__auth_username)
else:
  status = self.push('450 Outgoing mail quota exceeded')

and change it to this:

if not throttlescript or not os.system("%s %s" % (throttlescript, \
        self.__auth_username)):
  try:
    status = self.__server.process_message(self.__peer,
                                           self.__mailfrom,
                                           self.__rcpttos,
                                           self.__data,
                                           self.__auth_username)
  except:
    status = '451 Internal exception in tmda-ofmipd'
    print >> DEBUGSTREAM, 'Error:', ex
else:
  status = self.push('450 Outgoing mail quota exceeded')

and then see what exception is being thrown (run with the -d option),
and from where.

Thanks.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFVSqmhk3bo0lNTrURAg6AAJ4yA+MvJVBkdgAThL4inlhQQ2hG/gCguG2r
xLalcY5ZMLDa6sP36BBKUec=
=I8DB
-----END PGP SIGNATURE-----
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.