mailコマンドでコマンドラインからメールを送受信する方法|件名・添付・スクリプト連携もコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドK-O, ネットワーク管理コマンド > mailコマンドでコマンドラインからメールを送受信する方法|件名・添付・スクリプト連携もコマンド
「サーバーからアラートメールを送りたいけど、どのコマンドを使えばいい?」
「シェルスクリプトの実行結果を自分宛てに飛ばしたい」
Linuxサーバーの運用では、cronジョブの結果通知やログ監視の異常検知など、コマンドラインから直接メールを送る場面が頻繁にあります。

この記事では、Linuxのmail(mailx)コマンドについて、基本的な送受信から、件名の指定、標準入力からの送信、添付ファイル、シェルスクリプトとの連携、ローカルメールの確認方法までを解説します。現場のサーバー運用でそのまま使える実践パターンを中心にまとめています。
【この記事でわかること】
・mailコマンドはローカルサーバーからメールを送受信するシンプルなコマンドで、cronやシェルスクリプトとの連携に最適
・件名は-s、本文は標準入力、添付は-a(mailx)で指定するのが基本
・ローカルメールの確認はmailを引数なしで実行。メールスプールは/var/spool/mail/ユーザー名

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

mailコマンドとは?ローカルメールを扱う基本ツール

mailコマンドは、Linuxサーバー上からメールを送受信するためのコマンドです。現在のディストリビューションでは、後継のmailx(s-nail / bsd-mailx)として提供されていることが多く、mailmailxへのシンボリックリンクになっています。

対話操作を必要としないため、シェルスクリプトやcronジョブからの自動送信に向いているのが特徴です。GUIのメーラーと違って、サーバーに常駐するMTA(PostfixやSendmail)と連携してメールを送出します。

主な用途:cronの実行結果通知、ログ監視の異常アラート、バッチ処理の完了通知
前提:PostfixなどのMTAが起動しており、ローカルからの送信が許可されていること
インストール:RHEL/CentOS系はdnf install mailx、Debian/Ubuntu系はapt install bsd-mailx

基本的な使い方

1. シンプルにメールを送信する

最も基本的な形は、件名を-sで指定し、本文を標準入力から流し込む方法です。

# 件名と本文を指定して送信 echo "本文テスト" | mail -s "テスト送信" user@example.com

2. 複数の宛先に送る

宛先はスペースまたはカンマで区切って複数指定できます。CCやBCCは-c-bで指定します。

# CC付き、複数宛先に送信 echo "本文" | mail -s "件名" -c cc@example.com to1@example.com to2@example.com

3. ファイルの中身を本文として送る

ログファイルやレポートを本文に流し込みたい場合は、リダイレクトで読み込ませます。

# /var/log/messages の末尾100行を送る tail -n 100 /var/log/messages | mail -s "messagesログ抜粋" admin@example.com

4. ファイルを添付して送る(mailx)

添付ファイルは-aオプションで指定します。mailxが入っている必要があります。

# レポートファイルを添付して送信 echo "日次レポートです" | mailx -s "日次レポート" -a /tmp/report.csv admin@example.com

応用・実務Tips

cronと組み合わせてアラートを飛ばす

cronの実行結果通知はデフォルトでrootローカルに届きますが、外部アドレスへ転送したい場合はスクリプト内で明示的にmailを呼び出します。

# crontab例:ディスク使用率が90%超えたらメール 0 * * * * df -h / | awk 'NR==2 && int($5)>=90 {print}' | mail -s "[ALERT] ディスク逼迫" admin@example.com

ヒアドキュメントで本文を書く

複数行の本文はヒアドキュメントで書くと可読性が上がります。

# ヒアドキュメントで本文を記述 mail -s "週次レポート" admin@example.com <

送信元(From)を変更する

mailxでは-rオプションで送信元アドレスを指定できます。MTA側で許可されている必要があります。

# Fromアドレスを指定して送信 echo "本文" | mailx -s "件名" -r "alert@example.com" admin@example.com

ローカルメールの受信と確認

mailを引数なしで実行すると、ローカルメールスプール(/var/spool/mail/ユーザー名)に届いているメールを一覧表示できます。対話モードに入り、番号を指定して本文を読み、dで削除、qで終了します。

# 自分宛てのローカルメールを確認 mail # スプールファイルを直接見る less /var/spool/mail/$(whoami)

トラブルシュート・エラー対処

「mail: command not found」が出る場合

mailxパッケージが入っていません。以下でインストールしてください。

# RHEL/CentOS/AlmaLinux/Rocky sudo dnf install -y mailx # Debian/Ubuntu sudo apt install -y bsd-mailx

メールが送信できない・届かない場合

MTAが動いているか確認:systemctl status postfixで状態をチェック
キューに溜まっていないか:mailqコマンドで送信待ちを確認
ログを見る:tail -f /var/log/maillog(RHEL系)または/var/log/mail.log(Debian系)
外部宛メールが届かない:送信元IPの逆引きDNSやSPFレコードが未設定だと、GmailなどにSPAM判定される

件名が文字化けする場合

日本語件名はMIMEエンコードが必要です。nkfを挟むか、LANG=ja_JP.UTF-8を明示してください。

# 件名をMIMEエンコードして送信 echo "本文" | LANG=ja_JP.UTF-8 mail -s "$(echo '日次レポート' | nkf -jM)" admin@example.com

本記事のまとめ

やりたいこと コマンド
件名を指定して送信する echo "本文" | mail -s "件名" user@example.com
ファイルの中身を本文にする mail -s "件名" user@example.com < file.txt
CC・BCC付きで送信する mail -s "件名" -c cc@ex.com -b bcc@ex.com to@ex.com
ファイルを添付する(mailx) mailx -s "件名" -a /tmp/report.csv user@example.com
送信元アドレスを変更する mailx -s "件名" -r from@ex.com to@ex.com
ローカルメールを確認する mail
メールキューを確認する mailq

サーバー運用の通知・監視を、自動化できるエンジニアになりませんか?

mail一本でも、cronやログ監視と組み合わせれば強力な運用自動化の武器になります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。