On Sat, 2 Sep 2006, John Peacock wrote:

Charlie Brady wrote:
I believe that is a misinterpretation of the RFCs. All information about
the SMTP transaction obtained from the client must be discarded, but
there is nothing which says that connection information must be
discarded.

OK, re-reading the RFC, I can go along with that interpretation.  I'm not sure
how it is going to work, though, because currently we clone the following
connection parameters:

       remote_host
       remote_ip
       remote_info
       remote_port
       local_ip
       local_port
       relay_client

and then ditch the original connection object.  I think that the RBL code is
tied to the original connection, and hence vanishes in a puff of smoke when we
do that.  The alternative to cloning is to reuse the same connection object and
delete the parameters that aren't on that list, ...

As long as information which is part of the transaction is stored in the transaction, and information which is part of the connection is stored in the connection, then we can reuse the connection, and create a new transaction when required to by TLS.

Moreover, the RFCs are only concerned with correct delivery
of email. We are concerned with discrimination of ham from spam, and
additional information may help us. It's important, however, that we
only use post-TLS information for authentication, authorization and
sender and recipient address determination.

This mindset, however, is not something that I believe belongs in the core code.
Qpsmtpd, as shipped as the core, should be as completely RFC-compliant as we
can manage it.

Sure, but I don't see any compromise here. We need to accumulate as much information as we can to make a correct ham/spam assessment. Discarding information *can't* help. We are required, however, to start a fresh SMTP transaction once TLS is negotiated.

When is there ever a problem with using a single connection object for the duration of a a connection? Do we currently store some information in the connection object which should be in the transaction? If so, shouldn't we just fix that?

---
Charlie

Reply via email to