cronのメール送信機能を停止しよう

 contents

 

 

cronには実行時にメールを送信する機能がデフォルトで入ってます。
この機能ですが、メールが送れないと/var/spool/mail/配下にある各ユーザのファイルにガシガシ追記されます。
SOOOTAも過去に/var/spool/mail/配下がいっぱいになって大騒ぎをしたことがあります。
ここでは、メール停止方法として2パターン紹介したいと思います。

以下の2パターンが停止する方法になります。
crontabMAILTOを空白にする。
crondの設定変更を行う。

まずは、「crontabMAILTOを空白にする。」です。
crondの使用方法によって、MAILTOの設定箇所が変わりますので、注意が必要です。

MAILTOを設定する箇所は
/etc/crontab
/etc/cron.d/0hourly
/var/spool/cron/(各ユーザのcrontab)
などになります。

SOOOTAのデフォルトの環境では、上記の3ファイルに設定が必要でしたので、一つ一つ見ていきます。

# cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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

MAILTO=root
がありますね。
MAILTO=””に設定。。。ですが、MAILTOの下はコメント文のみです。
そのため、ここに設定しても大して意味がありません。
例えば、

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

こんな感じで設定されていたら、MAILTO=””にすることでdailyやweeklyなどで動くcronの実行メールが飛ばなくなるため、有効です。

次は、/etc/cron.d/0hourlyです。
こちらは1時間毎に/etc/cron.hourlyを実行します。

# cat 0hourly

# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

ファイルの中身を見ると、01 * * * * とあるため、1時間毎に/etc/cron.hourlyが実行されるのがわかります。
/etc/cron.hourlyが実行されるため、メールが飛びます。
となると、ここはMAILTO=""が有効ですね。

最後にこちら、/var/spool/cron/(各ユーザのcrontab)
各ユーザで呼び出すcrontabの一番上の行にMAILTO=""を記載する方法です。
# crontab -l

MAILTO=""
*/1 * * * * echo test

と設定するとMAILTOが空白に上書きされるため、設定が有効になります。

以上がMAILTO=""を設定する方法です。

さて、2つ目のメール送信をやめさせる方法「crondの設定変更を行う。」についてです。
これは/etc/sysconfig/crondの中にある
CRONDARGS=””
にオプションとして「-m off」を設定する方法です。

# cat /etc/sysconfig/crond

# Settings for the CRON daemon.
# CRONDARGS= :  any extra command-line startup arguments for crond
CRONDARGS="-m off"

こちらの設定後は、必ずcronデーモンの再起動が必要になります。
忘れると適用されないままなので、再起動必須です。

メールの停止方法としては、どちらを採用しても良いと思います。
ただ、MAILTOだと他のユーザがcrontabを設定したり、crontab -rで設定を消してしまうと元も子もないため、
オススメは/etc/sysconfig/crondのオプションに追記です。
 

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村