以非root用户身份从命令行发送邮件时出错

我试图在CentOS上以非root用户身份从命令行发送邮件。 我正在使用下面的命令,但得到一个错误:

$ echo test | mail -s "test" [email protected] -c [email protected] WARNING: RunAsUser for MSP ignored, check group ids (egid=102, want=51) can not write to queue directory /var/spool/clientmqueue/ (RunAsGid=102, required=51): Permission denied 

我已经将用户添加到组51(smmtp),我可以cd和写入到该目录作为用户。

为什么我得到错误?

一些相关权限:

 # ls -la /var/spool/clientmqueue/ total 8 drwxrwx--- 2 smmsp smmsp 4096 Mar 8 14:25 . drwxr-xr-x. 13 root root 4096 Oct 21 15:09 .. # ls -la /usr/sbin/sendmail lrwxrwxrwx 1 root root 21 Oct 21 15:09 /usr/sbin/sendmail -> /etc/alternatives/mta # ls -la /etc/alternatives/mta lrwxrwxrwx 1 root root 27 Oct 21 15:09 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail # ls -la /usr/sbin/sendmail.sendmail -rwxr-sr-x 1 root smmsp 833512 Nov 11 2010 /usr/sbin/sendmail.sendmail 

Sendmail 希望电子邮件地址是命令行中的最后一个东西。 如果您在电子邮件地址后有任何参数,则会将其parsing为电子邮件地址。 在上面的例子中,它试图parsing“-c”作为一个电子邮件地址,并给出一个无关的错误。

 # BAD $ echo test | mail [email protected] -s "test" # BAD $ echo test | mail [email protected] -c [email protected] # GOOD $ echo test | mail -s "test" -c [email protected] [email protected] 

TO电子邮件地址必须遵循CC电子邮件地址,电子邮件主题以及您需要传递给sendmail的任何其他参数。

即使二进制具有正确的权限, /usr/sbin中的程序也不能直接运行(在path中看不到)普通用户,请写出整个path。

像这样使用:

 echo "Subject: sendmail test" | /usr/sbin/sendmail -v [email protected] 

检查/ usr / lib下的sendmail文件夹的权限和所有权修复后,它为我工作。