Ok, firstly I'm aware this has been brought up before and supposidly "fixed" but the issue is still present in 1.2.7.
I've looked at the source and fixed it for myself but I'm wondering why it is you attempt to use different line breaks for different OS'? (lines 79-84 of include/email.php)
Firstly, the server PHP is running on in most cases will not be the same as the SMTP server, so they way it is determined could produce bad results. For example, if indeed it did matter that for instance mac MTA's only accepted "\r", and you were using a win php server for punbb but set it to use the mac as smtp server. You'd end up with "\r\n" being sent to the mac.
Secondly, any standards compliant MTA will allow "\r\n" breaks in headers over SMTP sessions (different story to it being piped through a CLI program, as with mail() on *nix), so I don't see why not just make all headers end with "\r\n" as done with the main message body.
P.S. The reason qmail rejects this is becasue it's fully standards compliant (painfully so according to some) and doesn't even bother to fix invalid input (it easily could) out of principal. Standards are here to be used, not ignored.... just an answer since you seem genuinly baffled as to why in previous posts
P.P.S. See section 3.1.2 of RFC822 if you need confirmation of header syntax.