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

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

我尝试以非 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 文件夹的权限和所有权。修复后,它对我来说就起作用了。

相关内容