Today I got mail from Sylvain Beucler:
Thanks for the pointer. So we should use CRLF anywhere.
On the network, yes. Not locally through the sendmail interface.
Savane uses the PHP "mail()" function, that executes the local sendmail-compatible command.
Php mail() is IMHO quite buggy. On windows it connects to an smtp server and sends whatever the user provided directly - \r\n is thus mandatory. (But IIRC php internally adds some header lines ending with \n.) On unix php uses sendmail (and can NOT be configured to use smtp :-( and can thus NOT confirm to the php script that the local MTA has received and accepted the message) and the message should thus not contain CRLF. Only the windows behaviour seems documented in the php docs.
At both GNU Savannah (savannah.gnu.org) and Gna! (gna.org), we use the Exim version packaged by Debian. In both cases, the mail we receive via mailing lists (and in the Mailman archives) have the newlines doubled. The mails we receive at our personnal mail addresses is correct (no doubling). As far as I'm concerned, line doubling _does_ look ugly and unprofessional ;)
As a result, I was under the impression that Mailman is the one that doubles the newlines. Now maybe Exim as an SMTP server (not as a sendmail-compatible command) is doubling lines. But are you completely sure Mailman (or a Python library used by Mailman) is not converting \r\n to \n\n?
My guess: When exim receives \r\n at its sendmail interface it is kind and cleans it up and converts it to a \n, and when sending over SMTP it converts to \r\n.
When Mailman receives \r\n it trusts the user and considers it a line with a \r before the lineending \n. When Mailman delivers the mail over SMTP it writes the lineending \n as \r\n, ending up with SMTP lines ending with \r\r\n. A receiving MTA might consider that a malformed (mac) lineending followed by a wellformed one and be kind enough to make the first wellformed, causing two linefeeds...
I suggest that you try to convert all \r\n to \n before calling mail(), that you avoid using mail() and delivers through smtp instead, and finally that you fix mail() ;-)
Regards, Mads Kiilerich _______________________________________________ Mailman-Developers mailing list [email protected] http://mail.python.org/mailman/listinfo/mailman-developers Mailman FAQ: http://www.python.org/cgi-bin/faqw-mm.py Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/ Unsubscribe: http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org
Security Policy: http://www.python.org/cgi-bin/faqw-mm.py?req=show&file=faq01.027.htp
