A volte mi è capitato di dovermi imbattere nel classico spam massivo da parte di un mittente di tipo fake che cerca di spedire un numero elevato di mail verso utenti del server oppure il classico utente che usa il server come SMTP attraverso il proprio Outlook.

Quando capita, risulta difficile essere proattivi (esempio se accade alle 3 di notte) e per questo la sfilza di mail nella coda aumenta fino alla completa saturazione la mattina seguente.

Questo script cerca di aiutarci in tal senso. Prima esegue la lista della mail in coda, recupera l’indirizzo mittente di ogni mail in lista, li raggruppa e conta il numero di mail totali per mittente. Il ‘vincitore’, ovvero quello che avrà il maggior numero di mail in coda in tutta la lista verrà paragonato ad un numero max di mail di tolleranza imposto da noi (in questo esempio 150). Se è uguale o maggiore a questo numero, richiama lo script per la cancellazione di tutti i messaggi passandogli l’indirizzo mail del solo mittente da rimuovere (per lo script di cancellazione guardare qui):

#!/bin/sh

ACTUALMAXNUMB=`mailq | gawk '{print $7}' | grep @ | sort | uniq -c | sort -r | head -n1 | gawk '{print $1}'`
ACTUALMAXSENDER=`mailq | gawk '{print $7}' | grep @ | sort | uniq -c | sort -r | head -n1 | gawk '{print $2}'`

if [ "$ACTUALMAXNUMB" -ge "150" ]
then

/etc/SCRIPT/empty-mqueue.pl $ACTUALMAXSENDER
echo "$ACTUALMAXSENDER - $ACTUALMAXNUMB" >> /etc/SCRIPT/log/count-max-email-queue.log

fi