#39507 [Opn]: concurrent attempts to connect to SMTP relay fail miserably
| From: | rherror404 at gmail dot com | Date: | Mon, 20 Nov 2006 19:42:16 +0000 |
| Subject: | #39507 [Opn]: concurrent attempts to connect to SMTP relay fail miserably | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-105216@lists.php.net to get a copy of this message | ||
ID: 39507
User updated by: rherror404 at gmail dot com
Reported By: rherror404 at gmail dot com
Status: Open
Bug Type: Mail related
Operating System: Windows
PHP Version: 5.2.0
New Comment:
I have found a work-around (not a fix).
Do not rely upon the current mail() (at least under the Apache WinNT
MPM) to be of any use for the case where more than one mod_php script
is forwarding a message to an SMTP relay host.
Have the mod_php script spawn a child process that takes a bit of
serialized state via its STDIN and let the new process do the mail()
work. See the proc_open() docs.
If you have serious volumes of mail to send, either do it from a Linux
box or find some other way to do it from your Windows box. Calling
mail() under Windows/Apache/PHP for anything close to that (as it
stands) is not advisable.
Previous Comments:
------------------------------------------------------------------------
[2006-11-14 16:14:10] rherror404 at gmail dot com
I suspect this may be the same bug mentioned in #31676. My best guess
is that this is related to multi-threading.
------------------------------------------------------------------------
[2006-11-14 04:18:49] rherror404 at gmail dot com
<?
/*
Here it is again, edited slightly
to run on a Linux machine so that
it has its local sendmail do the work.
Concurrent requests to the script were
handled quite nicely. The huge difference
in this case is the Apache prefork MPM.
*/
define('EXTRAHEADERS', "MIME-Version: 1.0\r\nContent-type: text/html;
charset=iso-8859-1\r\nX-Mailer: PHP\r\n");
define('MAILMSG',
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html><head><title>foo</title><style type='text/css'>
body {margin: 0; font-size: 10pt; font-family: sans-serif, arial;
color: #000000; background-color: #ffffff;}
</style></head><body><div style='font-size: 12pt; background-color:
#ffff00;'>" . date("Y-m-d H:i:s") . "</div>
random junk<br />" .
str_repeat("afhlkhsad;lfj;lkjsa;lfjasd;lkjf;lkjsad;lkfjsad;lkfjsad;lkfja
sd;lfkjasd;lkfjsa;ldf<br />\n", 100) .
"</body></html>");
ini_set('html_errors', FALSE);
define('MAILTO', 'something@thatworks.com'); // something real
$retval = mail(MAILTO, 'foo', MAILMSG, EXTRAHEADERS);
echo ( $retval ? 'TRUE' : 'FALSE' ) . "\n\n\n";
exit();
?>
------------------------------------------------------------------------
[2006-11-14 03:56:24] rherror404 at gmail dot com
Is the mail() function sufficiently thread-safe under the Windows MPM
(for Apache)? I have to wonder if the two concurrent threads are
stepping on each other in their efforts to talk to the SMTP box.
------------------------------------------------------------------------
[2006-11-14 03:51:51] rherror404 at gmail dot com
To clarify, the bash snippet should read like this (see below). Line
14 contains the call to mail().
========================================
$ (curl "http://192.168.1.2/error.php"
&); (curl
"http://192.168.1.2/error.php" &)
$
Warning: mail(): SMTP server response: 503 5.0.0 foo.bar.com Duplicate
HELO/EHLO in C:\Program Files\Apache Group\Apache2\htdocs\error.php on
line 14
FALSE
Warning: mail(): Failed to Receive in C:\Program Files\Apache
Group\Apache2\htdocs\error.php on line 14
FALSE
$
------------------------------------------------------------------------
[2006-11-13 23:33:06] rherror404 at gmail dot com
s/on line 107/on line 14/g
------------------------------------------------------------------------
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/39507
--
Edit this bug report at http://bugs.php.net/?id=39507&edit=1