Manutenzione di un server di posta: come scoprire quali domini non sono più in tua gestione

Tra i servizi che da più anni eroghiamo c’è quello della gestione e del mantenimento di server di posta elettronica aziendali. Stiamo parlando di macchine con un uptime del 100% su periodi decisamente lunghi, server che in alcuni casi sono rimasti online per oltre 10 anni con rarissime interruzioni dovute ad interventi di manutenzione straordinaria: sostituzione di un disco, incremento della RAM, etc. Oltre agli aspetti fisici, anche sul piano del software si tratta di server soggetti ad una continua manutenzione adattativa ed evolutiva per via delle sempre più numerose novità nel campo della posta elettronica: antispam, anti malware, SPF, DKIM, DMARC, etc.

Avere in gestione volumi significativi di domini significa dover controllare periodicamente che ogni server ospiti solo quelli che effettivamente gli competono. Capita infatti che un cliente dismetta un dominio o lo faccia scadere senza avvisarci, lasciando sui nostri server tutte le configurazioni attive. In altri casi invece siamo noi stessi a lasciare attive le configurazioni di domini migrati su altri nostri server, prassi che serve a garantire la massima continuità del servizio ma che non deve protrarsi troppo per non generare inutili interferenze e possibili malintesi in fase di assistenza.

Per essere sicuri che i domini gestiti da un server siano effettivamente solo quelli che gli competono noi utilizziamo un semplice script:

#!/bin/bash

cd /var/vmail/

for d in */ ; do
	domain=${d%/}
	dig +short $domain mx | sort -n | nawk -v pref=65536 '($1<=pref) {pref=$1; print $2}' | dig +short -f - | uniq | sed "s/$/\t$domain/" | column -t
done

Queste poche righe di codice fanno un lavoro estremamente prezioso: elencano tutti i domini presenti sul server listando la directory in cui si trovano sul filesystem – con Postfix di norma è /var/vmail – e per ogni domino ricavano i record MX indicati nei rispettivi DNS. In questo modo otteniamo un output con una struttura simile alla seguente:

123.123.123.123 dominio1.com
123.123.123.123 dominio2.com
123.123.123.123 dominio3.com
234.234.234.234 dominio4.com
123.123.123.123 dominio5.com
123.123.123.123 dominio6.com
123.123.123.123 dominio7.com
123.123.123.123 dominio8.com
123.123.123.123 dominio9.com

E tra questi possiamo facilmente individuare quei domini che hanno configurato almeno un MX con indirizzo IP differente da quello del server su cui ci troviamo, specialmente se ci facciamo aiutare dal comando grep:

./CHECK_DOMAIN_MX.sh | grep -v 123.123.123.123

Il risultato di quest’ultimo comando restituirà solo i domini con indirizzo IP differente da 123.123.123.123, dal momento che il parametro -v inverte la logica di output del comando grep e lo costringe a mostrare tutti i record che non contengono la stringa che gli abbiamo passato.

 

Condivido

Leave a comment