web-dev-qa-db-ja.com

端末に "メールがあります"というメッセージが表示される

数日前、私の端末ウィンドウにこのメッセージが表示されました。 enter image description here

どういう意味ですか?私は今まで見たことがない。

それはxCodeボットからのメッセージでした。

bots

助けてくれてありがとう。

147
Oleg Sobolev

おそらくそれはあなたのシステムからのメッセージです。

端末に入力します。

man mail

そして、あなたはどうやってあなたのシステムからこのメッセージを受け取ることができるかを見てください。

55
Evelin Amorim

Terminalを起動するたびに、「You have mail」という問題が発生していました。

私が発見したのはこれです。

私がインストールしたもの(完全にはわからないが、おそらくAlfred Workflowに関連したスクリプトや何かが推測される)が、OS XシステムにTerminal bash通知の表示を開始するための変更を加えた。それ以前は、Wordpressがローカルメールシステムを使ってメッセージを送信しようとしていたようです。無効な受信者アドレスを持っているため、メッセージがバウンスしました。返送されたメッセージはローカルシステムのメール受信箱に入りました。それでTerminal(bash)は私に "あなたはメールを持っています"と通知していました。

あなたは単にコマンドを使用してメールにアクセスすることができます

mail

これでMailが起動し、そこに保存されているメッセージの一覧がすぐに表示されます。最初のメッセージの内容を見たい場合は、

t

これにより、最初のメッセージの内容が完全に表示されます。 down-arrowキーを押して、メッセージをスクロールして全部を表示する必要があります。

メッセージの最後にジャンプしたい場合は、

spacebar

メッセージの表示を中止したい場合は、

q 

キュー内の次のメッセージを表示するには

n

...複数のメッセージがあるとします。

注:mail ?コマンドプロンプトでこれらのコマンドを使用する必要があります。あなたがメッセージを閲覧している間は、それらは機能しません。メッセージを見ながらnを押すと、正規表現に関連したエラーメッセージが表示されます。そのため、メッセージの表示中にqを押してメッセージを終了するか、spacebarを押してメッセージの末尾にジャンプし、次に?プロンプトでnを押します。

この方法でメッセージの内容を表示すると、メッセージを送信しようとした内容を特定するのに役立ちます。

?プロンプトで番号を入力するだけで特定のメッセージを表示することもできます。例えば3は3番目のメッセージの内容を表示します(そこにたくさんのメッセージがある場合)。

コマンドを使用する(?コマンドプロンプトで)

d [message number]

見終わったら各メッセージを削除します。たとえば、d 2はメッセージ番号2を削除します。または、d 1 2 5 7などのメッセージのリストを削除することもできます。メールに表示されるメッセージの一覧にメッセージ番号が表示されます。

すべてのメッセージを削除するには、メールプロンプト(?)からコマンドd *を使用します。

この記事へのコメントによると、メールを終了するにはqを使用する必要があります。これにより、変更も保存されます。

メールを1つの出力にまとめて表示したい場合は、bashプロンプトでこのコマンドを使用します(つまり、メール内からではなく、通常のコマンドプロンプトから)。

cat /var/mail/<username>

そして、あなたがすべての電子メールを一度に削除したい場合は、このコマンドを使用してください

Sudo rm /var/mail/<username>

私の特定のケースでは、たくさんのメッセージがありました。それが返送されたメッセージであるように見えます。ローカルのWordpressインストールによって送信されました。ユーザー "Admin"(私)がパスワードを変更したときの通知です。そこに2つの追加メッセージがあります。どちらも同じ事件のようです。

私が知らない、そしてあなたにも答えることができないのは、なぜ私がターミナルを開くたびにこのメール通知を見始めたのかということです。このメールは数ヶ月前に作成されたものですが、私はここ数週間でこの「あなたはメールを持っています」というメッセージに気付いただけです。これは私がAlfredにインストールしたワークフロー、およびTerminal bashを使用して通知を提供するワークフローの結果か、それともこれらの流れに沿った何かが原因であると考えられます。

単にメッセージを削除する

メッセージの出所を特定することに興味がなく、単にそれらを取り除きたいのであれば、mailコマンドを使わずにそうするほうが簡単かもしれません(多少手間がかかります)。他の少数の人々が指摘したように、代わりにこのコマンドを使うことができます。

Sudo rm /var/mail/YOURUSERNAME
229
inspirednz

mailを使う手間がいらない場合は、次のようにしてメールを読むことができます。

cat /var/mail/<username>

でメールを削除

Sudo rm /var/mail/<username>
50
kba

これは、あなたが作成したプロセスやスクリプトがあなたのローカルマシン上のアカウントにメールを送信していることを意味します(例えば、localhostアプリケーション上で走っているメールサーバー)。

これらのコマンドでこのメールを管理してください。

t <message list>        type messages
n                       goto and type next message
e <message list>        edit messages
f <message list>        give head lines of messages
d <message list>        delete messages
s <message list>        file append messages to file
u <message list>        undelete messages
R <message list>        reply to message senders
r <message list>        reply to message senders and all recipients
pre <message list>      make messages go back to /var/mail
m <user list>           mail to specific users
q                       quit, saving unresolved messages in mbox
x                       quit, do not remove system mailbox
h                       print out active message headers
!                       Shell escape
cd [directory]          chdir to directory or home if none given

は、整数、同じ範囲、またはスペースで区切られたユーザー名で構成されます。省略した場合、Mailは最後に入力されたメッセージを使用します。

Aは、スペースで区切られたユーザー名または別名で構成されています。エイリアスは、ホームディレクトリの.mailrcで定義されています。

9
Crick

Inspiredlife 説明 として、mailコマンドを使って起こっていることを理解することができます。

(私のように)無関係なメッセージや自動生成されたメッセージを1つずつ削除したくない場合は、以下のコマンドを実行してすべてのメッセージを削除してください。

echo -n > /var/mail/yourusername
9
edigu