mail命令總是指向root的文件

mail命令總是指向root的文件

我正在嘗試配置 postfix 郵件伺服器。 root 的郵件是可以存取的。但在檢查非 root 使用者的郵件時,出現以下錯誤

/var/spool/mail/root:權限被拒絕

文件/var/spool/mail/$USER存在於各個使用者中,但郵件命令仍然引用 root 的文件。

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

答案1

所以,這裡的問題與 postfix 根本無關。伺服器端的 Postfix 行為正常,但郵件用戶端行為異常。

預設情況下mail命令in 將使用$MAIL環境變數來確定郵箱的位置(除非您使用-f參數明確告訴它)。在 CentOS bash shell 中,$MAIL 變數的預設值為/var/spool/mail/$USER。片段來自man mail.

郵件

用作使用者的郵箱(如果設定)。否則,將使用系統相關的預設值。可以是協議://字串(有關詳細信息,請參閱資料夾命令)。

OP在評論中指出他使用su myuserroot 使用者來更改 shell 上的使用者。不幸的是,這有一些影響。變數 $MAIL 仍然指向/var/spool/mail/root.因此,郵箱路徑沒有改變,但權限已經下降到非 root 使用者。

要解決此問題,您可以su -l myuser在 shell 上變更使用者。片段來自man su.

-, -l, --登入

讓 shell 成為登入 shell

如果沒有-l,環境變數將不會改變本身。

結論:兩個軟體(postfix 和 bsd-mailx)都運作正常。問題是OP未能在更改使用者之前設定環境變數。

相關內容