Encontre uma conta exim enviando muitos e-mails. (Spam)

Encontre uma conta exim enviando muitos e-mails. (Spam)

Tenho um servidor Exim com vários domínios configurados. Em cada domínio tenho várias contas de email. De tempos em tempos, um computador configurado com um desses e-mails é infectado e começa a enviar spam.

Eu uso o Isoqlog para obter relatórios das principais contas de e-mail do Sendin, mas ele não funciona mais desde que foi atualizado pela última vez em 2005.

Preciso encontrar uma maneira de descobrir as 50 principais contas de e-mail com spam nas últimas 24 horas (não o remetente, a conta que está sendo usada para autenticar o envio de spam. O remetente pode ser falso, portanto, não há dados válidos)

Alguma ideia se existe um pacote (como Isoqlog ou similar) que pode fazer isso? Obrigado

Responder1

Você não precisa de um programa complexo para extrair informações do arquivo de log. UmLinha de registro Exim4para mensagens recebidas é assim:

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]

com o remetente do envelope [email protected], o host remetente H=verified_rdns.example.net (helo.example) [192.0.2.1]e uma lista de arquivos tag=value.

Estamos mais interessados ​​na Atag que tem um valor no formato authenticator:auth_user, onde authenticatorestá o nome doAutenticador Exim4você forneceu o arquivo de configuração e auth_useré o usuário autenticado.

Juntando tudo, podemos imprimir a contagem de e-mails enviados por cada usuário no tempo abrangido pelo arquivo de log usando um bashscript simples:

#!/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

informação relacionada