Apaguei acidentalmente o /var/log/mail
arquivo. Até esse ponto, eu era capaz de monitorá-lo usando material de postfix. Agora, parece que o Postfix não envia seus logs para /var/log/mail
, pois o arquivo não está sendo atualizado com novas mensagens de log.
10
Mesmo depois de criar um arquivo vazio
você precisa reiniciar o syslog
e então está registrando ganho :)
fonte
Este é um erro no syslog, mas ilustra um problema comum quando um arquivo é excluído enquanto ele é aberto por um programa. Quando você faz uma "rm", está removendo uma entrada de diretório, mas NÃO está removendo o arquivo subjacente. O sistema operacional mantém uma contagem de referências ao arquivo e, na verdade, não exclui os dados subjacentes do arquivo até que a contagem de referência chegue a zero. No caso de um arquivo médio, a contagem de referência do arquivo não aberto é uma (a entrada do diretório). Quando o arquivo é aberto, a contagem é incrementada para dois. Se um segundo programa abrir o mesmo arquivo, a contagem será incrementada para três. Se a entrada do diretório agora for excluída, a contagem será decrementada para dois - o que significa que o arquivo é anômalo (sem nome),
Quando você exclui / var / log / mail, o criador de logs do sistema ainda tem o arquivo aberto para gravação. Se você criar um novo / var / log / mail, ele apontará para um arquivo diferente daquele que o registrador do sistema está escrevendo no momento. A única maneira de tornar tudo consistente é reiniciar o criador de logs do sistema. Quando o criador de logs do sistema original é encerrado, todos os arquivos associados a ele são fechados - incluindo o registro de mensagens anônimas cuja entrada de diretório você excluiu. Quando você reinicia o log do sistema, ele reabre / var / log / mail quando precisar gravar uma mensagem de log e o mantém aberto posteriormente.
Outra maneira de descobrir isso é quando um programa em execução preenche todo o disco com dados do arquivo; o usuário exclui o arquivo muito grande, mas o espaço em disco não é liberado, porque o arquivo ainda existe e está ocupando espaço em disco, mas a entrada do diretório foi removida. Quando o programa termina (porque o usuário o matou ou terminou sozinho), o espaço em disco será recuperado porque a contagem de referência no arquivo será zero.
O que o criador de logs pode fazer para evitar isso é primeiro gravar a mensagem de log, verificar se a entrada do diretório do arquivo de log existe e, se não existir, feche o arquivo de log original, abra um novo e reescreva o mensagem - para que a mensagem não se perca. Mas fazer tudo isso exigiria muito mais complexidade do que o criador de logs do sistema deveria ter - para cada mensagem gravada levará um pouco mais de tempo para ser gravada devido à verificação extra do diretório - que será bem-sucedida sempre que o arquivo for NÃO foi excluído.
Para entender todas as opções acima com mais clareza, o seguinte comando é instrutivo, pois descreve a chamada do sistema que executa a remoção da entrada de diretório e o decremento de referência: "man 3 unlink"
fonte
Esse não é o problema no CentOS 7. Alguém pensou que seria uma ótima idéia ter os logs de correio do postfix para percorrer o journaler. Se você deseja ver os logs do postfix:
(para ver o log inteiro)
(para ajustar o log)
Você também pode precisar no main.cf para postfix
fonte
journalctl --vacuum-time=1d
fwiw versões mais recentes do postfix log para
/var/log/mail.log
e eu também tive que executarsudo chmod a+w /var/log/mail*
eservice postfix restart
recuperar meus logs do postfix depois de excluí-lofonte