|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2016-11-10 02:22 UTC] sherwoodsports at gmail dot com
Description: ------------ Mail sent with the mail() function in PHP 7.0.9 or 7.0.11 results in a 550 error from mail servers that does not manifest in mails sent with the mail() function in PHP 5.3.24. The situation results in the receiving mail server to throw the following error during the DATA transmission of the mail message: 550+5.6.0+Lone+CR+or+LF+in+headers+(see+RFC2822+section+2.2) SMTP servers vary as it is a configuration issue to block incoming mail that exhibits this issue. The fix is likely to compare output of mail() for 5.3.24 vs. mail for 7.0.9 or 7.0.11 and resolve the "extra" CR or LF character addition. Expected result: ---------------- Sending from 5.3.24 (to server which identifies issue): 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 220+mx1.emailsrvr.com+ESMTP+-+VA+Code+Section+18.2-152.3:1+forbids+sending+spam+through+this+system 0 0 99 0 16 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 EHLO - xxxx 0 0 4 0 16 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 250-smtp5.gate.iad3a.rsapps.net+says+EHLO+to+xxx.xxx.xxx.xxx:60802 0 0 65 0 47 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 MAIL - FROM:<name@domain.com>+SIZE=740 0 0 4 0 47 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 250+2.1.0+Ok 0 0 12 0 172 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 RCPT - TO:<sendtoname@sendtodomain.com> 0 0 4 0 172 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 250+2.1.5+Ok 0 0 12 0 219 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 DATA - - 0 0 4 0 219 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 354+3.0.0+continue.++finished+with+"\r\n.\r\n" 0 0 46 0 250 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 250+2.0.0+Ok:+queued+as+D4/38-19322-24BB3285 0 0 44 0 468 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 QUIT - - 0 0 4 0 468 SMTP - - - - 2016-11-10 00:11:35 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 221+2.3.0+smtp5.gate.iad3a.rsapps.net+closing+connection 0 0 56 0 484 SMTP - - - - Actual result: -------------- Sending from 7.0.11 (to server which identifies issue): 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 220+mx1.emailsrvr.com+ESMTP+-+VA+Code+Section+18.2-152.3:1+forbids+sending+spam+through+this+system 0 0 99 0 16 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 EHLO - xxxx 0 0 4 0 16 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 250-smtp52.gate.iad3a.rsapps.net+says+EHLO+to+xxx.xxx.xxx.xxx:60785 0 0 66 0 47 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 MAIL - FROM:<name@domain.com>+SIZE=743 0 0 4 0 47 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 250+2.1.0+Ok 0 0 12 0 78 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 RCPT - TO:<sendtoname@sendtodomain.com> 0 0 4 0 78 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 250+2.1.5+Ok 0 0 12 0 140 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 DATA - - 0 0 4 0 140 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 354+3.0.0+continue.++finished+with+"\r\n.\r\n" 0 0 46 0 156 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 550+5.6.0+Lone+CR+or+LF+in+headers+(see+RFC2822+section+2.2) 0 0 60 0 172 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionCommand SMTPSVC1 xxxx - 25 QUIT - - 0 0 4 0 187 SMTP - - - - 2016-11-10 00:00:00 173.203.187.1 OutboundConnectionResponse SMTPSVC1 xxxx - 25 - - 221+2.3.0+smtp52.gate.iad3a.rsapps.net+closing+connection 0 0 57 0 203 SMTP - - - - PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 11:00:01 2025 UTC |
I think this is the same as my issue. There seems to be an extra character before the additional headers. For example: mail("to@email.com", "Subject", "Message", "From: from@email.com"); To: <to@email.com> X-PHP-Originating-Script: 0:test.php From: from@email.com From: <from@email.com> An additional From header is added and this causes it to be blocked when sent to gmail addresses. On the other hand, if I put a dummy header before it: mail("to@email.com", "Subject", "Message", "X-PHP-Fix: x\r\nFrom: from@email.com"); To: <to@email.com> X-PHP-Originating-Script: 0:test.php X-PHP-Fix: x From: <from@email.com> This is sent successfully to gmail addresses. My guess is that this is the lone CR or LF that is causing his emails to fail. I have one server running 7.0.10 that is affected and one running 5.3.13 that is not affected, which matches his experience.I don't think this is PHP doing this. At least not directly. Which MTA are you using? The first thing to understand here is that by default PHP just invokes an external MTA to send an email with the mail() function on non-Windows machines. The program that is run is defined by your sendmail_path ini setting. This also means we can override it to examine what exactly PHP is sending to the MTA program. Here is a test. Create this trivial PHP program: #!/usr/local/bin/php <?php file_put_contents("/tmp/test.log", file_get_contents("php://stdin"), FILE_APPEND); I called mine /home/rasmus/sm and I made it executable (chmod +x ./sm) Then I tried your example script of: <?php mail("to@email.com", "Subject", "Message", "From: from@email.com"); I ran it like this: php -d sendmail_path="/home/rasmus/sm" m The output I see in /tmp/test.log is: To: to@email.com Subject: Subject From: from@email.com Message What I think is happening here, at least for mattcoz at yahoo dot com is that the user invoking the MTA is not conifgured to be a trusted user and as such is not allowed to override the From address. The MTA inserts the space in front of it and adds its own From line. For sherwoodsports at gmail dot com, what is your mail() line that is producing that error? As you can see from my minimal test it doesn't appear that PHP is inserting an extra cr-lf in the headers. Again, it is likely some sort of interaction with your MTA.Like I mentioned, you should provide "bug case", not creating new bug report. PHP is not the only program modify mail header, so you should provide case that PHP produces malformed mail headers. BTW To: <to@email.com> X-PHP-Originating-Script: 0:test.php From: from@email.com From: <from@email.com> <--- PHP never adds this by mail("to@email.com", "Subject", "Message", "From: from@email.com"); Current mail() accepts multiline header, i.e. it allows too long line folding by "\r\n ", "\r\n\t", but it never split lines automatically.Thank you for re-opening. A manipulated MTA/UMA likely would not explain why the older version of PHP works, but the newer version does not. Also, all CRLF's used in the code are using PHP_EOL and are not using manual ('\n\r') characters to end lines. No single \r or \n characters are used, therefore are not subject to the non-conversion issue you suggest. This also supports the fact that the older PHP versions prior to 7 works without issues, but 7 does have issues.