Mantendo logs do SMTP para auditoria em servidores de grande movimento

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

[ Hits: 7.865 ]

 


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

Expresso Livre: Corrigindo erros de atualização para versão 2.5

Cyrus IMAPD - Erro "Unsupported feature(s) in require" ao aplicar filtros Sieve

Thunderbird - Usando a mesma caixa de entrada no Windows e no Linux

Bloqueio por extensões no Postfix

Erro no Sendmail: "Deferred: 403 4.7.0 TLS handshake failed" (solucionado)

  

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