sendmail的正确权限配置是什么

时间:2014-04-14 03:45:09

标签: ubuntu-12.04 sendmail

此问题来自与此https://serverfault.com/questions/320607/ubuntu-jaunty-sendmail-php-mail-premission-errors

非常类似的问题

但那些答案并没有解决我的问题

我有一个PHP应用程序,它使用PHPMailer发送电子邮件。

我在我的ubuntu 12.04 LTS上用

安装了sendmail
sudo apt-get install sendmail
sudo sendmailconfig

但是应用程序未能发送任何邮件。在mail.err中,它说:

Apr 14 00:31:42 AY sendmail[32241]: NOQUEUE: SYSERR(www-data): can not chdir(/var/spool/mqueue-client/): Permission denied

虽然www-data是apache2的用户名。

然后我跟踪了一些来自互联网的指南,将www-data添加到smmsp组:

sudo usermod -a -G smmsp www-data

现在我

groups www-data

我得到了

www-data : www-data smmsp

并且/ etc / group中的行是:

smmsp:x:114:www-data

此外,我确保访问/ var / spool / mqueue-client /是770

/var/spool]$ ls -la
total 28
drwxr-xr-x  7 root   root  4096 Apr  2 00:21 .
drwxr-xr-x 11 root   root  4096 Apr 14 03:30 ..
drwxr-xr-x  5 root   root  4096 Aug  6  2012 cron
lrwxrwxrwx  1 root   root     7 Aug  6  2012 mail -> ../mail
drwxr-s---  2 smmta  smmsp 4096 Apr 14 06:25 mqueue
drwxrws---  2 smmsp  smmsp 4096 Apr 14 06:25 mqueue-client
drwxr-xr-x  2 root   root  4096 Apr 13  2012 plymouth
drwxr-xr-x  2 syslog adm   4096 Mar 31  2012 rsyslog

/]$ ls -ld /var/spool/mqueue-client/ /usr/sbin/sendmail
lrwxrwxrwx 1 root  root    26 Apr  2 00:21 /usr/sbin/sendmail -> /etc/alternatives/sendmail
drwxrws--- 2 smmsp smmsp 4096 Apr 14 06:25 /var/spool/mqueue-client/

但是当我尝试发送邮件时仍然会出错

Apr 14 03:26:57 AY sendmail[6131]: NOQUEUE: SYSERR(www-data): can not write to queue directory /var/spool/mqueue-client/ (RunAsGid=33, required=114): Permission denied

而33是www-data的gid

www-data:x:33:

我应该怎么做才能让sendmail工作但保持安全? 此外,生产环境中sendmail的正确权限配置(用户,组和目录访问等)是什么?

2 个答案:

答案 0 :(得分:6)

sendmail-8.12 +的标准安装需要以 ID设置安装sendmail二进制文件。
(/ usr / sbin / sendmail - > ... - > /usr/lib/sm.bin/sendmail)

-rwxr-sr-x 1 root smmsp ...

如果是您的软链接,请尝试:

 chown root:smmsp /usr/lib/sm.bin/sendmail
 chmod 2555 /usr/lib/sm.bin/sendmail

推荐权限在sendmail发行版的SECURITY文件中描述。在我的debian上,该文件由/usr/share/doc/sendmail-doc/sendmail/SECURITY.gz包安装为sendmail-doc

答案 1 :(得分:0)

所以-如果您继承了系统,并且想将/ var / spool / mqueue的位置更改为其他位置,并且在修改sendmail.mc并重新制作sendmail.cf或编辑sendmail时.cf目录,然后您启动sendmail并抱怨“权限被拒绝”,以上方法均无济于事-试试这个。

这些年来,我经历了以上所有系统,无论用户是什么,sendmail上的setgid是什么,或者任何目录上的权限和所有权信息是什么,我仍然会收到错误消息。在每种情况下,我都发现这与现有已安装的sendmail版本有关。即使是最新的。在每一个案例中,我都能通过以下方法解决问题:

  1. 如果不从mc文件构建,请备份sendmail.mc或sendmail.cf
  2. 对别名,virtusertable等进行备份...所有这些,因为有时重新安装会覆盖它们(通常会保存它们,但是...)
  3. 卸载sendmail(例如,“ yum remove sendmail -y”或“ apt remove sendmail -y”)
  4. 重新安装sendmail(例如,“ yum install sendmail sendmail-cf -y”或“ apt install sendmail sendmail-cf -y”

重新安装似乎可以解决该问题。

您可能需要使用已更改的QUEUEDIR用sendmail.cf文件的位置更新/ etc / sysconfig / sendmail,然后可能运行“ journalctl daemon-reload”进行修复,然后它应该可以工作。

sendmail的OEM安装版本存在某种问题,例如缺少用户/组smmsp等。...但这是在现代linux安装上解决此问题的最简单方法。