Linux でメール(mail)を確認する

Linux でメール(mail)を確認する

Linux システムにログインしたあと、次のような表示をよく目にすることがあります。

you have mail.

これは、システムのメールボックスに現在のユーザー宛てのローカルメールが届いていることを示します。多くの Linux ディストリビューションでは、ローカルメールは /var/spool/mail/ユーザー名 または /var/mail/ユーザー名 に保存されます。mail または mailx コマンドで直接確認できます。

メールを確認する

端末で次を実行します。

mail

mail は現在のユーザーのメールボックス内にあるメールを一覧表示し、時系列で表示します。対話画面に入ったあとの主な操作は次のとおりです。

Enter       次のメールを表示
p           現在のメールを再表示
d           現在のメールを削除
s filename  現在のメールを指定したファイルに保存
q           mail を終了
h           メール一覧を再表示
?           ヘルプを表示

ローカルメールボックスのファイルが存在するかだけを確認したい場合は、次のように調べることもできます。

ls -l /var/spool/mail/$USER /var/mail/$USER 2>/dev/null

システムによってパスは異なる場合がありますが、通常は上記 2 つのパスのどちらかが存在します。

自分宛てにテストメールを送る

まず自分宛てにメールを 1 通送り、それを mail で読むと、流れを把握しやすくなります。

mail frank

続いて件名と本文を入力します。

Subject: test
This is a mail test

本文の入力が終わったら、Ctrl-D を押して入力を終了します。通常、端末には次のように表示されます。

EOT

その後、メールを確認します。

mail

次のような出力が表示されることがあります。

"/var/spool/mail/frank": 1 message 1 new
>N  1 frank@xteam.xteamlinux.com  Thu Mar 25 11:00  13/403  "test"
&

メール番号を入力するか、そのまま Enter を押すと内容を確認できます。

Message 1:
From frank Thu Mar 25 11:00:25 1999
To: frank@xteam.xteamlinux.com
Subject: test

This is a mail test
&

&mail の対話プロンプトです。この時点で d を入力するとメールを削除でき、q を入力すると終了できます。

ファイルからメールを送信する

メール本文をすでに用意している場合は、ファイルの内容をパイプ経由で送信できます。

mail -s "test subject" user@example.com < message.txt

ローカルユーザー宛てに送信することもできます。

mail -s "local test" "$USER" < message.txt

外部メールアドレスへ送信できるかどうかは、ローカル環境にメール転送エージェントが設定されているかに依存します。たとえば sendmailpostfix、またはその他の互換プログラムです。ローカルユーザー間で送受信するだけであれば、通常は完全な外部メールサーバー設定は不要です。

複数ユーザー端末通信:write と mesg

Linux が複数ユーザー環境で動作している場合、端末上に突然次のような情報が表示されることがあります。

Message from renee tty2...

同時に通知音が鳴ることもあります。これは、ユーザー reneewrite コマンドを使ってあなたに端末メッセージを送ろうとしていることを示します。次のコマンドで応答できます。

write renee

これにより、あなたと renee の端末の間に簡単なテキスト通信経路が作られます。相手が入力した内容はあなたの端末に表示され、あなたが入力した内容も相手の端末に表示されます。

よく使われる約束は次のとおりです。

(o)   一通り話し終え、相手の番であることを示す
(oo)  通話終了を示す

例:

renee's terminal:                 frank's terminal:

[renee@xteam renee]$ write frank
                                  Message from renee tty2...
                                  $ write renee
Message from you tty1...

did you forget lunch? (o)         did you forget lunch? (o)
ten minutes (o)                   ten minutes (o)
ok (oo)                           ok (oo)
Ctrl-D                            Ctrl-D
EOF                               EOF

Ctrl-D のほか、Delete を使って write コマンドを終了できる場合もあります。具体的な動作は端末設定によって異なります。

他の人から端末へメッセージを送られたくない場合は、次を使用します。

mesg n

再びメッセージの受信を許可するには、次を実行します。

mesg y

メッセージ受信を拒否しているユーザーに write リクエストを送った場合、またはログインしていないユーザーに通話を要求した場合、write は通話できない理由を表示します。

転載元:http://edu.codepub.com/2010/0413/21978.php

Leave a Reply