【问题标题】:PHP Mail function fails with exim4PHP Mail 功能因 exim4 失败
【发布时间】:2018-03-27 10:38:00
【问题描述】:

Debian Web 服务器升级到jessie 后,PHP 邮件功能失败。软件版本是,

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

谢谢!

【问题讨论】:

  • 您使用的是同一个 MPM 吗? SElinux 被禁用了吗?

标签: php apache debian sendmail exim4


【解决方案1】:

根据错误提示

无法设置 gid=33 或 uid=0 (euid=0):强制实数 = 有效

可能不需要使用root,组33(可能是www-data)也应该足够了。

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

【讨论】:

  • 感谢您的回答,但我尝试了 LimitGIDRange,但没有成功。我也在寻找一个可以处理 apache 和 exim 之间的电子邮件的应用程序。
【解决方案2】:

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

解决方案 1:

您可以安装ssmtp。 Debian apt-get 将在安装 ssmtp 时删除 exim4。因此,您必须将其配置为使用外部 smtp 服务器。 指向php 发送邮件路径,如sendmail_path /usr/bin/ssmtp -t -i。这可能因不同的分布而不同。

解决方案 2:

您可以安装 esmtp 并将其配置为使用 localhost smtp。见/etc/esmtprc。指向php 发送邮件路径,如sendmail_path /usr/bin/esmtp -t -i。这可能因分布不同而有所不同。

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 2013-11-18
    • 2016-03-17
    • 2012-05-14
    • 2012-06-07
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多