I'm not sure why PHP's mail() needs access to the dash shell; it should only really need access to sendmail. Maybe it spawns a shell and runs the sendmail command in the background. (postfix or sendmail, they are the same as far as PHP is concerned.)
Anyway, if I remember correctly, Linode's OS images don't come with AppArmor by default. But that was a few years ago, so things might have changed. Or you might have installed it yourself.
If you have AppArmor enabled, you can disable it on Debian/Ubuntu systems by using the following commands:
Code:
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
If you get an error message telling you that /etc/init.d/apparmor doesn't exist, then you'll know that it's not enabled. In any case, try again when you're sure that AppArmor isn't enabled on your server.
Also, set error_reporting to E_ALL | E_STRICT and enable error logging in your php.ini file, and restart Apache. This will give you access to the maximum amount of error messages -- down to the most trivial notices -- which might help track down the problem. PHP hides some errors by default, so you can't rely on what's shown on the browser.