【问题标题】:sendmail sh: /usr/sbin/sendmail: Permission deniedsendmail sh: /usr/sbin/sendmail: 权限被拒绝
【发布时间】:2012-01-30 10:01:17
【问题描述】:

我无法从 php 脚本发送邮件,尽管我可以使用 sendmail 和命令行从命令行发送邮件

php sendMyMail.php

这些我都试过了

  1. httpd 以 apache 用户身份运行,我将 apache 用户添加到 smmsp 组

  2. httpd_can_sendmail --> 开启

  3. SELinux status:                 enabled
    SELinuxfs mount:                /selinux
    Current mode:                   permissive
    Mode from config file:          enforcing
    Policy version:                 24
    Policy from config file:        targeted
    

但是在httpd error_log中还是显示这个错误

sh: /usr/sbin/sendmail: 权限被拒绝

任何人都可以有任何想法吗?我非常感谢您的所有建议,并且对这个建议感到非常疲惫。

【问题讨论】:

  • 你有没有检查权限尝试通过# chmod -v 2755 /usr/sbin/sendmail
  • 是的,但没有运气。谢谢
  • /usr/sbin/sendmail 的权限是什么?您是否在可以访问 sendmail 二进制文件的服务器上运行?
  • lrwxrwxrwx。 1 root root 21 Jan 16 17:35 sendmail ->/etc/alternatives/mta 还有一个很奇怪的问题,我上次改成 744 了,被重置了

标签: php apache sendmail


【解决方案1】:

您可以从命令行发送电子邮件并不意味着任何用户都可以(例如 apache)。

检查 apache 是否真的可以发送电子邮件:

sudo -u apache sendmail root@localhost

阅读邮件日志文件(通常是 /var/log/mail.log)以查看发生了什么。 root 的收件箱通常在 /var/spool/mail/root )。提示:如果您不想将 root 用作豚鼠,请使用不同于 root 的其他用户。

【讨论】:

  • 嗨,谢谢,我已经运行了该命令,没有登录邮件日志,但是它也没有显示任何错误,并且 sendmail 命令不适用于 apache 用户。我运行 sudo -u php sendMyMail.php 仍然得到这个错误 sh: /usr/sbin/sendmail: Permission denied
  • 您确定您有一个名为“php”的用户吗?当您从命令行运行 php 时,执行该命令的用户就是您登录的用户(输入 whoami 以查看您是谁)。通过web服务器运行php,apache是​​运行php的用户。你用的是什么*nix系统?
  • 非常感谢您的帮助。我更改了 send_path = /usr/sbin/sendmail.sendmail -t -i 并更改了权限 chmod -v 2755 /usr/sbin/sendmail.sendmail 它现在正在工作。这绝对是权限问题。我没有用 /usr/sbin/sendmail 把它整理出来。还是非常感谢。
【解决方案2】:

除了setsebool -P httpd_can_sendmail 1你需要允许apache连接之外:setsebool -P httpd_can_network_connect 1

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 2016-11-12
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2011-08-02
    • 2013-05-27
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多