このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

メール送受信のテスト:mailコマンドとmailqコマンド

メール配送のテスト:mailコマンドとmailqコマンド

 Linux環境において、メールサーバの構築や管理を行う際には、メールの送受信が正しく動作しているかを確認することが重要です。この確認作業には、一般的なメールクライアントソフトを使用することもありますが、コマンドラインを使ったシンプルなテストが便利です。特に、mailコマンドとmailqコマンドを使用することで、システム内でのメールの送受信や、キューに残っているメールの状態を簡単に確認することができます。ここでは、これらのコマンドの使い方と、メールサーバが正しく機能しているかを確認する方法について解説します。

メールの送受信

 メールの送受信を行うためのソフトウェアには、以下のようなMUA(Mail User Agent)やMTA(Mail Transfer Agent)、MDA(Mail Delivery Agent)があります。

ソフトウェア種別アプリケーション例説明
MUAThunderbird, Outlookユーザーがメールの送受信を行うために使用するソフトウェア。
MTAPostfix, Exim, Sendmailメールを送信元から送信先まで中継するソフトウェア。
MDADovecot, Procmailメールを最終的な受信者のメールボックスに配信するソフトウェア。

 メールサーバが正しく稼働しているかを確認するために、コマンドライン上で簡単にメールの送受信テストができます。その際に使用するのが、mailコマンドとmailqコマンドです。

mailコマンドの概要

 mailコマンドは、メールを送信するために使用されるコマンドです。簡単なテキストメッセージを送信するのに適しています。

【構文】
mail [宛先]

mailqコマンドの概要

 mailqコマンドは、メールキューの内容を表示するために使用されます。メールキューに残っているメールがどのような状態にあるかを確認することができます。

【構文】
mailq

コマンドの使用例と解説

1.rootユーザーに切り替えます。

・「su -」コマンドを実行します。

user01@ubuntu-vm:~$ su -
パスワード: 
root@ubuntu-vm:~#
   su -
2.Postfixのインストール(Ubuntuの場合)

・「apt install mailutils」コマンドを実行します。

続行しますか? [Y/n] の問いに「y」と入力して続行します。

root@ubuntu-vm:~# apt install mailutils
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
以下の追加パッケージがインストールされます:
  gsasl-common guile-3.0-libs libgsasl7 libmailutils8 libmysqlclient21
  libntlm0 libpq5 mailutils-common mysql-common postfix
提案パッケージ:
  mailutils-mh mailutils-doc procmail postfix-mysql postfix-pgsql
  postfix-ldap postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin
  | dovecot-common resolvconf postfix-cdb postfix-mta-sts-resolver
  postfix-doc
以下のパッケージが新たにインストールされます:
  gsasl-common guile-3.0-libs libgsasl7 libmailutils8 libmysqlclient21
  libntlm0 libpq5 mailutils mailutils-common mysql-common postfix
アップグレード: 0 個、新規インストール: 11 個、削除: 0 個、保留: 11 個。
11.5 MB のアーカイブを取得する必要があります。
この操作後に追加で 70.4 MB のディスク容量が消費されます。
続行しますか? [Y/n] y

 途中TUI(テキストユーザーインターフェース)で「Postfix Configuration」と表示されます。すべてデフォルトの選択のまま「<了解>」を選択します。「Tab」キーで項目間の移動ができます。
インストールが始まります。

インストールが始まります。

(省略)
rsyslog (8.2112.0-2ubuntu2.2) のトリガを処理しています ...
ufw (0.36.1-4ubuntu0.1) のトリガを処理しています ...
man-db (2.10.2-1) のトリガを処理しています ...
libc-bin (2.35-0ubuntu3.8) のトリガを処理しています ...
root@ubuntu-vm:~#
3.rootユーザーからuser01ユーザーへメールを送信します。

・「mail user01」コマンドを実行します。

root@ubuntu-vm:~# mail user01
Cc: # Ccにはメールを送信しないので、「Enter」キーを押す
Subject: test-mail # 「Subject」に続けて件名を入力する
hello user01.
「Ctrl」+「D」で終了する。
4.user01ユーザー宛のメールを確認します。

user01に切り替えます。

・「exit」コマンドを実行します。

root@ubuntu-vm:~# exit
ログアウト
user01@ubuntu-vm:~$

・「mail」コマンドを実行します。

user01@ubuntu-vm:~$ mail
"/var/mail/user01": 1 message 1 new
>N   1 root               月  8月 19 10:  14/395   test-mail
? 1 # 「1」と入力
Return-Path: <root@ubuntu-vm>
X-Original-To: user01
Delivered-To: user01@ubuntu-vm
Received: by ubuntu-vm (Postfix, from userid 0)
	id 93F8AE023C; Mon, 19 Aug 2024 10:21:59 +0900 (JST)
To: user01@ubuntu-vm
Subject: test-mail
User-Agent: mail (GNU Mailutils 3.14)
Date: Mon, 19 Aug 2024 10:21:59 +0900
Message-Id: <20240819012159.93F8AE023C@ubuntu-vm>
From: root <root@ubuntu-vm>

hello user01.

? q # 「q」と入力すると終了します。
Saved 1 message in /home/user01/mbox
Held 0 messages in /var/mail/user01
user01@ubuntu-vm:~$
5.メールキューを確認します。

・「mailq」コマンドを実行します。

メールキューに何も残っていないため、メールキューが空であると表示されます。

user01@ubuntu-vm:~$ mailq
Mail queue is empty

まとめ

 mailコマンドとmailqコマンドを使用することで、メールサーバの稼働確認や、コマンドラインからの簡単なメール送信テストを行うことができます。これにより、GUIのメールクライアントを使用せずにメールサーバの動作を確認できます。