mail命令总是指向根文件

我正在尝试configuration一个postfix邮件服务器。 邮件的根目录是可访问的。 但是,当检查非root用户的邮件时,我得到以下错误

/ var / spool / mail / root:权限被拒绝

文件/var/spool/mail/$USER存在于相应的用户,但仍然是邮件命令引用根文件。

输出postconf -n

 alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 html_directory = no inet_interfaces = all inet_protocols = all mail_owner = postfix mail_spool_directory = /var/spool/mail mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mydomain = domain.in myhostname = server.domain.in mynetworks = 166.64.32.22, 127.0.0.0/8 myorigin = $mydomain newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES sample_directory = /usr/share/doc/postfix-2.6.6/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop unknown_local_recipient_reject_code = 550 

所以,这里的问题与postfix根本不相关。 服务器端的Postfix运行正常,但邮件客户端不正常。

默认情况下, mail命令将使用$MAIL环境variables来确定邮箱的位置(除非使用-f参数明确地告诉它)。 在CentOS bash shell中,$ MAILvariables的默认值是/var/spool/mail/$USER 。 从man mail片段。

邮件

用作用户的邮箱,如果设置。 否则,使用与系统相关的默认值。 可以是一个协议:/ /string(更多信息请参阅文件夹命令)。

OP在注释中声明他使用root用户的su myuser来更改shell上的用户。 不幸的是,这有一些影响。 variables$ MAIL仍然指向/var/spool/mail/root 。 因此,邮箱path没有改变,但previlige已经被删除到非root用户。

为了解决这个问题,你可以使用su -l myuser来改变shell的用户。 从man su片段。

– , – l,–login

使shell成为loginshell

没有-l ,环境variables不会自己改变。

结论:两个软件(postfix和bsd-mailx)都performance正确。 问题是OP在更改用户之前未能设置环境variables。