Plesk e QMail: come monitorare la coda dei messaggi

Loghi Plesk e QMail, icona coda messaggi

Loghi Plesk e QMail, icona coda messaggi Monitorare la coda dei messaggi di posta elettronica è sempre un task importante per chi gestisce un server. Basta che venga trafugata una password di qualche utente o che il pc di qualche utente sia affetto da malware che il nostro server comincia a produrre un’infinità di messaggi di spam. Questa situazione è assolutamente da evitare perché, a parte i problemi derivanti dall’effetto “tappo” dato dalla massa dei messaggi in uscita e il conseguente sovraccarico in termini di CPU e di memoria, c’è la severa possibilità che l’indirizzo IP del server venga presto inserito nelle blacklist.
Nel caso il nostro server venga gestito tramite Plesk e il servizio di posta elettronica sia basato su QMail (caso piuttosto diffuso) possiamo utilizzare direttamente il pannello di controllo di Plesk per monitorare ed eventualmente per cancellare i messaggi che stanno affollando pericolosamente la coda. E’ utile, prima di cancellare i messaggi sospetti, analizzare gli header degli stessi per capire da quale account stanno partendo.

Leggi tutto

Linux bash: uno script per monitorare le modifiche ai file di una directory

rodentia-icons_utilities-terminalQuesto piccolo script bash serve a monitorare le modifiche fatte ai file in una certa directory, confrontandoli con una directory di controllo che contenga i file originali.

Ammettiamo di voler avere una notifica dei cambiamenti che vengono effettuati da terzi in una serie di file residenti in una particolare cartella del FS. Per prima cosa creiamo una nuova cartella in qualche parte del filesystem che contenga i file originali per confrontarli con quelli della directory di lavoro.

Qundi prepariamo questo script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
PATH_OK="/path/directory/controllo"
PATH_TO_CHECK="/path/directory/lavoro"
CHANGES=0
for entry in "$PATH_OK"/*
do
	toCheck=$(echo "$entry" | rev | cut -d"/" -f1 | rev)
	echo "Processing $toCheck"
	MD5_1=_$(md5sum $entry | cut -d ' ' -f 1)
	MD5_2=_$(md5sum $PATH_TO_CHECK/$toCheck | cut -d ' ' -f 1)
	if [[ "$MD5_1" != "$MD5_2" ]]
	then
		echo "FILE $toCheck has been modified!"
		CHANGES=$((CHANGES+1))
		diffText=$(diff $entry $PATH_TO_CHECK/$toCheck)
		mail -s "FILE $toCheck has been modified!" webmaster@domain.com <<< "Changes in $toCheck: $diffText"
		#Se vogliamo possiamo ripristinare il file modificato con il controllo
                #/bin/cp -f "$entry" "$PATH_TO_CHECK/$toCheck"
	fi
done
echo "CHANGES= $CHANGES"
#		if [ "$CHANGES" -gt 0 ]
#		then
# Qui possiamo inserire un comando da lanciare nel caso ci siano stati cambiamenti a uno o più files
#			echo "CHANGES greater then 0!"
#		fi

In pratica lo script scorre tutti i files nella directory di controllo, fa l’MD5 sia del file di controllo che di quello di lavoro, li confronta e se ci sono state modifiche invia una mail a: webmaster@domain.com (da modificare secondo le proprie esigenze…) riportando anche il dettaglio delle modifiche fatte utilizzando il comando diff. E’ anche possibile, nel caso lo si desideri, ripristinare il file modificato con quello di controllo decommentando la riga: /bin/cp -f "$entry" "$PATH_TO_CHECK/$toCheck"
Vengono anche conteggiati i file modificati in modo che si possa decidere di lanciare un comando particolare nel caso uno o più files siano stati modificati.
Lo script può essere utile per monitorare cambiamenti indesiderati in file di configurazione di servizi.
Ovviamente lo script andrà inserito sotto cron per essere eseguito periodicamente. In questo articolo (in inglese) è spiegato chiaramente come inserire un “job” in cron.