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.