From line has ()

Jethro R Binks jethro.binks at strath.ac.uk
Thu Mar 16 14:26:47 GMT 2006


On Fri, 17 Mar 2006, James Gray wrote:

> > > The way I read RFC822 (and 2822) is that if an MTA is going to reject a
> > > message it should do so as early in the transaction as possible.  It
> > > should never accept a message it will not deliver.  So, if Exchange is
> > > dropping the message after the final "dot+<CR>" due to a malformed or
> > > rejected address, it should have done it during the "MAIL FROM:" or
> > > "RCPT TO:" stage.  IOW, I believe this violates the RFC.  But hey, it's
> > > Micrsoft - since when to THEY care about published standards?!?
> >
> > That's nonesense, and even if you believed it, it bears no relation to
> > his original question.
> 
> Erm, read RFC2821 specifically section 3.3.  (Paraphrasing) Messages 
> should be rejected as soon as possible.  However, I did misread to OP's 
> question, and I accept that this, and my earlier comments, have nothing 
> to do with their problem.

You said "I believe this violates the RFC".  It doesn't.  The RFC advises 
that you SHOULD do something a particular way, but does not forbid you 
from doing it another way if you have strong reasons for doing so, as per 
the terminology of section 2.3.  One of these strong reasons might be that 
for logging and tracking purposes you want to record more information 
about the message content.  However the RFC does point out, late in that 
section, "Using a "550 mailbox not found" (or equivalent) reply code after 
the data are accepted makes it difficult or impossible for the client to 
determine which recipients failed."

Another strong reason would be if your site policy states that you may 
find some DATA content objectionable (including mangled header content) 
and reject on that basis:

"The DATA command can fail at only two points in the protocol exchange:
...
   -  If the verb is initially accepted and the 354 reply issued, the
      DATA command should fail only if ...  or if the server determines 
      that the message should be rejected for policy or other reasons.
"

> > It is quite common to defer rejecting an email until right to the end of
> > the SMTP transaction, and required if the reason for rejecting might be
> > related to the actual content of the email, rather than the envelope
> > information.
> 
> Half right.  If an MTA is going to reject a message based on the 
> envelope info, it should return an error (5xx) after either the MAIL or 
> RCPT commands (RFC2821).

It should, but for one reason or another, you may decide you don't want to 
do it that way.  And as I said, it is not uncommon to do so, and the RFC 
does not forbid it if you have good enough reasons for your own 
satisfaction (noting the disadvantages the RFC mentions).

> Rejecting based on the body/DATA can ONLY be done after the DATA is 
> terminated with "<CRLF>." (again, RFC2821).

Of course.  When I said "right to the end of the SMTP transaction", I did 
in fact mean "at the end of the DATA phase".

Jethro.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Jethro R Binks
Computing Officer, IT Services
University Of Strathclyde, Glasgow, UK


More information about the MailScanner mailing list