Mantendo logs do SMTP para auditoria em servidores de grande movimento

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

[ Hits: 6.623 ]

 


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

Configurando o Thunderbird para trabalhar com contas Hotmail

Postfix bloqueando e-mails indesejados

Dovecot: userdb reply doesn't contain uid (change userdb socket permissions)

Life with qmail

Corretor ortográfico em português no Thunderbird

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts