We're having quite an odd issue. We have separate development (internal) and production (public) servers for our University website. After a recent hardware upgrade, we noticed that the production server is having an odd problem: PHP's mail() function returns false even if the message is sent. On development, mail returns values as expected based on whether or not the message was sent. On production, it always claims the message wasn't sent. This is problematic, as all of our email services are reporting to users that they failed every single time, leading to frustration, phone calls and a LOT of resends.
Both servers' relevant PHP configurations are identical (the only differences are things like server name, etc. and some additional security settings on development. All of the settings relating to sendmail are the same.
I've found a few inconclusive reports online. Some indicate that PHP's SIGCHILD handler is the culprit, but both servers are using it and development has no problems.
So far, the only difference we've noticed is that it appears production has a newer version of sendmail. Could this be causing the problem? If so, are there any known solutions (other than downgrading sendmail)?
I doubt newer software would introduce breaks like this, so if that's not it, where else should we be looking? I've combed through every line of phpinfo() to look for configuration differences, to no avail.