我尝试以非 root 用户身份在 CentOS 上从命令行发送邮件。我使用以下命令,但出现错误:
$ 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
答案1
发送邮件期望电子邮件地址是命令行中的最后一个内容。如果电子邮件地址后面有任何参数,它会将它们解析为电子邮件地址。在上面的例子中,它试图将“-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 的任何其他参数。
答案2
即使二进制文件具有正确的权限,/usr/sbin
普通用户也无法直接运行(在路径中看不到),请写下整个路径。
使用方式如下:
echo "Subject: sendmail test" | /usr/sbin/sendmail -v [email protected]
答案3
检查 /usr/lib 下 sendmail 文件夹的权限和所有权。修复后,它对我来说就起作用了。