ID:               15841
 Comment by:       philipp dot kempgen at amooma dot de
 Reported By:      rha at juggernaut dot com dot au
 Status:           No Feedback
 Bug Type:         Mail related
 Operating System: Linux
 PHP Version:      4.1.2
 Assigned To:      yohgaki
 New Comment:

Ok guys, if it's not mail() which is wrong then
it's a documentation problem.
---cut---
Note: If messages are not received, try using a LF (\n) only. Some poor
quality Unix mail transfer agents replace LF by CRLF automatically
(which leads to doubling CR if CRLF is used). This should be a last
resort, as it does not comply with ยป RFC 2822.
---cut---

This is _not_ about "poor quality" MTAs or a "last resort".

The note should read:
Note: mail() talks to the sendmail command on Unix/Linux which
expects line endings to be the platform's native line endings
which is LF (\n) only on Unix/Linux and CRLF (\r\n) on Windows.
The sendmail will replace LF (\n) by CRLF (\r\n) automatically
to comply with RFC 2822. Thus you should use the special PHP_EOL
constant to separate mail headers.


Previous Comments:
------------------------------------------------------------------------

[2008-10-16 13:12:44] devnull at div dot org

I just had a little run-in with the postfix developers over at
postfix-users about this issue.

http://tech.groups.yahoo.com/group/postfix-users/message/244799

Quote:Wietse Venema:
>> Specifically, Postfix accepts local submissions in UNIX format
>> (LF) or MSDOS format (CRLF) format BUT YOU MIST NOT MIX FORMATS.
>
> So how does postfix determine what format you are using?
> Is there a way to explicitly tell it what to expect?
>
Postfix looks at the first input line. There currently is no
way to override this, so your best bet is to use the same line
terminator consistently (having a first line with CRLF might
work "best" for hybrid mail, but that behavior is not promised).

The current behavior originates from the time when binary transparency
was considered a good thing.
--

There seemed to me to be a marked hostility towards the idea of trying
to be helpful about this, but on the other hand I got the impression
they might not be hostile if someone offered a patch for a 
SENDMAIL_EOF_COMPAT_MODE or similar.

Personally I am not much good at C, but the challenge is hereby issued
:)

------------------------------------------------------------------------

[2007-02-21 09:16:42] m_alpka at tlen dot pl

I discovered another temporary solution. It's similar to @guy's but it
is not using additional scripts that have to be installed
(unix2dos,dos2unix). Also php didn't allow me to use piped sendmail in
sendmail_path (php.ini)
I'm using qmail.

---
cd /var/qmail/bin
cat > sendmailfix

#!/bin/sh
sed 's/^M$//' | /var/qmail/bin/sendmail ${1+"$@"}
[Ctrl+D]

chmod 555 sendmailfix
chgrp popuser sendmailfix
---
^M is a combination of [Ctrl+V, Ctrl+M]

Finally set the value of sendmail_path in php.ini to our script

---
sendmail_path = /var/qmail/bin/sendmailfix -t -i

------------------------------------------------------------------------

[2007-02-07 10:05:27] tony2...@php.net

http://www.php.net/manual/en/reserved.constants.php

PHP_EOL (string) 
Available since PHP 4.3.10 and PHP 5.0.2

------------------------------------------------------------------------

[2007-02-07 09:55:43] bigtree at donotspam dot 29a dot nl

Might I suggest to add a platform-dependant PHP constant (for example
MAIL_HEADER_SEPARATOR) so we can use the mail() function with
platform-independent code?

The constant value would be '\n' on unix and '\r\n' on windows.

------------------------------------------------------------------------

[2006-11-30 08:10:38] tech+ohtf dot cuc dot arg at onlineopinion dot
com dot au

The PHP documentation now asks for "\n" , which is correct for its
implementation in Unix systems, so the bug as originally reported is
solved. I can't comment on whether this change might have caused
problems in Windows, but I assume not.

Note: This was not just an issue with qmail; it also affected postfix's
implementation of 'sendmail'.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/15841

-- 
Edit this bug report at http://bugs.php.net/?id=15841&edit=1

Reply via email to