Encuentre una cuenta exim enviando muchos correos electrónicos. (Envío no deseado)

Encuentre una cuenta exim enviando muchos correos electrónicos. (Envío no deseado)

Tengo un servidor Exim con varios dominios configurados. En cada dominio tengo varias cuentas de correo electrónico. De vez en cuando, una computadora configurada con uno de estos correos electrónicos se infecta y comienza a enviar spam.

Solía ​​​​tener Isoqlog para obtener informes de las principales cuentas de correo electrónico enviadas, pero ya no funciona desde que se actualizó por última vez en 2005.

Necesito una manera de averiguar las 50 cuentas de correo electrónico que envían spam en las últimas 24 hs (no el remitente, la cuenta que se utiliza para autenticarse para enviar spam. El remitente puede ser falso, por lo que no son datos válidos)

¿Alguna idea de si existe un paquete (como Isoqlog o similar) que pueda hacer esto? Gracias

Respuesta1

No necesita un programa complejo para extraer información del archivo de registro. UnLínea de registro Exim4para el correo entrante se ve así:

2020-01-18 02:19:41 1iscm4-0000Nt-TE <= [email protected]\
H=verified_rdns.example.net (helo.example) [192.0.2.1] P=esmtpsa\
X=TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128 CV=no A=dovecot_gssapi:auth_user\
S=3812 [email protected]

con el remitente del sobre [email protected], el host de envío H=verified_rdns.example.net (helo.example) [192.0.2.1]y una lista de tag=value.

Lo que más nos interesa es la Aetiqueta que tiene un valor del formulario authenticator:auth_user, donde authenticatorestá el nombre delautenticador exim4usted proporcionó el archivo de configuración y auth_useres el usuario autenticado.

Juntando todo, podemos imprimir el recuento de correos electrónicos enviados por cada usuario en el tiempo comprendido en el archivo de registro usando un bashscript simple:

#!/bin/bash 
if [ $# -lt 1 ]; then
    2>& echo Usage: $0 "<exim_mainlog_file>"
    2>& echo Example: $0 /var/log/exim4/mainlog
    exit 1
fi
# To save typing
d='[[:digit:]]'
a='[[:alnum:]]';
pref="^$d\{4\}-$d\{2\}-$d\{2\} $d\{2\}:$d\{2\}:$d\{2\} $a\{6\}-$a\{6\}-$a\{2\}"
logfile="$1"

zgrep "$pref <=" "$logfile" |
grep -oh "A=[[:alnum:]_]\+:[[:alnum:]_]\+" |
cut -d : -f 2 |
sort |
uniq -c |
sort -rn

información relacionada