おのたく日記 YouTubeも始めました→
2023-06-03(Sat) [長年日記]
■ logcheckのメールが大きすぎ
今日の学び「jornalctlはロケールに合った日付で返す」
最近、logcheckのメールが大きくなっています。内容を見てみると、以下のようになっていました。
5月 30 12:05:54 on-o.com sm-mta[1699926]: 34U35qGY1699926: milter=greylist, action=data, continue
5月 30 12:05:54 on-o.com sm-mta[1699926]: 34U35qGY1699926: milter=greylist, action=eoh, continue
5月 30 12:05:54 on-o.com sm-mta[1699926]: 34U35qGY1699926: milter=greylist, action=header, continue
時間が日本語になっているため、フィルターをすり抜けてしまっている可能性があり、ロケール設定が悪いことが原因かもしれません。ただ、システムロケールを変えるのは面倒です。今回、調べてみたところ、システムロケールをLANG=ja_JP.UTF-8にしているため、rsyslogのロケールがja_JPになっていてログの日付が日本語になっているのだと思いましたが、/var/log/mail.logを見ると時間は正しくなっていました。
2023-05-28T00:02:28.983494+09:00 on-o.com sm-mta[2451659]: 34RF2S4v2451659: milter=greylist, action=connect, continue
2023-05-28T00:02:29.008603+09:00 on-o.com sm-mta[2451659]: 34RF2S4v2451659: milter=greylist, action=helo, continue
一部だけ日本語になっているのかとgrepで探し回ったけど、見つかりませんでした。
そうこうしているうちに、logcheckがjorunalctlでログを取得していることに気がつきました。以下がそのログです。
$ journalctl |grep milter=greylist|head
5月 29 21:40:30 on-o.com sm-mta[4067371]: 34TCeUN04067371: milter=greylist, action=connect, continue
5月 29 21:40:31 on-o.com sm-mta[4067371]: 34TCeUN04067371: milter=greylist, action=helo, continue
あたり🎯今回の問題はこれによるものでした。
--- /etc/cron.d/logcheck.org 2010-01-03 15:18:23.000000000 +0900
+++ /etc/cron.d/logcheck 2023-06-03 06:04:02.863906271 +0900
@@ -2,6 +2,7 @@
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
+LANG=C
@reboot logcheck if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck -R; fi
2 12 * * * logcheck if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck; fi
対策として、cronで起動されるlogcheckにLANG=Cを加えて、様子を見ることにしました。
■ In English: logcheck email is too large
Today's lesson: "journalctl returns a date that matches the locale"
Recently, logcheck emails have become too large. Upon reviewing the content, it appears as follows:
Since the time is in Japanese, it may have slipped through the filters and the cause may be due to bad locale settings. However, changing the system locale is a hassle. Upon investigation, it was found that rsyslog's locale was ja_JP because the system locale was set to LANG=ja_JP.UTF-8, causing the date on the logs to be in Japanese, but upon checking /var/log/mail.log, the time was correct.
Although I searched with grep to find parts that were in Japanese, I couldn't find any.
In the meantime, it was noticed that logcheck was obtaining logs with jorunalctl. The following is the log:
$ journalctl |grep milter=greylist|head
5月 29 21:40:30 on-o.com sm-mta[4067371]: 34TCeUN04067371: milter=greylist, action=connect, continue
5月 29 21:40:31 on-o.com sm-mta[4067371]: 34TCeUN04067371: milter=greylist, action=helo, continue
This was the cause of the problem.
As a countermeasure, LANG=C was added to logcheck launched by cron, and the situation will be monitored.
|