ietf-asrg
[Top] [All Lists]

Re: [Asrg] Ban the bounce; improved challenge-response systems

2003-04-08 08:04:20
From: list-ietf-antispam(_at_)faerber(_dot_)muc(_dot_)de 
(=?ISO-8859-1?Q?Claus_F=E4rber?=)

...
You have to add some steps:

The step you added has no effect and you added it in the wrong place.
For obvious practical reasons, most SMTP servers write the message to
a temporary file in a spool directory as it arrives.  Your step 2a in
practice happens during step 2 and is completed before the TCP ACK
for the "\r\n.\r\n" is received by the STMP client.

Or do I misunderstand what you mean by "write to spool"?  If you mean
"deliver to the user's mailbox" instead of "save in temporary spool file,"
then the step is still irrelevant, because network problems that happen
at any time after the "\r\n.\r\n" is received cannot be detected by
the SMTP server before the final close().


   SMTP client                       SMTP server
1.   send("DATA\r\n"
          msg text
          "\r\n.\r\n")     -->
2.                                      recv(msg)
                                        (delay for spam filtering etc)
                   (network dies, server crashes, whatever)
  2a.                                     (message written to spool)
                (network between client & server dies)
3.                        <--           send("250 OK")
4.                                      close()
5.         (gets error on recv())       (gets error on close())

...
If the problem occurs between #2 and #2a, the method above will not  
result in duplicates: The server has not taken over responsibility for  
the message and the client will just send it again.

Only between #2a and #3 is it impossible to avoid duplicates.

Not so.  If the network break any time after #2, the server will no
detect the problem until after the server sends "250 OK" and while
trying to close() the connection.  Only by sending "250 OK" will the
TCP state machine in the SMTP server start looking for any response
from the client.  The network can break at any time after the server
sent the TCP SYN to ACK the ""\r\n.\r\n" and the server will not know
until it calls close().

Making that duration longer makes network problems more likely and
so makes duplicates more likely.


Vernon Schryver    vjs(_at_)rhyolite(_dot_)com
_______________________________________________
Asrg mailing list
Asrg(_at_)ietf(_dot_)org
https://www1.ietf.org/mailman/listinfo/asrg



<Prev in Thread] Current Thread [Next in Thread>