I was getting a web site up and running on Centos 6.3, and PHP was refusing to talk to the SMTP server on the same box. This, in and of itself, is not unusual. There’s a checklist:
- Verify SMTP’s running
- Check that the SMTP server is configured to accept connections from localhost
- Check the firewall rules
- Really check the firewall rules by generating an email using telnet localhost 25 or nc localhost 25 from the command line
- Check that PHP is trying to talk to the SMTP server you think it is
- Look in the system log for SELinux being a bully and preventing communication
In this case, all of the above checked out cleanly. I was perplexed. But it turns out that, in what is as shocking and surprising as my cat wanting to be fed,
SELinux was indeed the culprit. It just wasn’t logging the problem anywhere.
setsebool -P httpd_can_network_connect=1
as root solved the problem.
Moral(s) of the Story: The cat is always hungry. SELinux is always fuckin’ shit up.