无法打开邮箱 /var/mail/USER:权限被拒绝,没有 USER 的邮件

无法打开邮箱 /var/mail/USER:权限被拒绝,没有 USER 的邮件

当我运行命令时。su - fmaster mail

我收到错误:

Cannot open mailbox /var/mail/fmaster: Permission denied No mail for fmaster

我也以 fmaster 身份登录。终端 -> 邮件。

/var/mail/fmaster: Permission denied No mail for fmaster

我尝试执行此代码但仍然出现相同的错误。

sudo touch /var/mail/$USER
sudo chown $USER:mail /var/mail/$USER
sudo chmod o-r /var/mail/$USER
sudo chmod g+rw /var/mail/$USER

答案1

该用户fmaster可能不在该mail组中。您可以运行groups命令来检查您属于哪个组。

要添加fmaster到组,mail请使用以下命令:

sudo adduser fmaster mail

运行后:

sudo chmod ug+rw /var/mail/fmaster

答案2

如果你遵循了 Radu Rădeanu 的建议,请记住

/var/mail/fmaster

直到收到第一封电子邮件后才会存在。因此,在进一步排除故障之前,您应该向 fmaster 发送一封电子邮件。

答案3

我确认第一次向用户发送电子邮件确实为用户创建了邮件目录。只需执行以下操作:

mail fmaster@localhost

/var/mail/fmaster将创建具有正确权限的目录。然后,用户 fmaster 可以使用该mail命令阅读邮件。

答案4

首先要理清的是运行时您正在使用哪个邮件程序mail

做这个:

$ command -v mail               # (Similar to the old `which`.) You'll likely see:
/usr/bin/mail

然后看看这是什么:

$ ls -l /usr/bin/mail           # And now you'll likely see (at least for Debian):
lrwxrwxrwx 1 root root 22 Feb 17  2019 /usr/bin/mail -> /etc/alternatives/mail

然后看看它在哪里:

$ ls -l /etc/alternatives/mail  # And I get:
lrwxrwxrwx 1 root root 23 Dec 10 19:58 /etc/alternatives/mail -> /usr/bin/mail.mailutils

最后检查一下:

$ ls -l /usr/bin/mail.mailutils
-rwxr-xr-x 1 root root 218160 Nov 18  2020 /usr/bin/mail.mailutils

因此,当您运行 时mail,您实际上是在运行mail.mailutils。还请注意,它由 root 拥有,但每个人都有权限运行、读取和执行它。


现在查看该mailutils包的配置文档,我们发现有很多可能的配置方法,包括:

  1. 系统范围配置/etc/mailutils.conf,或

  2. 用户覆盖/home/[your-username]/.mail,甚至

  3. 启动覆盖mail --file /var/mail/[your-username]

方法 2 的设置将覆盖方法 1,方法 3 的设置将覆盖方法 2 和方法 1。

重要的一点是,邮箱格式不一定是mbox(单个大文件,每个文件包含多条消息)。它也可以是mailbox格式(或单个文件的树)。还有其他可用的格式,例如mh

对于上述前两个选项,你可能需要使用 URL

mailbox {
       # Create mailbox URL using PATTERN.  
       #   (preferred way of configuring mailbox locations)
       mailbox-pattern PATTERN;
}

像这样:

mailbox { mailbox-pattern "/var/mail/${user}"; }

另一个重点是您的系统有两个地方存放您的邮箱:

  • 收到的消息通常集中在一个地方,/var/mail/[username]并且
  • 根据邮箱格式,已读邮件有以下几种形式:
    • /home/[your-username]/mbox 或者
    • /home/[your-username]/mailbox/*

如果您正在使用任何 mailutils 程序,您可以查看您的系统如何配置:

$ mailutils info           # which gives you something like this:
VERSION=3.10
SYSCONFDIR=/etc
MAILSPOOLDIR=/var/mail
SCHEME=mbox
LOG_FACILITY=mail
...

最后,不要混淆与邮件相关的术语“spool”的两种不同用法。exim4 有一个所谓的 spool,它保存着等待发送的消息,然后当你去阅读电子邮件时,有些人会说你正在从邮件 spool 中读取。最好记住你正在从邮箱中读取,并且只有 exim4 才有一个 spool。对于本地发送的消息,exim4 从它的 spool 中读取消息,并将其放入你的邮箱中,/var/mail/[your-username]如果你正在使用 ,通常是mbox

另请注意,您必须在mail 团体,正如上面其他人所澄清的那样。他们没有告诉你的是,你可能需要重新启动才能使你添加到邮件组的内容保留下来并在你打开终端窗口时显示出来。简单地打开另一个终端窗口不会让你加入该组,注销并重新登录也无法解决这个问题。


现在您知道要读取哪个邮箱了,您可以查看它的权限来查看是否需要更新它们。

相关内容