最近我在运行 kubuntu 桌面的 ubuntu 12.04 服务器上安装了 msmtp。 msmtp 的安装工作正常,我什至可以使用 gmail 的 smtp 服务器通过终端发送邮件。
我的问题是,虽然可以通过终端发送邮件,但它仍然无法使用 php 邮件。我尝试过使用 phpmail()
功能,但我从未收到任何电子邮件。
我检查了 apache 错误日志(/var/log/apache2/error.log),但它们是空的。
有谁知道如何解决这一问题?如果需要任何进一步的信息,请说出来:)
执行php脚本时也没有出现错误。
下面的代码与已发送的邮件相呼应,但我从未收到过电子邮件:
<?
if(mail( '[email protected] /cdn-cgi/l/email-protection', 'Test mail from localhost', 'Working Fine.'))
{
echo 'Mail sent';
}
else
{
echo 'Error. Please check error log.';
}
?>
对我来说,原因是 msmtp 配置文件的文件所有权和权限不正确。
当我尝试从 CLI 运行 PHP 邮件发送脚本时root
, 有效。但是将用户切换到www-data
并尝试再次运行该脚本(也在 CLI 上)失败,并显示以下消息:
msmtp: /etc/msmtprc: contains secrets and therefore must be owned by you
msmtp: /etc/msmtprc: contains secrets and therefore must have no more than user read/write permissions
通过向 Apache(或 Nginx 等)发出 HTTP 请求来触发 PHP 脚本将产生相同的结果(因为 msmtp 将由www-data
user).
假设您的 msmtp 配置文件位于/etc/msmtprc
,这些命令将解决这些问题:
chown www-data:www-data /etc/msmtprc
chmod 600 /etc/msmtprc
在进行这些更改之前,请考虑这些新权限是否适合您的情况(例如,是否存在安全隐患?)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)