Mantendo logs do SMTP para auditoria em servidores de grande movimento

Publicado por Alexandre de Castro Goulart em 03/06/2005

[ Hits: 7.704 ]

 


Mantendo logs do SMTP para auditoria em servidores de grande movimento



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

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Zimbra 8.0.8: Erro em rotina do CRON / LOGROTATE

Filtro antispam

Leia emails que estão no Exchange com o Ximian Evolution

Enviando email via terminal de comandos

Postfix - Bloqueando spam com o próprio domínio

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts