在没有更改777权限的情况下使用Apache + PHP发送邮件的权限出错

时间:2012-03-14 23:56:05

标签: php apache sendmail

除非我将/ var / spool / clientmqueue的权限更改为777,否则我无法使用apache + php工作sendmail。

/ var / spool / clientmqueue

的所有权
drwxrwxrwx 2 smmsp mail 4096 Jul 19 11:50 clientmqueue

我与smmsp和apache的用户组搞混了。

id apache
uid=48(apache) gid=48(apache) groups=48(apache),12(mail)

id mail
uid=12(mail) gid=12(mail) groups=12(mail),48(apache)

SELinux被禁用

getsebool httpd_can_sendmail
getsebool: SELinux is disabled

如果我将文件夹权限设置为770

,则在maillog中
NOQUEUE: SYSERR(apache): can not write to queue directory
/var/spool/clientmqueue/ (RunAsGid=48, required=12): Permission denied

不会发送任何邮件,我会从php收到错误。

如果我将文件夹设置为0777,那么我会在maillog中找到它

dangerous permissions=40776 on queue directory /var/spool/clientmqueue/

但是php会发送好邮件。

是否有可能让它与0770一起使用,并且在组中读取apache用于邮件。我知道错误是得到了主要的GID 48,但它也分享了第12组。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

今天我有同样的问题(来到这里寻找答案)。

我最终找到this overview;从该列表中运行以下命令为我解决了问题:

chmod 4555 /usr/sbin/sendmail

这会在sendmail二进制文件上设置setuid special mode,可能允许Apache以邮件用户身份发送邮件。

(我在运行之后重新启动了apache和sendmail守护进程,但我不确定哪些实际需要重启)

我首先对引起这个问题感到非常好奇但是......

答案 1 :(得分:1)

这个对我有用。在Ubuntu机器上点击这个之前我有其他错误。让我分享一下,以防其他人遇到他们。我得到了 NOQUEUE:SYSERR(www-data):不能chdir(/ var / spool / mqueue-client /):权限被拒绝。

usermod -a -G smmsp www-data
chmod 770 /var/spool/mqueue-client     (don't use 775, it gives dangerous permission error in the log)
service apache2 restart (this is required for the above to take effect)
Now sending email gives a different error.
- NOQUEUE: SYSERR(www-data): can not write to queue directory /var/spool/mqueue-client/
- chmod 4555 /usr/sbin/sendmail
- Above command fixed the email issue. => didn't see any error in the mail.log this time.