En este post muestro una de las miles de formas de ver de manera clara los logs en tiempo real, (únicamente los que se envía y reciben y se excluyen los rechazados) para monitorear lo que sucede con nuestro servidor de correo.
tail -f postfix-in.log | grep 'from=\|to=' | awk '{print $1$2"-"$3 " | " $6 " | " $7}' | grep -v reject
en donde :
tail nos está mostrando un seguimiento de los logs que se están guardando en postfix-in.log
grep nos está acortando todo lo que muestra tail , para que unicamente muestre las lineas que contengan "from=" o la palabra "to=" para mostrar los correos origen y destino
awk nos permite mostrar únicamente las partes que necesitamos ver de los logs, en este caso:
$1 Es el mes
$2 Es el dia
"-" Se agrega un guion para dividir la fecha de la hora
$3 Es la hora
" | " Divisores para mejor visualización
$6 ID del mensaje en proceso
$7 Email de origen o destino
esto nos muestra el envio y recepción de correos en tiempo real de una manera más legible para poder identificar si se está enviando o recibiendo spam o hay actividades sospechosas. Ejemplo:
ya que si también quieren ver información de cuantos correos se envían hacia correos externos y también tener una información detallada por envío (interno/externo) podemos obtenerla con este script escrito en dos minutos (se puede mejorar o cambiar totalmente para tus necesidades)
Les dejo el script
#!/bin/bash
#
# USO: ./script.sh correoorigen@uach.mx
FILE_LOG='/var/log/postfix-in.log'
rm -rf resultados
mkdir resultados
cat $FILE_LOG |grep -v NOQUEUE |grep "from=<"$1 | awk '{print $6}' > resultados/id.txt
for linea in $(cat resultados/id.txt); do
grep $linea $FILE_LOG
grep $linea $FILE_LOG >> resultados/envios_por_id.txt;
echo "----------------------------------------------------------------" >> resultados/envios_por_id.txt ;
echo "----------------------------------------------------------------"
done
cat resultados/envios_por_id.txt | awk '/to=</{print $1":"$2":"$3" | "$7 }' >> resultados/destino_con_hora.txt
ENV_POR_DEST=$(cat resultados/destino_con_hora.txt | wc -l) # Cuenta todos los envios
ENV_FORANEOS=$(cat resultados/destino_con_hora.txt | grep -v "@uach.mx" |wc -l)
echo "#######################################################" >> resultados/resultados.txt
echo " RESULTADOS :" >> resultados/resultados.txt
echo "" >> resultados/resultados.txt
echo "Numero total de envíos desde $1 : $ENV_POR_DEST" >> resultados/resultados.txt
echo "" >> resultados/resultados.txt
echo "Numero de envíos foraneos : $ENV_FORANEOS" >> resultados/resultados.txt
echo "#######################################################";
echo " RESULTADOS :";
echo "";
echo "Numero total de envios desde $1 : $ENV_POR_DEST";
echo "";
echo "Numero de envios foraneos : $ENV_FORANEOS";
En este caso es información obtenida de un servidor de correo @uach.mx eso por eso que está hecho de esta manera pero ustedes lo pueden modificar para el uso que le quieran dar.
Los resultados del script se encontraran en un directorio creado que se llama "resultados"
tail -f postfix-in.log | grep 'from=\|to=' | awk '{print $1$2"-"$3 " | " $6 " | " $7}' | grep -v reject
en donde :
tail nos está mostrando un seguimiento de los logs que se están guardando en postfix-in.log
grep nos está acortando todo lo que muestra tail , para que unicamente muestre las lineas que contengan "from=" o la palabra "to=" para mostrar los correos origen y destino
awk nos permite mostrar únicamente las partes que necesitamos ver de los logs, en este caso:
$1 Es el mes
$2 Es el dia
"-" Se agrega un guion para dividir la fecha de la hora
$3 Es la hora
" | " Divisores para mejor visualización
$6 ID del mensaje en proceso
$7 Email de origen o destino
esto nos muestra el envio y recepción de correos en tiempo real de una manera más legible para poder identificar si se está enviando o recibiendo spam o hay actividades sospechosas. Ejemplo:
ya que si también quieren ver información de cuantos correos se envían hacia correos externos y también tener una información detallada por envío (interno/externo) podemos obtenerla con este script escrito en dos minutos (se puede mejorar o cambiar totalmente para tus necesidades)
Les dejo el script
#!/bin/bash
#
# USO: ./script.sh correoorigen@uach.mx
FILE_LOG='/var/log/postfix-in.log'
rm -rf resultados
mkdir resultados
cat $FILE_LOG |grep -v NOQUEUE |grep "from=<"$1 | awk '{print $6}' > resultados/id.txt
for linea in $(cat resultados/id.txt); do
grep $linea $FILE_LOG
grep $linea $FILE_LOG >> resultados/envios_por_id.txt;
echo "----------------------------------------------------------------" >> resultados/envios_por_id.txt ;
echo "----------------------------------------------------------------"
done
cat resultados/envios_por_id.txt | awk '/to=</{print $1":"$2":"$3" | "$7 }' >> resultados/destino_con_hora.txt
ENV_POR_DEST=$(cat resultados/destino_con_hora.txt | wc -l) # Cuenta todos los envios
ENV_FORANEOS=$(cat resultados/destino_con_hora.txt | grep -v "@uach.mx" |wc -l)
echo "#######################################################" >> resultados/resultados.txt
echo " RESULTADOS :" >> resultados/resultados.txt
echo "" >> resultados/resultados.txt
echo "Numero total de envíos desde $1 : $ENV_POR_DEST" >> resultados/resultados.txt
echo "" >> resultados/resultados.txt
echo "Numero de envíos foraneos : $ENV_FORANEOS" >> resultados/resultados.txt
echo "#######################################################";
echo " RESULTADOS :";
echo "";
echo "Numero total de envios desde $1 : $ENV_POR_DEST";
echo "";
echo "Numero de envios foraneos : $ENV_FORANEOS";
En este caso es información obtenida de un servidor de correo @uach.mx eso por eso que está hecho de esta manera pero ustedes lo pueden modificar para el uso que le quieran dar.
Los resultados del script se encontraran en un directorio creado que se llama "resultados"
3 comentarios:
No puedo creer que nadie le agradezca a villatux...muchas gracias...a mi el script me sirvio montón de hecho lo log de pstfix son horribles de analizar y de mas se te pasa una amenaza o un rechazo, etc....muchas gracias....a mi me sirvió.
Un saludo de un administrador de Chile
Excelente aporte, me ayudo
tienes algun P.O. de donativos?
con gusto aportaremos
slds!
Muchas gracias por compartir tus conocimientos me sirvio mucho, saludos.
Publicar un comentario