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을 중지하고(모두 루트로)(/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 파일을 추적하면 메일이 흐르는 경우 출력이 표시됩니다.

이것이 시간을 절약해주기를 바랍니다.

고마워요, 데이비드

관련 정보