"Thou shalt not quote RFC whilst composing in HTML or RTF!" I think that's chiseled on a stone tablet somewhere. If not it should have been.
-- Stan Mike Abbott put forth on 4/12/2010 8:56 AM: >>> + if (in_stream == NULL) { >>> + /* must fail the entire transaction */ >>> + chat_reset(state, var_smtpd_hist_thrsh); >>> + mail_reset(state); >>> + rcpt_reset(state); >>> + return -1; >>> + } >> >> Why no response to the client? > > The function imap_open() responds to the client before it returns NULL. > in_stream = imap_open(state, url); > >>> + case SMTP_ERR_EOF: >>> + smtpd_chat_reply(state, "554 4.6.6 EOF from IMAP server"); >>> + vstream_longjmp(state->client, SMTP_ERR_QUIET); >>> + break; >> >> Why is the DSN code 4.X.X when the SMTP reply code is 5XX? Is this a >> permanent or a transient error code? > > It is a transient failure. The reasoning for these particular codes was > as follows. RFC 4468 section 3.2 states "If the URL fetch fails, the > server will fail the entire transaction." RFC 5321 section 4.2.2 uses > code 554 for "Transaction failed." And the table in RFC 5248 section > 2.4 implies that a 4.6.6 is valid with a 554. If this interpretation of > the RFCs is incorrect, please propose corrected response codes. > > > The remainder of your feedback speaks to style and to weaknesses in the > implementation that I pointed out in the cover letter to the code > contribution. That cover letter also said: > > Feel free to [...] restructure or rewrite the code as desired, > as long as you preserve our copyright. We understand that our > implementation choices may differ from yours; if you see a better way to > achieve the same goal please do adopt the better way.