linux メールスプールについて調べてみた

# はじめに
linuxユーザー削除時やログ参照時に突然mail関連のメッセージが出てきた経験があります。
恐らく上記はユーザー作成時に一緒に作成されるメールスプールのメッセージであることを分かりました。


**メールスプールとはメールサーバー上の一時的に保管する場所のことです。**

スプールについて以下のサイトが分かりやすく説明してありました。
https://linuc.org/study/knowledge/524/
メールスプールについて以下のサイトが分かりやすく説明してありました。
https://go-journey.club/archives/9377

**linuxは各ユーザーごとにメールが設定されていて、一般的なEmailというよりは通知メッセージのようなイメージです。メールサーバのテストとしても使用されるそうです**



## 過去に見かけたメッセージ
linuxのユーザーを削除時に以下のメッセージが出ました。
```
# userdel -r ユーザー名
# userdel: ユーザー名 mail spool (/var/mail/ユーザー名) not found
```
メールスプールを削除しようとしたが、メールスプールがないためメッセージが出力されています。
userdel rオプションはユーザーと一緒にメールスプールも削除されます。

userdelについて以下の記事が参考になりました。
https://linuxcommand.net/userdel/


### useraddのデフォルト設定を表示してみた

useraddについて以下の記事が参考になりました。
https://www.server-memo.net/centos-settings/system/useradd.html

useraddの設定をみたところ、以下の例ではメールスプールがユーザー作成時に一緒に作成される様です。
```
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes　※メールスプールを作成する設定
```

### 現在のユーザー情報を確認した
パスワードファイルを参照して現在使用しているユーザーを一部表示した
```
[root@localhost mail]# cat /etc/passwd | tail -n 2
test_user:x:1001:1001::/home/test_user:/bin/bash
test:x:1002:1003::/home/test:/bin/bash
[root@localhost mail]#
```
### メールスプールのフォルダ配下を確認した
各ユーザーのファイルがあることを確認した
```
[root@localhost mail]# ls -ltr
合計 4
-rw-rw----. 1 test_user mail   0  4月  4 20:45 test_user
-rw-------. 1 root      mail 691  4月  4 20:54 root
-rw-rw----. 1 test      mail   0  5月  4 16:49 test
[root@localhost mail]# pwd
/var/spool/mail
```

### rootファイルを確認してみた
rootファイルに何かのデータが入っています。
恐らくcronのエラー文です。
```
[root@localhost mail]# cat root
From root@localhost.localdomain  Tue Apr  4 20:54:52 2023
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
        id A0D108A41C8; Tue,  4 Apr 2023 20:54:52 +0900 (JST)
To: root@localhost.localdomain
From: test_user@localhost.localdomain
Auto-Submitted: auto-generated
Subject: *** SECURITY information for localhost.localdomain ***
Message-Id: <20230404115452.A0D108A41C8@localhost.localdomain>
Date: Tue,  4 Apr 2023 20:54:52 +0900 (JST)

localhost.localdomain : Apr  4 20:54:52 : test_user : user NOT in sudoers ; TTY=pts/0 ; PWD=/tmp ; USER=root ; COMMAND=/bin/chmod +x test.sh
```
cronの標準出力とエラー文があるとrootのメールスプールにメッセージが送信されることがあるそうです。
以下のメッセージが出力されます。
```
You have mail in /var/spool/mail/root
```
/var/spool/mail/rootについて以下のサイトが詳細が記載されていました。
https://ex1.m-yabe.com/archives/3480

rootにメールを送る設定になっていました。
```
[root@localhost mail]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root　※Mailの設定です

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

[root@localhost mail]#
```
# まとめ
普段、linuxユーザー作成時にメール設定について意識はしていませんでした。
linuxは各ユーザーごとにメール設定される事が分かりました。
通常のEmailとは異なり、linuxのメールはcron等の通知メッセージのようなものであることが分かりました。
メールのスプールは溜まっていく可能性があることを知りました。
そのため場合によっては定期的に「/var/spool/mail/root」を空にする必要がありそうです。