PHP exim4 邮件功能失败

PHP Mail function fails with exim4

PHP 将我的 Debian 网络服务器升级到 jessie 后邮件功能失败。软件版本是,

Apache2 : 2.4 
Php : 5.6 
Exim4: 4.8

这个网络服务器有多个网站,我使用 libapache2-mpm-itk 模块来 运行 php 每个网站的不同用户。所以www-data没有用到。

尝试使用 php 邮件功能发送电子邮件时出现以下错误。

unable to set gid=33 or uid=0 (euid=0): forcing real = effective

发送邮件路径是,

sendmail_path   /usr/sbin/sendmail -t -i 

指向exim,

/usr/sbin/sendmail -> exim4

我从 http://blog.gaiterjones.com/send-php-mail-ubuntu-upgrade/ 找到了一个解决方案,当我使用 itk 模块进行以下设置时,问题得到了解决,

LimitUIDRange 0 2000

但是像我这样的共享服务器不推荐允许 root 用户。

有更好的解决方案吗?

编辑: 我发现了一个未解决的错误报告。 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=797653

谢谢!

根据报错信息

unable to set gid=33 or uid=0 (euid=0): forcing real = effective

可能没有必要使用 root,第 33 组(可能 www-data)也应该足够了。

所以你应该可以使用 LimitGIDRange 1 9999 而不是 LimitUIDRange

我已经解决了这个问题。实际问题在这里解释 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=797653.

解决方案一:

您可以安装 ssmtp。 Debian apt-get 将在安装 ssmtp 时删除 exim4。所以你必须将它配置为使用外部 smtp 服务器。 点php sendmail 路径喜欢sendmail_path /usr/bin/ssmtp -t -i。这可能因不同的分布而异。

方案二:

您可以安装 esmtp 并将其配置为使用 localhost smtp。参见 /etc/esmtprc。点php sendmail 路径如sendmail_path /usr/bin/esmtp -t -i。这可能因不同的分布而异。