題 Linux / UNIX中的“你有新郵件”消息是什麼?


有時,當我登錄到一個盒子並且“su”到root時,我收到一條可愛的小消息,說我有郵件(感謝GOD,這不是AOL)。

  • 這封郵件在哪裡?
  • 它包含什麼?
  • 誰/什麼發送了它?
  • 它有多重要?

這甚至是真正的“郵件”和電子郵件一樣嗎?或者只是我的系統告訴我什麼?

編輯: 和---關聯 這個 問題,我是否可以使用sendmail程序發送自己的郵件,如下所示: email@localhost


378
2017-07-04 15:23


起源


我在這裡有一條消息說“此文本是您郵件文件夾內部格式的一部分,......”所以當我登錄時,我當然知道我有郵件。 - GEdgar
@GEdgar:這通常意味著你應該停止使用 MBOX 郵箱並遷移到 郵件目錄 :) - grawity
有關: superuser.com/questions/149282/... - dmckee
如何轉發郵件: unix.stackexchange.com/questions/26666/... - Melebius
如果有人在尋找,這裡有powerhshell one-liner將它拆分成outlook可讀的單個文件: $i=0;(gc .\mail\root -raw) -split '[^, ]From '|%{$i++;sc mail$i.eml -value ("From " + $_)} - JDuarteDJ


答案:


這封郵件在哪裡?

它可能在假脫機文件中: /var/mail/$USER 要么 /var/spool/mail/$USER 是Linux和BSD上最常見的位置。

(其他位置是可能的 - 檢查是否 $MAIL 已設置 - 但默認情況下,系統僅通知您 /var(/spool)/mail。)

通常假脫機文件非常簡單 MBOX 格式,因此您可以在文本編輯器或尋呼機中打開它。

對於更方便的方式,大多數發行版都帶有一個名為的程序 mail (要么 Mailmailx)。你可以試試 mutt 要么 alpine;您甚至可以將其配置為發送到外部郵箱。 (請參閱下面的“這是真正的郵件嗎?”。)

它包含什麼,以及發送給誰/什麼?

大多數情況下,消息包含cron作業的輸出或系統安全報告 logwatch或類似的垃圾。閱讀並找出答案。

它有多重要?

取決於每條消息的內容。

應該 至少掃描主題標題 - 人們常常忽略郵件幾個月從未意識到他們的日常cron作業失敗了。

這甚至是真正的“郵件”和電子郵件一樣嗎?或者只是我的系統告訴我什麼?

兩者都是 - 它是由你的系統告訴你的東西產生的,但它也是實際的電子郵件,可以這樣處理。

您可以(並且應該)配置您的郵件軟件 - 即“MTA” /usr/sbin/sendmail  - 將郵件轉發到您的個人郵件地址。具體說明取決於您安裝的MTA(如果有),無論是個人計算機還是服務器,您擁有自己的域名還是使用 @ gmail.com, 等等。

注意 /usr/sbin/sendmail 現在是一個共享的API和  必然意味著原始的Sendmail MTA。事實上,你 不能 使用Sendmail,但更現代的東西,如OpenSMTPD,Postfix或Exim4。所有這些都提供相同的 /usr/sbin/sendmail 工具,但它們更容易配置,更安全,同樣強大。


317
2017-07-04 16:30



好答案。如果您添加了有關如何配置OpenSMTPD,Postfix或Exim4以將郵件轉發到您的普通電子郵件地址的信息的鏈接,那就更好了。 - imolit
這是一個相關的問題,顯示如何設置 傻子: askubuntu.com/a/499335/75735 - KalenGi
很好的答案。但我該如何使用 mail 閱讀電子郵件?該 手冊頁 不說。 - jpaugh
我使用cat / var / mail / $ USER命令查看了我的郵件,並使用rm -rf / var / mail / $ USER命令將其刪除。 - Sinan Eldem
我應該刪除@grawity中的文件 /var/mail/ 當我讀它們或只是清除它們裡面的文字?謝謝! - yaylitzis


對我來說最簡單的方法是在終端中運行以下命令:

cat /var/spool/mail/root

185
2017-11-25 11:46



迄今為止最好的實際答案實際上增加了知識。現在我可以閱讀郵件了。我想知道為什麼它是最底層的答案。 - CDR
我意識到這是一個非常古老的問題/答案,但是 這個XKCD 與討論有關。 (提示:懸停文字) - Blackhawk
要不就 less $MAIL 如果你想導航 - Walf
要么 less +G $MAIL 從最後開始。 - Charlie Gorichanaz
@Blackhawk現在更是如此 這個XKCD。 - dessert


對於想知道如何逐個閱讀這些消息的人,你可以使用'郵件'

$ mail

然後從列表中鍵入要讀取的消息編號。

要轉到下一條消息,您可以鍵入“下一步”,另一個有用的命令是“刪除”。

要了解更多關於如何 mail 程序有效,見輸出 man mail


41
2017-08-30 19:47



//,這實際上並不適用於CEntOS 6.在這種情況下,必須使用 $ mailx。 - Nathan Basanese
在Ubuntu 16.04上,我需要先安裝 mailutils 通過運行 apt install mailutils - Edwin Yip
在Amazon EC2實例上,您可以使用它進行安裝 sudo yum install mail - JonDoe297
在macOS上為我工作 - juanmirocks


為了提供一些澄清,UNIX盒子運行“本地配置”的郵件程序守護程序已經很長時間了,它不會通過Internet路由郵件,而只是將郵件複製到其他用戶假脫機目錄(如@John T提到)。它是真正符合SMTP標準的電子郵件,它不會通過Internet路由,因為它不需要。

所以,如果你啟動一個電子郵件客戶端(比如 alpine 要么 mutt)您可以通過尋址發送郵件給系統上的其他用戶 user@hostname或者在許多情況下,只指定用戶。您也可能有一個名為的命令行實用程序 mailx 可用於使用您的shell發送快速電子郵件。

現在,如果您想要在您登錄的系統之外的系統上向用戶發送消息,那麼這就是真正有趣的開始。您需要配置郵件程序守護程序以識別並將外部電子郵件傳遞給傳輸代理,配置傳輸代理,並執行一大堆我自己還不了解的內容。


37
2017-07-04 16:31





這封郵件在哪裡?

很可能存儲在您的計算機上,您的root用戶的郵箱文件夾中(這取決於您安裝的郵件服務器類型)。您可以很快訪問它 高山

它包含什麼?

可能只是一些系統報告類型的東西。 “所以試圖用不正確的密碼登錄10次”......“我希望有人能對我進行更新”,“司機  這樣的事情經常失敗“,”NSA機器人已經將性能提升了1%“......等等。

誰/什麼發送了它?

服務器上的服務很可能。

它有多重要?

取決於您的服務器的重要性。


23
2017-07-04 15:29



我認為John的建議是它存儲在/ var / spool / mail / root中是基於(好的)假設您正在運行sendmail。我認為其他郵件服務器使用不同的位置來存儲郵件。 - James T Snell
有沒有辦法讓用戶使用郵件子系統? - n0pe
白鳳凰:當我再次收到消息時,我會看看我的郵件:)我有沒有辦法觸發它或者問題太局限了? - n0pe
如果你想探索運行你自己的郵件服務器(人們在典型的電子郵件意義上使用),那麼首先要知道你正在運行什麼發行版?沒有這些信息,我要說的是,我建議你閱讀sendmail(因為你可能已經運行了sendmail)。 - James T Snell
他們中的大多數都在運行AIX,但我想在家裡運行OpenSuSe的工作站上進行探索 - n0pe


此郵件通常位於 /var/spool/mail/root 何時配置(通常)默認的sendmail守護程序。它包含一個可由其讀取的RAW電子郵件 mail 效用。誰發送它可以通過運行發現 mail 實用程序和通過消息進行分頁或讀取RAW標頭。

消息的重要性通常取決於之前的因素,誰發送它:)

許多系統實用程序將使用郵件子系統作為報告和記錄的手段。日誌監視器實用程序和其他服務可以向本地root用戶發送電子郵件,作為特定事件的提醒,例如磁盤空間不足或硬件錯誤。如果郵件無法向外發送電子郵件,郵件程序守護程序也會提醒您。


13
2017-07-04 15:28



有沒有辦法看看我的郵件子系統是如何設置的? - n0pe
@Max sendmail.mc file控制大多數默認安裝上的sendmail守護程序的配置。它通常位於 /etc/mail。 - John T
@Max我強烈建議您閱讀諸如此類的教程 linuxhomenetworking.com/wiki/index.php/... 幫助您根據需要配置郵件程序守護程序。 - John T
在ubuntu 16.4。,我有 /etc/mail.rc 與...無關 sendmail - Timo


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


11
2017-09-03 00:16



//,優秀的故障。這個答案對那些不知道如何處理文件的人特別有用。 - Nathan Basanese
如果有人想知道, +G “從最初開始顯示每個文件而不是從開頭開始顯示每個文件的次數減少。” (linux.die.net/man/1/less) - Sam
@Sam謝謝,再精煉一些。 - Volker Siegel