sendmailに新しいメールログを作成させる方法

sendmailに新しいメールログを作成させる方法

メールログを交換したいのですが、交換した新しいログに前のログの最後の2M行が含まれていることを確認したいと思います。

    # write the last 2M lines to a new log
    tail -n 2000000 /var/log/maillog > /var/log/maillog.new

    # move the existing log to datestamped backup
    datestamp=`date "+%Y%m%d"`
    mv /var/log/maillog /var/log/maillog.$datestamp

    # move the new log to normal log
    mv /var/log/maillog.new /var/log/maillog

    # tell sendmail to reload
    killall -HUP sendmail

sendmailが正しい「maillog」ではなくバックアップログファイル「maillog.yyyymmdd」に記録され続けていることを除いて、すべて機能します!

sendmailを停止して循環し、再起動せずにこれを行う正しい方法は何ですか?

答え1

通常、メールログはそれ自体syslogdではなく作成されるため、sendmailSIGHUPを次に送信する必要があります。syslogd

答え2

独自のログファイルを作成できます。

[admin@local ~]# killall sendmail
[admin@local ~]# touch /var/log/sendmail.log
[admin@local ~]# sendmail -bd -q15m >> /var/log/sendmail.log

そして

[admin@local ~]# tail -f /var/log/sendmail.log

451 4.0.0 /fake/path/sendmail.cf: line 0: cannot open: No such file or directory

答え3

以前は、sendmailを停止し(すべてrootとして)(/etc/init.d/sendmail stopまたはservice sendmail stop)/var/log/maillogを/var/log/maillogに移動しました。 1 次に、「touch /var/log/maillog」を使用して新しいメールログを作成し、sendmailを再起動します(/etc/init.d/sendmail startまたはservice sendmail start)。これは、1990年代初頭までさかのぼるすべての* NIXバージョンとディストリビューションでかなり一般的です。

ただし、今日のsendmailを再起動して古いログファイルを移動しても、古いログファイルに書き込もうとします。使用しているメールログファイルを誤って削除した場合、ログに記録されている内容はまったく表示されません。それで、あなたは何をしますか?

Linuxは時々セキュリティのために、時には自動化のための新しい作業方法を開拓しました。だから彼らはsyslogプロセスを改善し、いくつかのものはまったく同じようには機能しませんが、似ています。

最新のLinux(2012年頃以降)では、次のことが必要になる場合があります。

1) メールの送信を中止

/etc/init.d/sendmail stop

または

service sendmail stop

2) ログファイルをバックアップ場所に移動し、新しいファイルを作成します。

rm /var/log/maillog.2.gz
mv /var/log/maillog.1 /var/log/maillog.2
mv /var/log/maillog /var/log/maillog.1
touch /var/log/maillog

3) /var/log/maillog ファイルの所有権を設定します。

chown root:root /var/log/maillog
chmod 600 /var/log/maillog

4)それからSYSLOGDにその構成を再ロードするように指示する、あなたが古い* NIXハックなら、この部分はあなたを救うでしょう。そうしないと、sendmailは、ユーザーが何をしても、作成した新しい/var/log/maillogファイルに書き込みません。

pkill -HUP rsyslog

5) これで sendmail を再起動する時間です。

/etc/init.d/sendmail start

または

service sendmail start

/var/log/maillog ファイルを追跡すると、メールが流れると出力が表示されます。

これが時間を節約することを願っています。

ありがとう、David

関連情報