logwatch
centos7

logwatchで "Anacron job 'cron.daily' "メールが送信されるのを止める方法

最近、自宅用のメールサーバをDTIからConoHaにリプレイスしました。
その際、いちから CentOS 7 にマイグレーションしたんですが、久々すぎて忘れてるのか設定方法が変わったのか分からない手順がいくつかありました。

その中で、こんなメールを頻繁に受け取るようになりました。

9B266BD9-7EDB-4C77-A108-794EE0BAE1CC.jpeg

どうやら logwatch のエラーメールのようですが、意外と修正するための情報がインターネットでは引っかかりませんでした。そこで少し仕組みを調べて自力で対応してみました。

というわけで、せっかく得られた知見ですから、備忘録を兼ねて共有します。興味のある方のお役に立てば幸いです。

原因

cron で実行するスクリプト /etc/cron.daily/0logwatch の標準エラー出力として下記のエラーが出力されるようです。

Ignoring header field "Auto-Submitted: auto-generated"
Ignoring header field "Precedence: bulk"
Ignoring header field "MIME-Version: 1.0"
Ignoring header field "Content-Transfer-Encoding: 7bit"
Ignoring header field "Content-Type: text/plain; charset="iso-8859-1""
これは logwatch がメール送信する際に、いくつかのメールヘッダを付与しようとするみたいです。それを無視したことを示すエラーが実行のたびに出力される模様でした。CentOS 7 デフォルトのスクリプトのはずですが、どの環境でも起こってるんですかね?特別なことは何もしてない環境なので不思議です。何か追加パッケージを入れれば出力されなくなるのかな? しかし、内容をよく見てみるとコンテンツタイプなど重要なヘッダですね。これはどうにか上手く設定しなくちゃ。

解決方法

方法1

/etc/logwatch/conf/logwatch.conf を下記のように書き換えます。 変更前:
mailer = mailx -t
変更後:
#mailer = mailx -t
mailer = sendmail -t
mailxだとヘッダーを無視しちゃうみたいで、それが具合が悪かったみたいです。

方法2

方法1を編み出すまでは、こちらで強引に対処してました。

/etc/cron.daily/0logwatch の中~下のほど該当行を下記の通りに書き換えします。

変更前:
#Call logwatch
$LOGWATCH_SCRIPT $OPTIONS
変更後:
#Call logwatch
$LOGWATCH_SCRIPT $OPTIONS > /dev/null 2>&1

コマンド実行結果の標準出力と標準エラー出力を捨てる設定を入れるだけです。非常に簡単。

書き換え後は、必ず下記のコマンドで実行してみてエラー出力されなくなることを確認しましょう。

/etc/cron.daily/0logwatch

簡単ですが、標準のスクリプトを書き換えることになるので、今後のアップデートなどで上書きされたりするときにはまた書き換えが必要になるかもしれない点は注意ですね。あと、標準エラー出力全部捨てるので、logwatchが正常稼働しなくなった時には元に戻してからトラブルシューティングに当たる必要があります。ご注意ください。

おわりに

いまどき logwatch を利用している方、そんなに多くないんですかね?何か有償or無償のログ監視系ツールやSwatchの方が多いのかな?

CentOS7で設定したら、すぐに発生するエラーで情報が引っ掛からないなんて、、、と思ってしまうわけです。

誰かもしご存知であれば教えてください。

元記事

CentOS7: logwatchで "Anacron job 'cron.daily' "メールが送信されるのを止める方法