メモ > サーバ > 各論: コマンド > メールをコマンドで表示
メールをコマンドで表示
※Etcetra.txt の「メールを確認する」「root宛のメールを削除する」も参照
以下の場所にメールが保存されている(EC2だと /var/spool/mail に保存されている)
# cd /var/mail
# ls -l
合計 144
-rw------- 1 pi mail 137159 2月 6 12:00 pi
-rw------- 1 root mail 2200 9月 5 13:19 root
$ cat root
メールを表示するにはmailコマンドを使用する
コマンドを使えなければインストールする
# mail
-bash: mail: コマンドが見つかりません
$ sudo yum -y install mailx … mailコマンドインストール(CentOS系の場合)
$ sudo apt-get install -y mailutils … mailコマンドインストール(Ubuntu系の場合)
「mail」とだけ入力すると、新着メールを表示できる
「?」が表示されると入力待ち状態。数字を入力すると該当するメールが、「h」と入力するとメールの一覧を表示できる
「q」と入力すると終了できる
# mail
"/var/mail/root": 4 messages 4 new
>N 1 pi@raspberrypi 土 12月 12 16: 14/522 *** SECURITY information for raspberrypi ***
N 2 pi@raspberrypi 土 12月 12 16: 14/485 *** SECURITY information for raspberrypi ***
N 3 pi@raspberrypi 土 12月 12 16: 14/522 *** SECURITY information for raspberrypi ***
N 4 pi@raspberrypi 土 12月 12 16: 14/485 *** SECURITY information for raspberrypi ***
? 2
Return-Path: <pi@raspberrypi>
X-Original-To: root
Delivered-To: root@raspberrypi
Received: by raspberrypi (Postfix, from userid 1000)
id 66381BE9F5; Sat, 12 Dec 2020 16:16:15 +0900 (JST)
To: root@raspberrypi
From: pi@raspberrypi
Auto-Submitted: auto-generated
Subject: *** SECURITY information for raspberrypi ***
Message-Id: <20201212071615.66381BE9F5@raspberrypi>
Date: Sat, 12 Dec 2020 16:16:15 +0900 (JST)
raspberrypi : Dec 12 16:16:15 : pi : unable to resolve host raspberrypi
? q
Held 4 messages in /root/mbox
新着メールが無い場合、「mail」を実行しても以下の表示になる
# mail
No mail for root
この場合、「-f」を付けると以前のメールを表示できる(環境によってはこのオプションはエラーになる?)
# mail -f
"/root/mbox": 4 messages 2 new 2 unread
>N 1 pi@raspberrypi 土 12月 12 16: 14/522 *** SECURITY information for raspberrypi ***
N 2 pi@raspberrypi 土 12月 12 16: 14/485 *** SECURITY information for raspberrypi ***
U 3 pi@raspberrypi 土 12月 12 16: 17/566 *** SECURITY information for raspberrypi ***
U 4 pi@raspberrypi 土 12月 12 16: 16/504 *** SECURITY information for raspberrypi ***
以下のようにしてメールの削除と確認ができる
(「d 番号」でメールを削除し、「h」で一覧できる)
# mail
"/var/mail/root": 2 messages 2 new
> 1 Mail Delivery System Wed Feb 15 14:42 82/3412 "Undelivered Mail Returned to Sender"
2 Mail Delivery System Wed Feb 15 14:44 82/3412 "Undelivered Mail Returned to Sender"
& d 1
& h
> 2 Mail Delivery System Wed Feb 15 14:44 82/3412 "Undelivered Mail Returned to Sender"
& d 2
& h
No applicable messages
& q
逆引きUNIXコマンド/mailコマンドの操作とメールの指定削除 - Linuxと過ごす
https://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/mail...
mailコマンドは対話式だが、以下のようにすることでメール一覧を取得できる
# echo q | mail
また以下のようにすることで、新着メールと未読メールの件数を取得できる(本当に正しいコードかどうかは要検証)
# echo q | mail | grep -c '^.[NU]'
また以下のようなシェルスクリプトで、root宛てにメールが届いたときに任意のアドレスに通知できる
(この場合 from@example.com が送信元としたいアドレス、to@example.com が通知先のアドレスとなる)
#!/bin/bash
count=$(echo q | mail | grep -c '^.[NPU*]')
if [ $count -ge 1 ]; then
echo "You've Got ${count} Mail(s) for root." | mail -s "You've Got Mail" -r from@example.com to@example.com
fi