Linux/UNIX 中的“您有新邮件”消息是什么?

n0p*_*0pe 513 linux email unix root

有时,当我登录一个盒子并用“su”root 时,我会收到一条可爱的小消息,说我有邮件(感谢上帝,这不是 AOL)。

  • 这个邮件在哪里?
  • 它包含什么?
  • 谁/什么发送的?
  • 它有多重要?

这甚至是与电子邮件具有相同意义的实际“邮件”吗?或者只是我的系统告诉我什么?

编辑:关于这个问题,我是否可以像这样使用 sendmail 程序给自己发送邮件:email@localhost

use*_*686 410

这个邮件在哪里?

它可能在假脱机文件中:/var/mail/$USER或者/var/spool/mail/$USER是 Linux 和 BSD 上最常见的位置。

(其他位置也是可能的 - 检查是否$MAIL设置 - 但默认情况下,系统只会通知您/var(/spool)/mail。)

通常假脱机文件采用非常简单的mbox格式,因此您可以在文本编辑器或寻呼机中打开它。

为了稍微方便一点,大多数发行版都带有一个名为mail(或Mail, mailx)的程序。你可以试试muttalpine; 您甚至可以将其配置为发送到外部邮箱。(请参阅下面的“这是真的邮件吗?”。)

它包含什么,以及谁/什么发送了它?

大多数情况下,消息包含 cron 作业的输出,或logwatch的系统安全报告,或类似的垃圾。阅读它并找出答案。

它有多重要?

很大程度上取决于每个消息的内容。

你至少应该扫描主题标题——人们通常会几个月不理会邮件,却从未意识到他们的日常 cron 工作失败了。

这甚至是与电子邮件具有相同意义的实际“邮件”吗?或者只是我的系统告诉我什么?

两者都可以——它是由你的系统生成的,告诉你一些事情,但它也是实际的电子邮件,可以这样处理。

您可以(并且应该)配置您的邮件软件——也就是“MTA” /usr/sbin/sendmail——将邮件转发到您的个人邮件地址。确切的说明取决于您安装的 MTA(如果有)、这是个人计算机还是服务器、您是否拥有自己的域或使用@gmail.com等等。

请注意,/usr/sbin/sendmail现在是共享 API,并不一定意味着原始的 Sendmail MTA。事实上,您不应该使用 Sendmail,而应该使用更现代的东西,例如 OpenSMTPD、Postfix 或 Exim4。它们都提供相同的/usr/sbin/sendmail工具,但它们更易于配置、更安全且同样强大。

  • 好答案。如果您添加了有关如何配置 OpenSMTPD、Postfix 或 Exim4 以将邮件转发到您的普通电子邮件地址的信息的链接,那就更好了。 (3认同)
  • 我使用 cat /var/mail/$USER 命令查看了我的邮件,并使用 rm -rf /var/mail/$USER 命令将其删除。 (2认同)

小智 251

对我来说最简单的方法是在终端中运行以下命令:

cat /var/spool/mail/root
Run Code Online (Sandbox Code Playgroud)

  • 我意识到这是一个非常古老的问题/答案,但 [this XKCD](http://xkcd.com/838/) 与讨论相关。(提示:悬停文本) (50认同)
  • 或者如果您想导航,只需“少 $MAIL”。 (19认同)
  • 或者`less +G $MAIL` 在最后开始。 (15认同)
  • @Blackhawk 现在更多 [这个 XKCD](https://xkcd.com/1728/)。 (6认同)
  • 迄今为止最好的实用答案,实际上增加了知识。现在我可以阅读邮件了。我想知道为什么它是最底层的答案。 (5认同)

小智 80

对于想知道如何一一阅读这些消息的人,您可以使用“邮件”

$ mail
Run Code Online (Sandbox Code Playgroud)

然后从列表中键入要阅读的消息编号。

要转到下一条消息,您可以键入“next”,另一个有用的命令是“delete”..

要了解有关mail程序如何工作的更多信息,请参阅man mail.

  • 在 Ubuntu 16.04 上,我需要先通过运行 `apt install mailutils` 来安装 `mailutils` (10认同)
  • // , 这在 CEntOS 6 上实际上不起作用。在这种情况下,必须使用 `$ mailx`。 (5认同)

Law*_*ceC 43

只是为了提供一些澄清,长期以来一直是 UNIX 机器运行“本地配置”邮件程序守护程序的传统,该守护程序不通过 Internet 路由消息,而仅将消息复制到其他用户的假脱机目录(如@John T提及)。它是真正符合 SMTP 的电子邮件,只是没有通过 Internet 路由,因为它不需要。

因此,如果您启动电子邮件客户端(如alpinemutt),您可以通过寻址到user@hostname或在许多情况下仅指定用户来向系统上的其他用户发送邮件。您可能还有一个命令行实用程序mailx,可用于使用您的 shell 发送快速电子邮件。

现在,如果您想向所登录系统以外的系统上的用户发送消息,那才是真正有趣的开始。您需要配置您的邮件程序守护程序以识别外部电子邮件并将其传递给传输代理,配置传输代理,并执行一大堆我自己还不了解的事情。


Jam*_*ell 27

这个邮件在哪里?

很可能存储在您的机器上,在您的 root 用户的邮箱文件夹中(这取决于您安装的邮件服务器类型)。您可能可以通过alpine快速访问它。

它包含什么?

可能只是一些系统报告类型的东西。“某某试图用错误的密码登录 10 次”..“我希望有人对我运行更新”,“某某驱动程序不断失败”,“NSA 机器人将性能提高了 1%” .. 等等..

谁/什么发送的?

您的服务器上的服务,很可能。

它有多重要?

取决于您的服务器的重要性。


Joh*_*n T 14

此邮件通常位于/var/spool/mail/root配置(通常)默认 sendmail 守护程序时。它包含可由该mail实用程序读取的 RAW 电子邮件。可以通过运行该mail实用程序并在消息中分页或读取 RAW 标头来找到发送者。

消息的重要性通常取决于发送它的前一个因素:)

许多系统实用程序将使用邮件子系统作为报告和记录的手段。日志观察器实用程序和其他服务可能会向本地 root 用户发送一封电子邮件,作为有关特定事件(例如磁盘空间不足或硬件错误)的提醒。如果发送电子邮件失败,邮件程序守护程序也会提醒您。


Vol*_*gel 14

less +G /var/spool/mail/root

显示最新的邮件,如果文件最后。

直接显示邮件文件是个好主意,但使用起来cat很容易出错。如果文件中有很多邮件或很长的邮件,您不希望所有邮件都滚动。我刚刚看到一个 150MB,200 万行。

如果您不是 root:

sudo less +G /var/spool/mail/root

+G选项用于首先显示最新消息;它不在文件的顶部,而是在文件的末尾。

它是 的一个选项less,使其在启动后显示文件的最后一页。如果它适合一页,则显示最后一条消息(最新),否则显示该消息的结尾。

文件名可以/var/spool/mail/mail代替/var/spool/mail/root

  • 万一其他人想知道,`+G`“会导致从末尾而不是开头开始显示每个文件。” (https://linux.die.net/man/1/less) (4认同)