warnquotaでクォータの警告メールを送信

記事内に広告が含まれています。

「CentOS7」で「warnquota」を使用して、クォータの制限を超えたユーザに警告をメール送信を行えるようにする手順です。

警告をメールを送信するため、SMTPサーバが使用できることが前提条件となります。

インストール

「yum」を使用して「warnquota」のインストールを行います。

# yum install quota-warnquota

設定

警告メール送信するために、下記のファイルを設定してきます。

  • /etc/quotatab
  • /etc/warnquota.conf

quotatab

「warnquota」から送信される警告メールには、ディスク使用量に関するレポートが記述されるのですが、「/etc/quotatab」で設定を行わない場合、クォータの制限に該当した場所がデバイス名で表示されてしまいます。

例えば、「/home」にクォータの制限を設定している場合、警告メールにはクォータの制限に掛かっているパーティション情報として「/dev/mapper/centos-home」といったデバイス名が記述されますが、一般のユーザはどのパーティションの事なのか判別しづらいと思われます。

# df -h | grep /home
/dev/mapper/centos-home    10G  350M  9.7G    4% /home

実際の警告メールに表示されるレポートは下記のようになります。

/dev/mapper/centos-home   <---この部分が分かりづらい

                        Block limits               File limits
Filesystem           used    soft    hard  grace    used  soft  hard  grace
/dev/mapper/centos-home
               +-    167M    100M    200M  5days      28     0     0

「/etc/quotatab」に、下記の書式でデバイス名に分かりやすい名前をマッピングすると、一般ユーザがどのパーティションについての警告なのかが分かりやすくなります。

デバイス名: マッピング名

では、実際に設定を行っていきます。

# cp -p /etc/quotatab /etc/quotatab_yyyymmdd
# vi /etc/quotatab

設定内容

「/dev/mapper/centos-home」が「/home Directory」と表示されるように設定を行っています。

/dev/mapper/centos-home:  /home Directory
表示例

「/etc/quotatab」編集後は、下記のようにどこのパーティションについてのことなのかが、わかりやすく表示されます。

/home Directory (/dev/mapper/centos-home) <--- 何処のことかが分かりやすくなります

                        Block limits               File limits
Filesystem           used    soft    hard  grace    used  soft  hard  grace
/dev/mapper/centos-home
               +-    168M    100M    200M  00:39     202     0     0  
設定は必須ではありません

「/etc/quotatab」は設定を行わなくても警告メールを送信することが出来るのですが、特に手間も掛かりませんので設定しておいたほうがユーザにやさしいので設定を行っておいたほうが良いでしょう。

warnquota.conf

「/etc/warnquota.conf」では、警告メールのメッセージの内容を設定することが出来ます。

# cp -p /etc/warnquota.conf /etc/warnquota.conf_yyyymmdd
# vi /etc/warnquota.conf

変更内容

とりあえず動作確認を行うために、送信元のメールアドレスを変更してみます。

設定項目は下記の項目で、「root@example.com」の部分を自サーバの情報に変更します。

  • FROM
  • CC_TO
  • SUPPORT
  • SIGNATURE

今回は「root@example.com」を「root@intra1.server-memo.net」に変更しました。

FAIL項目について

下記の設定がある場合は、頭に「#」をつけて「FAIL」無効化してください。

FAIL           = "configure /etc/warnquota.conf before running warnquota"

編集後はこのようになります。

#FAIL           = "configure /etc/warnquota.conf before running warnquota"

warnquota実行

設定が完了しましたら実際に「warnquota」コマンドを実行しクォータの状態をチェックさせてみますが、「ユーザに設定されているクォータ」と「グループに設定されているクォータ」ではチェックの方法が異なりますので、それぞれの方法について説明していきます。

ユーザに設定されているクォータのチェック

「warnquota -s」コマンドを実行することで、ユーザクォータの状態をチェックしサイズ制限を超過しているユーザにメールを送信してくれます。

「-s」オプションは、警告メールに記述するディスク使用量のレポートの数字を分かりやすく表示させるためのオプションです。

# warnquota -s

クォータのsoftlimit制限に該当しているユーザがいる場合、該当ユーザと「root」ユーザに下記のようなメールが送信されます。

「差出人」「CC」「署名」の表示が「warnquota.conf」で設定した通りになっていることも確認できます。

ちなみに、「-s」オプションを設定せずに「warnquota」を実行すると、ディスクの使用量が一目ではわかりづらい表記になってしまいます。

グループに設定されているクォータのチェック

グループに設定されているクォータをチェックしてメールを送信する場合は「-g」オプションを指定します。

warnquota -g -s

この場合、メールの送信先は「/etc/quotagrpadmins」で設定されているユーザとなります。

「/etc/quotagrpadmins」の書式は中身を確認してみてもらうとすぐにわかりると思いますが、下記のようになっています。

グループ: ユーザ

設定例

「user」グループに設定されているクォータの制限を超過した場合「tamohiko」ユーザに警告メールを送信したい場合は、下記のように設定を行います。

# cp -p /etc/quotagrpadmins /etc/quotagrpadmins_yyyymmdd
# vi /etc/quotagrpadmins 

設定内容は下記の通りとなります。

user: tamohiko

warnquota定期実行

手動で「warnquota」を実行して警告メールが正常に届くことが確認できましたら、「warnquota」を定期的に実行させるように設定を行っていきます。

「warnquota」自体には定期的に実行する機能が無いため、定期的に実行するためには「crontab」等に登録する必要があります。

本手順では「/etc/crontab」に登録して定期的に実行させることにします。

「warnquota」を実行させる間隔は適宜決めてください。

# cp -p /etc/crontab /etc/crontab_yyyymmdd
# vi /etc/crontab

設定例

一時間ごとにメールを送信

毎時「0」分に実行したい場合は下記のように設定します。

0 * * * * root warnquota -s

一日一回メールを送信

毎朝7:00に実行したい場合は下記のように設定します。

0 7 * * * root warnquota -s

crontabの設定方法については下記ページを参考してみてください。

https://www.server-memo.net/tips/crontab.html
https://www.server-memo.net/tips/etc-crontab.html

警告メッセージの編集

初期設定で用意されている警告メールは、件名や本文がすべて英文なのでユーザにあまりやさしくありませんが、「/etc/warnquota.conf」で簡単に内容を編集してメッセージの内容や件名を日本語に設定することができます。

設定できる項目は色々とありますが、通常は下記の項目を編集するぐらいで大丈夫だと思います。

項目 説明
FROM 送信元メールアドレス
SUBJECT 件名
CC_TO CCで送信するメールアドレス
SUPPORT サポート連絡先とするメールアドレス(「SIGNATURE」または「GROUP_SIGNATURE」の設定がない場合有効)
PHONE 電話番号(「SIGNATURE」または「GROUP_SIGNATURE」の設定がない場合有効)
MESSAGE ユーザクォータ制限用メール通知文
SIGNATURE ユーザクォータ制限警告メールの最後に記述する文
GROUP_MESSAGE グループクォータ制限用メール通知文
GROUP_SIGNATURE グループクォータ制限警告メールの最後に記述する文
CHARSET 文字コード指定

特殊文字

「MESSAGES」と「GROUP_MESSAGE」でメッセージを設定する際には下記の特殊文字を使用することが出来ます。

  • %d ドメイン名
  • %h ホスト名
  • %i ユーザ名
  • %s グループ名
  • %% %を表示
  • | 改行
  • \ メッセージを複数行わけて記述する際に使用

設定例

設定例として下記の内容で設定を行ってみました。

# cat /etc/warnquota.conf
FROM = "root@intra1.server-memo.net"
CC_TO = "root@intra1.server-memo.net"
SUBJECT = "データサイズ超過のお知らせ"
MESSAGE = %h で /home/%i ディレクトリのデータサイズが規定値を超えていますので\
必要のないデータを消去してください。|
|
「Block limits」
「used」現在のデータサイズ|
「soft」データサイズの制限値|
「hard」データサイズの最大値|
「grace」データ削除までの猶予期間|
SUPPORT = root@intra1.server-memo.net
PHONE = (xxx)xxxx 
SIGNATURE = ご不明な点があれば root@intra1.server-memo.net までご連絡ください。|\
電話の場合は (xxx)xxxx までご連絡おねがいします。

上記設定の場合このようなメールになります。

メッセージは自由に設定できますので、色々と試してみてください。

コメント

タイトルとURLをコピーしました