Linux / UNIXの「You have new mail」メッセージとは何ですか?


426

時々、ボックスにログインしてルートに「su」すると、メールがあるというかわいいメッセージが表示されます(AOLではないGODに感謝)。

  • このメールはどこにありますか?
  • 何が含まれていますか?
  • 誰/何がそれを送りましたか?
  • それはどれほど重要ですか?

これは、電子メールと同じ意味で実際の「メール」でもありますか?それとも、私のシステムが何かを教えてくれるだけですか?

編集:この質問に関連し、私は次のようにsendmailプログラムを使用して自分自身にメールを送信できemail@localhostますか?


「このテキストはメールフォルダーの内部形式の一部です...」というメッセージが1つあります。もちろん、ログインするたびにメールがあることが通知されます。
GEdgar

1
@GEdgar:これは通常、mboxメールボックスの使用を停止してMaildirに移行する必要があることを意味します:)
grawity


1
メールを転送する方法:unix.stackexchange.com/questions/26666/...
Melebius

1
誰かが探している場合は、これをoutlookで読み取り可能な単一のファイルに分割するpowerhshellワンライナーがあります$i=0;(gc .\mail\root -raw) -split '[^, ]From '|%{$i++;sc mail$i.eml -value ("From " + $_)}
。– JDuarteDJ

回答:


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

1
muttのセットアップ方法を示す関連質問を次に示します。askubuntu.com
a

素晴らしい答え。しかし、どうすればmailメールを読むことができますか?マニュアルページは言いません。
jpaugh

1
cat / var / mail / $ USERコマンドでメールを表示し、rm -rf / var / mail / $ USERコマンドで削除しました。
シナンエルデム

@grawityファイル/var/mail/を読んだときにファイルを削除するか、ファイル内のテキストをクリアする必要がありますか?ありがとうございました!
-yaylitzis

206

私にとって最も簡単な方法は、ターミナルで次のコマンドを実行することです。

cat /var/spool/mail/root

5
これまでのところ、知識に実際に追加される最も実用的な答え。これでメールを読むことができます。なぜ一番下の答えなのだろうか。
CDR

37
これはかなり古い質問/回答ですが、このXKCDは議論に関連しています。(ヒント:ホバーテキスト)
ブラックホーク

11
または、単にless $MAILナビゲートしたい場合。
ウォルフ

7
またはless +G $MAIL最後から開始します。
チャーリーゴリチャーナズ

4
@Blackhawkそして今、さらにこのXKCD
デザート

56

これらのメッセージを1つずつ読む方法を知りたい場合は、「メール」を使用できます

$ mail

次に、リストから読みたいメッセージ番号を入力します。

次のメッセージに移動するには、「next」と入力します。別の便利なコマンドは「delete」です。

方法の詳細を参照するにはmailプログラムの動作を、の出力を参照してくださいman mail


3
//、これは実際にはCEntOS 6では機能しません。その場合、を使用する必要があります$ mailx
ネイサンバサニーズ

6
Ubuntu 16.04では、最初に実行mailutilsしてインストールする必要がありますapt install mailutils
Edwin Yip

Amazon EC2インスタンス上では、使用してインストールすることができますsudo yum install mail
JonDoe297

1
macOSで動作します
-juanmirocks

39

わかりやすくするために、UNIXボックスでは、インターネット経由でメッセージをルーティングせずに、他のユーザーのスプールディレクトリにメッセージをコピーするだけの「ローカルに構成された」メーラーデーモンを実行することが長い間行われています(@John T言及)。それは本当のSMTP準拠の電子メールであり、インターネット上でルーティングされる必要はないので、インターネット上でルーティングされないだけです。

したがって、メールクライアント(alpineまたはなどmutt)を起動したuser@hostname場合、にアドレスを指定するか、多くの場合はユーザーを指定するだけで、システム上の他のユーザーにメールを送信できます。またmailx、シェルを使用して簡単な電子メールを送信するために使用できるコマンドラインユーティリティがあります。

ここで、ログインしているシステム以外のシステムのユーザーにメッセージを送信したい場合、そこから本当の楽しみが始まります。外部メールを認識して転送エージェントに渡すようにメーラーデーモンを設定し、転送エージェントを設定し、まだ理解していないことをすべて行う必要があります。


24

このメールはどこにありますか?

おそらく、マシンのルートユーザーのメールボックスフォルダーに保存されます(これは、インストールしたメールサーバーの種類によって異なります)。おそらく、アルパインを介して非常に迅速にアクセスできます。

何が含まれていますか?

おそらく、いくつかのシステムレポートタイプのものだけです。「だから、間違ったパスワードで10回ログインしようとしました。」「誰かがアップデートを実行してほしい」、「ドライバーなどが常に失敗している」、「NSAボットがパフォーマンスを1%向上させました」 ..など。

誰/何がそれを送りましたか?

ほとんどの場合、サーバー上のサービス。

それはどれほど重要ですか?

サーバーの重要度に依存します。


/ var / spool / mail / rootに保存されているというJohnの提案は、sendmailを実行しているという(良い)仮定に基づいていると思います。他のメールサーバーは、メールを保存するために異なる場所を使用していると思います。
ジェームズTスネル

ユーザーがメールサブシステムを使用する方法はありますか?
n0pe

ホワイトフェニックス:メールが再びメッセージを受け取ったときにメールを確認します:)トリガーする方法はありますか、それともローカライズされた質問ですか?
n0pe

(一般的な電子メールの意味で使用される)独自のメールサーバーの実行を検討する場合は、実行しているディストリビューションを知ることが最初に役立ちますか?その情報がなければ、私は言うだろうすべては、(あなたはおそらくすでにsendmailのを実行しているとして)私はあなたがsendmailの上に読むことをお勧めということです。..
ジェームズ・T・スネル

それらのほとんどは、AIXを実行しているが、私はopenSUSEの実行している自宅で私のワークステーション上でこれを探求したいのですが
n0pe

14

このメールは通常/var/spool/mail/root、(通常の)デフォルトのsendmailデーモンが構成されているときに配置されます。mailユーティリティに読み取れるRAW電子メールメッセージが含まれています。送信者は、mailユーティリティを実行してメッセージをページングするか、RAWヘッダーを読み取ることで見つけることができます。

メッセージの重要性は通常、前の要因、誰が送信したかに依存します:)

多くのシステムユーティリティは、レポートとログの手段としてメールサブシステムを使用します。ログ監視ユーティリティおよびその他のサービスは、ディスク領域の不足やハードウェアエラーなどの特定のイベントに関する通知として、ローカルルートユーザーに電子メールを送信する場合があります。メーラーデーモンは、電子メールの送信に失敗した場合にも警告します。


メールサブシステムがどのように設定されているかを確認する方法はありますか?
n0pe

@Max sendmail.mcファイルは、ほとんどのデフォルトのインストールでsendmailデーモンの構成を制御します。通常はの下にあり/etc/mailます。
ジョンT

私は強くなどのチュートリアルを読んで推薦する@Max linuxhomenetworking.com/wiki/index.php/...必要に応じて、あなたはメーラーデーモンを設定するのに役立ちます。
ジョンT

Ubuntuの16.4で、私がしている。/etc/mail.rcに関係されていないsendmail
ティモ

12

less +G /var/spool/mail/root

ファイルの最後に、最新のメールを表示します。

メールファイルを直接表示するのは良い考えですが、使用catすると簡単に失敗する可能性があります。ファイルに多くのメッセージや非常に長いメッセージがある場合、すべてのメールがスクロールするのは望ましくありません。私はちょうど150MB、200万行を持つものを見ました。

ルートでない場合:

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

この+Gオプションは、最新のメッセージを最初に表示するために使用されます。ファイルの先頭ではなく、最後にあります。

これはのオプションでless、開始後にファイルの最後のページを表示します。1ページに収まる場合は最後のメッセージ(最新)を表示し、それ以外の場合は最後に表示します。

ファイル名/var/spool/mail/mail/var/spool/mail/root


//優れた内訳。この回答は、ファイルの処理方法が簡単にわからない人にとって特に便利です。
ネイサンバサネーゼ

4
他の誰かが疑問に思っている場合は、+G「各ファイルを最初ではなく最後から開始して表示することを少なくする」。(linux.die.net/man/1/less
サム・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.