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


426

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

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

这甚至和电子邮件一样,是实际的“邮件”吗?还是只是我的系统告诉我一些事情?

编辑:关于这个问题,我可以使用sendmail程序向自己发送邮件email@localhost吗?


我在其中有一条消息,上面写着“此文本是您的邮件文件夹内部格式的一部分,...”,因此,当然,每当我登录时,都会被告知我已收到邮件。
GEdgar

1
@GEdgar:这通常意味着您应该停止使用mbox邮箱并迁移到Maildir :)
grawity 2011年



1
万一有人在看,这里是powerhshell一线将其拆分为Outlook可读的单个文件:$i=0;(gc .\mail\root -raw) -split '[^, ]From '|%{$i++;sc mail$i.eml -value ("From " + $_)}
JDuarteDJ

Answers:


354

这封邮件在哪里?

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

(可以在其他位置–检查是否$MAIL设置–但默认情况下,系统仅通知您/var(/spool)/mail。)

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

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

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

最常见的消息包含cron作业的输出,或通过系统安全报告logwatch,或类似的垃圾。阅读并找出答案。

它有多重要?

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

您至少应该扫描主题标头-经常有人几个月不理会邮件,才意识到自己的日常cron工作会失败。

这甚至和电子邮件一样,是实际的“邮件”吗?还是只是我的系统告诉我一些事情?

两者都是可以的-它是由您的系统生成的,告诉您一些信息,但是它也是实际的电子邮件,因此可以进行处理。

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

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


3
好答案。如果您添加了有关如何配置OpenSMTPD,Postfix或Exim4的信息的链接,以将邮件转发到您的普通电子邮件地址,那就更好了。
imolit 2015年

1
这是一个相关的问题,展示了如何设置muttaskubuntu.com/a/499335/75735
KalenGi

好答案。但是,我该如何mail阅读电子邮件?该手册页不说。
jpaugh

1
我使用cat / var / mail / $ USER命令查看了我的邮件,并使用rm -rf / var / mail / $ USER命令将其删除了。
Sinan Eldem '17

@grawity我应该在/var/mail/阅读文件时删除其中的文件还是清除其中的文本?谢谢!
yaylitzis

205

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

cat /var/spool/mail/root

5
到目前为止,实际上可以增加知识的最佳实用答案。现在我可以阅读邮件了。我不知道为什么这是最底层的答案。
CDR

37
我意识到这是一个很老的问题/答案,但是此XKCD与讨论有关。(提示:悬停文字)
Blackhawk

11
或只是less $MAIL想导航。
Walf

7
还是less +G $MAIL从头开始。
Charlie Gorichanaz

4
@Blackhawk现在还有更多这个XKCD
甜点,

56

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

$ mail

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

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

要了解有关mail程序工作方式的更多信息,请参见的输出man mail


3
//,这在CEntOS 6上实际上不起作用。在这种情况下,必须使用$ mailx
弥敦道(Nathan Basanese)'16

6
在Ubuntu 16.04,我需要首先安装mailutils运行apt install mailutils
埃德温伟业

在Amazon EC2实例上,您可以使用sudo yum install mail
JonDoe297 '17

1
在macOS上为我工作
juanmirocks

39

只是为了澄清一下,UNIX盒运行“本地配置”邮件守护程序已经很长时间了,该守护程序不通过Internet路由消息,而仅将消息复制到其他用户假脱机目录(如@John T提到)。这是真正的SMTP兼容电子邮件,只是不需要通过Internet进行路由。

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

现在,如果您要向登录系统以外的系统上的用户发送消息,那么真正的乐趣就从此开始。您需要配置邮件程序守护程序,以识别外部电子邮件并将其传递给传输代理,配置传输代理,并执行很多我还不了解的工作。


24

这封邮件在哪里?

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

它包含什么?

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

谁/什么发送的?

服务器上的服务最有可能。

它有多重要?

取决于服务器的重要性。


我认为John的建议是将其存储在/ var / spool / mail / root中,这是基于一个(好的)假设,即您正在运行sendmail。我认为其他邮件服务器使用不同的位置来存储邮件。
James T Snell

用户是否可以使用邮件子系统?
n0pe 2011年

White Phoenix:我将在再次收到邮件时查看邮件的时间:)我是否可以触发它,或者问题太局限了?
n0pe 2011年

如果您想探索运行自己的邮件服务器(人们通常在使用电子邮件的方式使用),那么它首先会帮助您了解您正在运行的发行版吗?如果没有这些信息,所有我会说,是,我建议你上的sendmail读了(因为你很可能运行sendmail的话)..
詹姆斯牛逼斯内尔

他们中的大多数人都在运行AIX,但我想在我的运行OpenSuSe的家庭工作站上进行探索
n0pe 2011年

14

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

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

许多系统实用程序会将邮件子系统用作报告和日志记录的方式。日志监视程序实用程序和其他服务可能会向本地root用户发送电子邮件,以提醒您有关特定事件的信息,例如磁盘空间不足或硬件错误。如果邮寄守护程序未能发送出站电子邮件,它也会提醒您。


有没有办法查看我的邮件子系统的设置?
n0pe 2011年

@Max该sendmail.mc文件控制大多数默认安装上sendmail守护程序的配置。通常位于/etc/mail
约翰T

@Max我强烈建议您通读linuxhomenetworking.com/wiki/index.php/…之类的教程,以帮助您根据需要配置邮件程序守护程序。
约翰T

在ubuntu 16.4。上,我有/etc/mail.rcsendmail
Timo

12

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


//,极好的故障。对于那些不容易知道如何处理文件的人,此答案特别有用。
弥敦道(Nathan Basanese)'16

4
万一其他人想知道,+G“这样可以减少最初显示每个文件的开头而不是开头”。(linux.die.net/man/1/less
山姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.