You asked for 'Thoughts?' so:
For a received message, it's not clear when one
should convert a body part from canonical line ending to local line ending.
This should happen at the same time that you convert the body part
from the transmitted character set to the local character set.
This generally applies only to text/* body parts. (If you transform
message/* parts, you're transforming them into something else). For
example, application/postscript is binary, and you better not do cr/lf
processing on it blindly. (Postscript level 2 can contain binary
Another possible solution seems to me to be the introduction of a
content-canonicalization: header to indicate canonicalizations have been
applied and should be removed when unpacking. I think this may be a good
this is the function of content-type. If you want to keep the messages
around in some other representation than proscribed by their
registered content-type, that's an implementation issue.