ietf-822
[Top] [All Lists]

Re: Lessons Learned from a Foreign Culture

1994-10-28 15:57:48
On Fri, 28 Oct 1994, Steve Dorner wrote:

Good!  So maybe I'm not off in left field for once.

Me either.  I think we're probably all coming at the same thing from 
different angles.
 
But can you clarify what 1521 means by "does not require adherence to ...
the SMTP CRLF semantics."?

I'll have a shot.  Messages are traditionally a series of lines of
characters separated by end of line markers (EOL).  Different systems have
different ideas about what EOL is, but when you open a connection to a
SMTP port, it _must_ be CRLF that you send as EOL.  This may entail some
translation in the initial UA or the MTA which was one back in the path
the message took.  It may also entail some translation in the final MTA to
convert to the final system's EOL convention. 

In the big picture this translation doesn't really matter for 7bit, 8bit,
and quoted-printable since the final system's EOL convention is what the
user there wants anyway.  For base64, the translation only applies to the
encoder output and doesn't affect the actual encoded data.  This does mean
that the UA must do CRLF canonicalisation itself before encoding in
base64, and the final UA must also be aware of this and do whatever local 
translations are necessary without relying on the final MTA to do them.

Now, CTE:binary means that the transports do not mess with EOL's at all,
and in fact there may not be EOL's, or if there are EOL's then the lines
may be incredibly long.  It is possible that the transports may mess with
the bytes in some fashion (e.g. encryption, compression, conversion to
base64, etc), but this must be 100% reversible: there should be no
potentional for losing any information.  This will also entail the UA
being smarter and having to do CRLF canonicalisation on text/* body parts
itself, as with base64. 
 
Some people (not me) have read this to mean that the data should not be
subject to canonicalization.  If we agree that this isn't what it means,
then what *does* it mean?

Canonicalisation was always something that should have happened in the UA,
but some UA implementations were lazy because the MTA did it for them. 
With CTE:base64 and CTE:binary, the UA's cannot be so lazy and MTA's need
to be more careful with the bytes for CTE:binary. 
 
Cheers,

Rhys.