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-----