--- On Tue, 5/22/12, George Roberts <grobe...@purity.net> wrote:
> > Exchange uses SMTP but generates
> a syntactically incorrect header.  Similarly
> > with Google's gmail (it often omits the "from" clause when required),
> > Yahoo's use of an unregistered protocol ("with NNFMP"*), qmail, and of late,
> > exim.
> 
> Do you also then block mail from Gmail, Yahoo, qmail and
> exim if their Received lines are incorrectly formatted?

Yes.  I reject ALL messages with incorrectly formatted Received lines.

Note that as long as there's no "with" clause, a syntactically correct line 
consists of some random text, a semicolon, and a date stamp.  If a "with" 
clause is present, its protocl is checked against a list which conisists of the 
valid types listed by the IANA, plus this regex: "(HT|NN)TPS?A?".  If it does 
not match, it is rejected.  If it matches "(D|E|UTF8)?(L|S)MTP8?S?A?", then 
"from" and "by" is required, "via" (if present) is checked for an atom, and the 
"id" and "for" fields (if present) are also checked for validity.  The 
rejection message cites the section of the RFC which the message  violates.  
Over 90% of the messages so rejected are clearly spam (i.e. sent to a spamtrap 
mailbox) or have other problems.  Since messages often have multiple received 
headers, the bad header is displayed at the end of the rejection line after a 
colon.

For example, here is the sendmail rule rejecting a bogus "with" protocol:

R$* with $- $*        $#error $@ 5.5.2 $: "554 Received header unknown WITH 
protocol \"" $2 "\" (see http://www.iana.org/assignments/mail-parameters):" 
$&{currHeader}

Rules checking valid protocols appear before this rule.

As RFC 5321 indicates that the syntax for "Received:" headers is required for 
SMTP-transmitted messages (section 4.4), I have every right to reject any 
message via SMTP (or that claims such by including "with SMTP") that does not 
match the given syntax as a malformed message -- and I do so.

The procedure of checking the "with" clause against various protocols (SMTP or 
not, or not present) is consistent with RFC 5321 Section 3.7.2's requirement 
not to reject non-SMTP environment generated received headers on the grounds of 
not meeting the SMTP required syntax for that header class.  RFC 5322's 
received header syntax (section 3.6.7) requires the semicolon and date stamp 
for ALL messages (SMTP or not) transmitted on the Internet, so any message with 
a received header lacking a semicolon or valid date stamp is also subject to 
rejection as a malformed message regardless of how it was injected or 
transmitted. 
_______________________________________________
NOTE: If there is a disclaimer or other legal boilerplate in the above
message, it is NULL AND VOID.  You may ignore it.

Visit http://www.mimedefang.org and http://www.roaringpenguin.com
MIMEDefang mailing list MIMEDefang@lists.roaringpenguin.com
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

Reply via email to