Chris Lewis wrote:
SMTP state and qpsmtpd/filtering state are not the same thing. The RFCs talk about destroying SMTP state. It already does that without having to destroy any notes() AFAICT. But it shouldn't blithely throwing away qpsmtpd/filtering state - it's none of the RFC's business.

The current behavior throws away the entire transaction object and resets the connection object to include only the fields at the top of Connection.pm:

# All of these parameters depend only on the physical connection, # i.e. not on anything sent from the remote machine. Hence, they
# are an appropriate set to use for either start() or clone().  Do
# not add parameters here unless they also meet that criteria.
my @parameters = qw(
        remote_host
remote_ip remote_info remote_port
        local_ip
        local_port
        relay_client
);

All we are talking about at this point, really, is whether we should preserve any connection notes as well [during clone], which I suggest is perfectly fine from both a pragmatic and RFC standpoint.

It makes sense, for example, for a source-IP reputation checker to launch its queries at connect time, and query the results at a later phase (eg: rcpt/data) to make the decisions then, independent of whether TLS was established or not.

Those are *connection* attributes, not *transaction* attributes. If a plugin is storing them in the transaction object, that is a mistake. We can and probably should maintain the connection notes from before the TLS reset, but I maintain that we should not keep the transaction notes.

John

Reply via email to