Loading ...
Sorry, an error occurred while loading the content.

PATCH: Bounce on ok

Expand Messages
  • Wietse Venema
    Below are is a patch for Postfix 2.2 and one for Postfix 2.3 and 2.4. Victor found this one. It happens when the SMTP client sends RSET after the server
    Message 1 of 1 , Dec 3, 2006
    • 0 Attachment
      Below are is a patch for Postfix 2.2 and one for Postfix 2.3 and
      2.4. Victor found this one.

      It happens when the SMTP client sends RSET after the server rejects
      all recipients, and the server reply arrives too late because they
      have huge tarpit delays. When the client reuses the connection the
      old RSET reply still sits in the pipe, and the client and server
      get out of sync by one step. Huge tarpit delays like this are very
      unusual, but we should now have eliminated all similar problems
      with timeouts on cached connections.

      Wietse

      History entry:

      Bugfix (bug introduced Postfix 2.2): with SMTP server tarpit
      delays of smtp_rset_timeout or larger, the SMTP client could
      get out of sync with the server while reusing a connection.
      The symptoms were "recipient rejected .. in reply to DATA".
      Fix by Victor Duchovni, Morgan Stanley. File: smtp/smtp_proto.c.

      Postfix 2.2:

      *** ./src/smtp/smtp_proto.c- Tue Jun 21 19:13:25 2005
      --- ./src/smtp/smtp_proto.c Sun Dec 3 11:08:06 2006
      ***************
      *** 881,886 ****
      --- 881,888 ----
      } while (0)

      #define RETURN(x) do { \
      + if (SENDER_IS_AHEAD) \
      + DONT_CACHE_THIS_SESSION; \
      vstring_free(next_command); \
      if (session->mime_state) \
      session->mime_state = mime_state_free(session->mime_state); \

      Postfix 2.3, 2.4:

      *** ./src/smtp/smtp_proto.c- Thu Oct 5 20:08:40 2006
      --- ./src/smtp/smtp_proto.c Sun Dec 3 11:09:31 2006
      ***************
      *** 1042,1047 ****
      --- 1042,1049 ----
      } while (0)

      #define RETURN(x) do { \
      + if (SENDER_IS_AHEAD) \
      + DONT_CACHE_THIS_SESSION; \
      vstring_free(next_command); \
      if (survivors) \
      myfree((char *) survivors); \
    Your message has been successfully submitted and would be delivered to recipients shortly.