Como fazer o sendmail escrever para o novo maillog

1

Eu quero girar meu maillog, mas quero ter certeza de que o registro recém-girado contém as últimas 2 milhões de linhas do registro anterior:

    # 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

Tudo isso funciona, exceto pelo fato de que o sendmail continua a gravar no arquivo de log de backup "maillog.yyyymmdd" em vez do "maillog" correto!

Qual é a maneira correta de fazer isso sem ter que parar primeiro o sendmail, girar e começar de novo?

    
por jemminger 06.02.2011 / 20:15

3 respostas

4

Normalmente maillog escrito por syslogd , não por sendmail , por isso você deve enviar SIGHUP para syslogd

    
por 06.02.2011 / 20:27
0

Você pode criar seu próprio arquivo de log

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

e

[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
    
por 04.09.2015 / 12:10
0

Nos velhos dias você simplesmente (tudo isso como root) parava o sendmail (/etc/init.d/sendmail stop ou service sendmail stop), então você moveria o / var / log / maillog para / var / log / maillog.1 e então você criaria um novo maillog com "touch / var / log / maillog" então reinicie o sendmail (/etc/init.d/sendmail start ou service sendmail start). Isso é praticamente universal em todos os sabores e distribuições * NIX que remontam ao início dos anos 90.

Mas hoje você está reiniciando o sendmail, ele ainda está tentando gravar em seu arquivo de log antigo, mesmo depois de movê-lo e não será gravado no novo arquivo, independentemente do local para o qual você configurou o usuário ou as permissões. E se você cometer o erro de deletar o arquivo maillog que estiver usando, não poderá ver nada que esteja registrando. Então o que você faz?

O Linux foi pioneiro em uma maneira mais nova de fazer as coisas, às vezes por segurança e, às vezes, por automação. Então, eles aprimoraram o processo de registro do sistema e algumas coisas não funcionam da mesma maneira, mas fecham.

Em um Linux moderno (por volta de 2012 ou mais recente, talvez seja necessário fazer assim):

1) pare o sendmail

/etc/init.d/sendmail stop

ou

service sendmail stop

2) mova o arquivo de log para um local de backup e crie um novo

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) Defina as permissões de propriedade no arquivo / var / log / maillog

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

4) então DIGA SYSLOGD PARA RECARREGAR CONFIGURAÇÃO , e esta é a parte que irá salvá-lo se você for um velho * NIX hack. Se você não fizer isso, o sendmail não irá gravar no novo arquivo / var / log / maillog que você criar, NÃO IMPORTA O QUE VOCÊ FAÇA.

pkill -HUP rsyslog

5) Agora é hora de reiniciar o sendmail:

/etc/init.d/sendmail start

ou

service sendmail start

E se você seguir o arquivo / var / log / maillog, você verá a saída se o e-mail estiver fluindo.

Espero que isso salve alguém em algum momento.

Obrigado David

    
por 04.02.2018 / 01:20