CentOS7 で logwatch を導入したが、毎日メールが送られてきてつらいので、メールの出力を抑制してみた。
毎日メールを送る原因になっているのは以下の二つ。
- postfix
- zz-disk_space
というわけで、それぞれ /etc 以下にファイルを作って対策した。
postfix
ドメインの設定やリレーの設定をしていないので、ローカルにしかメールを配送していないpostfixだが、毎日何かしらを出力するためメールの原因となる。
これは設定ファイル( /etc/logwatch/conf/services/postfix.conf )を作成して下記を記載すればよい。
$postfix_Show_Summary = No
これで毎日のまとめメールはこなくなる。
もちろん、cronの出力等すべて適切に捨てるなどして、通常はメールが送信されないようにする、という方がベター。どちらで対応するかは手間を考えて無理なく可能な方をとればよいかと。
zz-disk_space
こちらは、何も問題なくても毎回 df の出力結果をメールしてくれるおせっかいさん。正直うるさいので、ディスク容量があふれそうになっているときだけ出力するようにスクリプトを書き換える。
具体的には、 /usr/share/logwatch/scripts/services/zz-disk_space を /etc/logwatch/scripts/services/zz-disk_space にコピーしてから、その中身を修正することによって対策する。こうすることで、デフォルトのスクリプトは実行されずに修正済みのスクリプトのみ実行させることができる。
修正内容としては、フラグを一つ追加し、 df の結果を出力する関数を呼ぶ部分をデフォルトでは呼ばないようにした、というだけ。
具体的には下記の通り。
$ diff -u /usr/share/logwatch/scripts/services/zz-disk_space /etc/logwatch/scripts/services/zz-disk_space --- /usr/share/logwatch/scripts/services/zz-disk_space 2014-06-10 11:15:40.000000000 +0900 +++ /etc/logwatch/scripts/services/zz-disk_space 2016-04-28 21:15:32.583294932 +0900 @@ -31,6 +31,8 @@ my $show_disk_usage = $ENV{'show_disk_usage'} || 0; my $diskfull_threshhold = $ENV{'diskfull_threshold'} || 90; my $local_disks_only = $ENV{'local_disks_only'} || 0; +my $show_diskspace = $ENV{'show_diskspace'} || 0; +my $diskspace_if_diskfull = $ENV{'diskspace_if_diskfull'} || 1; my $df_options; my $disk_cmd; @@ -181,6 +183,7 @@ if (($use > $diskfull_threshhold) && ($fields[0] !~ /\/dev\/scd/ ) && ($fields[0] !~ /\/dev\/sr/ ) && ($fields[0] !~ /\/dev\/loop./)) { print "$fields[0] => $fields[4] Used. Warning. Disk Filling up.\n"; + if ( $diskspace_if_diskfull == 1 ){ DiskSpace(); }; } } } @@ -189,7 +192,9 @@ #Main #Only show disk space "df" by default -mgt -DiskSpace() if (($ENV{PRINTING} eq 'y') or $Detail); +if ( $show_diskspace == 1 ){ + DiskSpace() if (($ENV{PRINTING} eq 'y') or $Detail); +}; if ( $show_disk_usage == 1 ) { DiskUsage(); }; #Turn on in zz-disk_space.conf
これで、何もないときにはメールがこないようになったはず。