Was ist die Nachricht "Sie haben neue E-Mails" in Linux / UNIX?


426

Manchmal, wenn ich mich in eine Box einlogge und 'su' zum rooten, erhalte ich eine süße kleine Nachricht, dass ich Post habe (Gott sei Dank, es ist keine AOL).

  • Wo ist diese Mail?
  • Was enthält es?
  • Wer / Was hat es gesendet?
  • Wie wichtig ist das?

Ist das überhaupt "mail" im selben Sinne wie email? Oder sagt mir nur mein System etwas?

EDIT: In Bezug auf diese Frage würde ich in der Lage sein , mich zu senden , wie dies mit dem Programm Sendmail Mail: email@localhost?


Ich habe dort die Nachricht "Dieser Text ist Teil des internen Formats Ihres E-Mail-Ordners, ...". Wenn ich mich anmelde, werde ich natürlich darüber informiert, dass ich E-Mails habe.
GEdgar

1
@GEdgar: Dies bedeutet normalerweise, dass Sie die Verwendung von mbox- Postfächern
einstellen


1
So leiten Sie die Mail weiter: unix.stackexchange.com/questions/26666/…
Melebius

1
Falls jemand auf der Suche ist, hier ist ein Power-Shell-Einzeiler, der das in einzelne Dateien $i=0;(gc .\mail\root -raw) -split '[^, ]From '|%{$i++;sc mail$i.eml -value ("From " + $_)}
aufteilt, die

Antworten:


354

Wo ist diese Mail?

Es befindet sich wahrscheinlich in der Spooldatei /var/mail/$USERoder /var/spool/mail/$USERist der häufigste Speicherort unter Linux und BSD.

(Andere Standorte sind möglich - prüfen Sie, ob diese $MAILOption aktiviert ist. Standardmäßig werden Sie jedoch nur darüber informiert /var(/spool)/mail.)

Normalerweise hat die Spooldatei ein sehr einfaches Mbox- Format, sodass Sie sie in einem Texteditor oder Pager öffnen können.

Etwas bequemer ist es, wenn die meisten Distributionen mit einem Programm namens mail(oder Mail, mailx) geliefert werden. Sie können versuchen, muttoder alpine; Sie können es sogar so konfigurieren, dass es an eine externe Mailbox gesendet wird. (Siehe "Ist das echte Post?" Weiter unten.)

Was enthält es und wer / was hat es gesendet?

In den meisten Fällen enthalten die Nachrichten die Ausgabe von Cron-Jobs oder einen Systemsicherheitsbericht per Logwatch oder ähnlichen Junk. Lies es und finde es heraus.

Wie wichtig ist das?

Hängt stark vom Inhalt jeder Nachricht ab.

Sie sollten zumindest die Betreffzeilen scannen - oft ignorieren die Leute die E-Mails monatelang, ohne zu bemerken, dass ihre täglichen Cron-Jobs fehlschlagen.

Ist das überhaupt "mail" im selben Sinne wie email? Oder sagt mir nur mein System etwas?

Ja zu beiden - es wird von Ihrem System generiert, das Ihnen etwas mitteilt, aber es ist auch eine tatsächliche E-Mail und kann als solche behandelt werden.

Sie können (und sollten) Ihre Mail-Software - den "MTA" aka /usr/sbin/sendmail- so konfigurieren , dass die Nachrichten an Ihre persönliche Mail-Adresse weitergeleitet werden. Die genauen Anweisungen variieren je nachdem, welchen MTA (falls vorhanden) Sie installiert haben, ob es sich um einen Personal Computer oder einen Server handelt, ob Sie eine eigene Domain haben oder eine @ gmail.com verwenden und so weiter.

Beachten Sie, dass es sich /usr/sbin/sendmailheutzutage um eine gemeinsam genutzte API handelt und nicht unbedingt den ursprünglichen Sendmail-MTA bedeutet. Tatsächlich sollten Sie nicht Sendmail verwenden, sondern etwas Moderneres wie OpenSMTPD, Postfix oder Exim4. Sie bieten alle dasselbe /usr/sbin/sendmailTool, sind jedoch einfacher zu konfigurieren, sicherer und ebenso leistungsstark.


3
Gute Antwort. Wenn Sie Links mit Informationen zur Konfiguration von OpenSMTPD, Postfix oder Exim4 hinzugefügt hätten, um E-Mails an Ihre normale E-Mail-Adresse weiterzuleiten, wäre dies noch besser gewesen.
Imolit

1
Hier ist eine verwandte Frage, die zeigt, wie man mutt einrichtet
KalenGi

Gute Antwort. Aber wie kann ich mailE - Mails lesen? Die Manpage sagt nichts.
Jpaugh

1
Ich habe meine E-Mails mit dem Befehl cat / var / mail / $ USER angezeigt und mit dem Befehl rm -rf / var / mail / $ USER entfernt.
Sinan Eldem

@grawity sollte ich die Dateien löschen, /var/mail/wenn ich sie lese, oder nur den darin enthaltenen Text löschen ? Dankeschön!
Yaylitzis

206

Für mich war es am einfachsten, in einem Terminal Folgendes auszuführen:

cat /var/spool/mail/root

5
Die bisher beste praktische Antwort, die das Wissen tatsächlich erweitert. Jetzt kann ich die Mail lesen. Ich frage mich, warum es die unterste Antwort ist.
CDR

37
Mir ist klar, dass dies eine ziemlich alte Frage / Antwort ist, aber diese XKCD ist für die Diskussion relevant. (Hinweis: Schwebetext)
Blackhawk

11
Oder einfach nur, less $MAILwenn Sie navigieren möchten.
Walf

7
Oder less +G $MAILum am Ende zu beginnen.
Charlie Gorichanaz

4
@Blackhawk Und jetzt noch mehr diese XKCD .
Dessert

56

Wenn Sie sich fragen, wie Sie diese Nachrichten einzeln lesen sollen, können Sie einfach "mail" verwenden.

$ mail

Geben Sie dann eine Nachrichtennummer aus der Liste ein, die Sie lesen möchten.

Um zur nächsten Nachricht zu gelangen, können Sie 'next' eingeben. Ein weiterer nützlicher Befehl ist 'delete'.

Weitere Informationen zur Funktionsweise des mailProgramms finden Sie in der Ausgabe von man mail.


3
//, Dies funktioniert unter CEntOS 6 nicht. In diesem Fall muss man verwenden $ mailx.
Nathan Basanese

6
Unter Ubuntu 16.04, muss ich zuerst installieren , mailutilsindem Sieapt install mailutils
Edwin Yip

Auf Amazon EC2-Instanzen können Sie es mitsudo yum install mail
JonDoe297,

1
Funktioniert für mich unter macOS
juanmirocks

39

Zur Verdeutlichung ist es bei UNIX-Boxen schon lange Tradition, einen "lokal konfigurierten" Mailer-Daemon auszuführen, der keine Nachrichten über das Internet weiterleitet, sondern nur Nachrichten in Spool-Verzeichnisse anderer Benutzer kopiert (wie @John T erwähnt). Es handelt sich um echte SMTP-kompatible E-Mails, die nicht über das Internet weitergeleitet werden, da dies nicht erforderlich ist.

Wenn Sie also einen E-Mail-Client (wie alpineoder mutt) starten, können Sie E- Mails an andere Benutzer im System senden user@hostname, indem Sie sich an den Benutzer wenden oder in vielen Fällen nur diesen angeben. Sie haben wahrscheinlich auch ein Befehlszeilendienstprogramm namens mailx, mit dem Sie mithilfe Ihrer Shell eine schnelle E-Mail senden können.

Wenn Sie nun Nachrichten an Benutzer auf anderen Systemen als dem, bei dem Sie angemeldet sind, senden möchten, beginnt der eigentliche Spaß. Sie müssen Ihren Mailer-Daemon so konfigurieren, dass er externe E-Mails erkennt und an einen Transferagenten weiterleitet, den Transferagenten konfiguriert und eine ganze Reihe von Aufgaben ausführt, die ich selbst noch nicht verstehe.


24

Wo ist diese Mail?

Sehr wahrscheinlich auf Ihrem Computer im Postfachordner Ihres Rootbenutzers gespeichert (wobei DIES abhängig von der Art des installierten Mailservers ist). Sie können es wahrscheinlich ziemlich schnell durch alpine zugreifen .

Was enthält es?

Wahrscheinlich nur ein paar Sachen vom Typ Systembericht. "So und so habe ich 10 Mal versucht, mich mit einem falschen Passwort anzumelden". "Ich wünschte, jemand würde Updates für mich ausführen". .. usw..

Wer / Was hat es gesendet?

Höchstwahrscheinlich Dienste auf Ihrem Server.

Wie wichtig ist das?

Kommt darauf an, wie wichtig dein Server ist.


Ich denke, Johns Vorschlag, dass er in / var / spool / mail / root gespeichert ist, basiert auf der (guten) Annahme, dass Sie sendmail ausführen. Ich denke, andere Mailserver verwenden andere Speicherorte für E-Mails.
James T Snell

Gibt es eine Möglichkeit für Benutzer, das Mail-Subsystem zu verwenden?
Nr.

Weißer Phönix: Ich werde nachsehen, wann meine E-Mail bei erneutem Empfang der Nachricht eingeht :) Gibt es eine Möglichkeit, die Nachricht auszulösen, oder ist diese Frage zu lokalisiert?
Nr.

Wenn Sie Ihren eigenen Mail-Server betreiben möchten (den die Leute in einem typischen E-Mail-Sinne verwenden), wäre es hilfreich zu wissen, welche Distribution Sie betreiben. Ohne diese Informationen sage ich nur, dass ich Ihnen vorschlage, sich über sendmail zu informieren (da Sie wahrscheinlich bereits sendmail ausführen).
James T Snell

Die meisten von ihnen sind mit AIX , aber ich möchte dies zu Hause auf meinem Arbeitsplatz erkunden OpenSuSe läuft
n0pe

14

Diese Mail befindet sich normalerweise in, /var/spool/mail/rootwenn der (übliche) Standard-sendmail-Daemon konfiguriert ist. Es enthält eine RAW-E-Mail-Nachricht, die vom mailDienstprogramm gelesen werden kann . Wer es gesendet hat, können Sie ermitteln, indem Sie das mailDienstprogramm ausführen und die Nachrichten durchblättern oder die RAW-Header lesen.

Die Wichtigkeit der Nachricht hängt normalerweise vom vorherigen Faktor ab, der sie gesendet hat :)

Viele Systemdienstprogramme verwenden das Mail-Subsystem zur Berichterstellung und Protokollierung. Dienstprogramme für die Protokollüberwachung und andere Dienste senden möglicherweise eine E-Mail an den lokalen Root-Benutzer, um ihn an ein bestimmtes Ereignis zu erinnern, z. B. an zu wenig Speicherplatz oder an Hardwarefehler. Der Mailer-Daemon benachrichtigt Sie auch, wenn keine ausgehende E-Mail gesendet werden konnte.


Kann ich sehen, wie mein Mail-Subsystem eingerichtet ist?
Nr.

@Max Die sendmail.mcDatei steuert die Konfiguration des sendmail-Daemons bei den meisten Standardinstallationen. Es befindet sich normalerweise unter /etc/mail.
John T

@Max Ich empfehle dringend, ein Tutorial wie linuxhomenetworking.com/wiki/index.php/… durchzulesen , um den Mailer-Daemon wie gewünscht zu konfigurieren.
John T

Am Ubuntu 16.4. Habe ich /etc/mail.rcwas nicht sendmail
Timo

12

less +G /var/spool/mail/root

Zeigt die neuesten Mails an, am Ende ob die Datei.

Das direkte Anzeigen der Mail-Datei ist eine gute Idee, aber die Verwendung catkann leicht schief gehen. Sie möchten nicht, dass alle E-Mails durchlaufen werden, wenn sich viele oder sehr lange Nachrichten in der Datei befinden. Ich habe gerade eine mit 150 MB, zwei Millionen Zeilen gesehen.

Wenn Sie nicht root sind:

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

Mit dieser +GOption wird die neueste Nachricht zuerst angezeigt. Es steht nicht oben in der Datei, sondern am Ende.

Es besteht die Möglichkeit less, die letzte Seite der Datei nach dem Start anzuzeigen. Hier wird die letzte (neueste) Nachricht angezeigt, wenn sie auf eine Seite passt, oder das Ende davon.

Der Dateiname kann /var/spool/mail/mailanstelle von sein/var/spool/mail/root


//, Hervorragende Aufteilung. Diese Antwort wäre besonders nützlich für Leute, die nicht leicht wissen, was mit der Datei zu tun ist.
Nathan Basanese

4
Für den Fall, dass sich jemand anderes wundert, +G"bewirkt weniger, dass anfänglich jede Datei am Ende und nicht am Anfang beginnt." ( linux.die.net/man/1/less )
Sam
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.