On Fri, Mar 22, 2013 at 11:48:46AM -0500, David Champion wrote: > * On 22 Mar 2013, Chris Green wrote: > > What should an MTA do if there *isn't* a blank line at the end of > > the current mbox where it is going to append a new message? It > > seems to me that what the Python libraries do guarantees that there > > will always be a blank line before the 'From ' line, if there's one > > already then it doesn't matter too much. > > I don't want to butt heads with Python library people, but I would argue > that the Python library's approach is backwards. This has historically > been mildly problematic with Mailman archives, for example, which > begin with a blank line instead of with 'From ', and are unreadable > without modification using some mail applications. (Mutt was patched to > accomodate this quirk only relatively recently.) > When I looked through a number of my mbox files it seemed to me that there must be quite a few 'deliverers' out there appending or prepending blank lines as there just about always seem to be several between each message.
> > > Mutt itself *doesn't* put a blank line there, if you S[ave] or > > C[opy] messages to a new mbox the messages have no blank lines > > before the 'From '. > > Mutt instead writes Lines: and Content-Length: headers, which are a good > alternative to using '\n\nFrom ' as a message delimiter. If you have > Lines: and/or Content-Length: in your delivery message, your LDA/filter > does not need to place a blank line at all. But unless you're adding > those yourself, you can't depend on having them. It is therefore best > to append a blank line to messages during local delivery. > However not all software will *use* the Lines: and Content-Length: headers so the '\n\nFrom ' should be there as well surely. Apart from anything else someone/something may have modified the message on the way who/which doesn't know about Lines: and Content-Length: so they could well be wrong. -- Chris Green