Memo

メモ > サーバ > 各論: コマンド > メールをコマンドで表示

■メールをコマンドで表示
※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

Advertisement