Para quem trabalha em uma rede com um servidor de correio com grande 
movimento diário, onde os e-mails exercem papel importante como 
documento de confirmação de uma ordem de execução de serviço por 
parte de um cliente ou coisa que o valha, torna-se fundamental 
armazenar os logs do SMTP. 
Através deles, podemos confirmar se em tal dia chegou um e-mail de 
fulano de tal para o usuário sicrano, se beltrano enviou mesmo um e-mail 
às tantas horas e por aí vai.
Ocorre que a periodicidade do LOGROTATE pode ocasionar arquivos maillog, 
maillog.1, maillog.2, etc, de tamanho muito grande - se configurado para 
períodos longos - ou causar a perda dos logs mais antigos, se configurado 
para períodos curtos e com poucas "rodadas". Para entenderem melhor as 
possibilidades (que são muitas) e limitações do LOGROTATE, dêem uma olhada no man.
Para resolver isso, criei um procedimento para salvar de forma organizada os 
logs, composto de um script (serve para datar e copiar os arquivos de maillog), 
uma pasta que sempre é "backupeada" e uma entrada no CRONTAB.
Assim, quando "estoura" alguma situação em que pedem para verificar se tal 
cliente realmente enviou um e-mail em tal dia - e se chegou ao nosso servidor - 
eu tenho logs de meses atrás para pesquisar. E isso costuma salvar o dia.
O script é o seguinte:
#!/bin/bash
# Preparação das variáveis.
###########################
# Atribui o ano atual a variável ano.
ano=$(date +%y)
# Atribui o mês DO ARQUIVO DE LOG a variável mês.
mes=$(ls -l /var/log/maillog.1 |cut -c 44-46)
# Atribui o dia DO ARQUIVO DE LOG a variável dia.
decdia=$(ls -l /var/log/maillog.1 |cut -c 48)
unidia=$(ls -l /var/log/maillog.1 |cut -c 49)
if [ "$decdia" = " " ]; then
	decdia=0
fi
dia=$decdia$unidia
# Copia o arquivo de log para o deposito.
#########################################
# O nome do arquivo salvo inclui a data em que ele
# foi fechado, para que eu possa saber a que período
# ele se refere, na hora em que precisar dele.
# Além disso, evita a duplicidade, pois se este mesmo
# arquivo já tiver sido salvo (em um boot anterior,
# por exemplo) terá o mesmo nome.
cp /var/log/maillog.1 /home/maillogs_antigos/$dia$mes$ano'maillog'
O script está em uma pasta chamada /usr/Script, assim o CRONTAB ganha esta linha: 
00 23 * * 5 /usr/Scripts/salvamaillogs
Espero que esta dica possa ajudar algum dos colegas.
Amplexos,
Alexandre
 
Nenhum comentário foi encontrado.