无法在 nginx 上使用 mail() 但可以使用 msmtp 在控制台上发送邮件

无法在 nginx 上使用 mail() 但可以使用 msmtp 在控制台上发送邮件

我在我的 centos 6 上设置了 msmtp,我知道它运行良好,因为我可以使用 bash 命令发送电子邮件:

echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" |msmtp --debug --from=default -t [email protected]

然后,我继续允许 nginx 也允许使用msmtpphp.ini这是我的 sendmail 路径:

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc --logfile /var/log/msmtp.log -a gmail -t"

然后,我尝试使用这个发送:

<?php
if(mail("[email protected]","A Subject Here","Hi there,\nThis email was sent using PHP's mail function."))
print "Email successfully sent";
else
print "An error occured";
?>

但是,它一直失败,我开始认为这是因为permission日志中没有写任何内容,这是我拥有的权限

对于 msmtprc @ /etc/

[root@xxxx ~]# cd /etc/
[root@xxxx etc]# ls -l
-rw-------  1 nginx   nginx     248 Apr  2 14:55 msmtprc

对于/var/log

-rw-r--r-- 1 nginx  nginx    788 Apr  2 14:56 msmtp.log

这是权限问题吗?还是其他问题。我应该chown把它交给谁来处理 nginx?还是其他问题?

希望有人能帮忙,我已经试了好几个小时了,真是令人沮丧。谢谢!

答案1

从 CentOS 6.6 开始,应用于 Apache 的 SELinux 策略现在也以同样的方式应用于 nginx 和 php-fpm。因此,您需要使用正确的 SELinux 布尔值来允许 Web 服务器发送邮件。

setsebool -P httpd_can_sendmail 1

相关内容