Monitoraggio delle code di posta con Postfix

Postfix è considerato da tempo uno tra i migliori MTA in circolazione. Scritto inizialmente da Wietse Zweitze Venema e rilasciato sotto IBM Public License, Postfix può vantare una solidità ed una facilità di interazione introvabili in altri demoni di posta SMTP.

La scelta di distribuire le sue funzionalità su diversi demoni – ognuno dei quali svolge una funzione specifica – e l’attribuzione di diritti minimi di esecuzione ad ognuno di essi, garantisce che un eventuale bug o exploit non possa compromettere l’intero MTA. Un solo processo deve essere eseguito con privilegi di root, tutti gli altri hanno diritti minimi e spesso un file di configurazione proprio.

Questa distribuzione di compiti si traduce anche nella disponibilità di diversi strumenti specificamente dedicati a svolgere funzioni di monitoraggio e di amministrazione dei processi generati da Postfix. Alcuni di questi strumenti sono parte integrante di Postfix, mentre altri costituiscono elementi accessori – spesso sviluppati da terze parti – che interagiscono con esso a vari livelli.

Il monitoraggio delle code di posta, ad esempio, può avvenire mediante il programma `mailq`:

# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
6CC39230001* 1389 Wed Jun 25 01:17:51 5tanya.wuhc@msa.hinet.net
test@dominio.it

Rimando i newbie al solito `man mailq` per le informazioni principali su come funziona il programma. Quello che segue è invece un esempio di come si possa utilizzare al meglio `mailq` per rimuovere la posta bloccata dallo spool locale:

# exim -Mg `mailq | grep frozen | awk '{ print $3 }'`

Il normale utilizzo di `mailq` può essere ostacolato dalla presenza di code di posta molto voluminose. In questi casi è bene ricorrere allo script `qshape` per avere una quadro chiaro su cosa abbia determinato l’accumulo di messaggi e quando sia accaduto:

$ qshape -s deferred | head
T 5 10 20 40 80 160 320 640 1280 1280+
TOTAL 1250 0 1 2 4 5 22 34 118 242 822
spammer123.com 462 0 1 0 1 1 3 7 15 53 381
zzfinder.com 64 0 0 0 0 0 1 0 0 4 59
socket4you.biz 53 0 0 0 0 0 0 0 0 0 53
junglex.com 36 0 0 0 0 0 1 3 7 15 10
myemessage.com 36 0 0 0 0 0 0 0 0 0 36
stock911.us 35 0 0 0 0 0 0 0 0 0 35
linuxassistance.it 33 0 0 0 0 0 0 0 0 0 33
agliardi.biz 29 0 0 0 0 0 0 0 0 3 26

Qui si vede come ci siano 1250 messaggi in coda per i quali è stato fatto almeno un tentativo di spedizione (deferred), di cui 462 sono indirizzati al dominio spammer123.com. Delle email inviate a questo dominio 1 è in coda per un periodo di tempo compreso fra 5 e 10 minuti, mentre 381 sono in attesa da più di 1280 minuti.

Il comando che segue serve invece per visualizzare le statistiche legate al numero di destinatari delle mail presenti nella coda “active” di Postfix:

qshape active | less

In questo modo siamo in grado di individuare in ogni momento eventuali “colli di bottiglia”, ovvero invii di posta elettronica anomali che si accumulano nella coda di Postfix degradandone nettamente le prestazioni. Una volta individuati simili processi, li si può debellare con l’ausilio del comando `postsuper`:

postsuper [-psv] [-c directory_file_conf] [-d][-h][-H][-r] [id_coda] [directory_coda]

Per eliminare, ad esempio, il messaggio con ID di coda 6CC39230001 (ovvero quello riportato nell’esempio fatto sopra) è sufficiente lanciare il comando:

# postsuper -d 6CC39230001

Se invece, a vostro rischio e pericolo, volete svuotare completamente le code di posta, potete sempre ricorrere al seguente comando:

# postsuper -d ALL deferred

Ma se mai doveste perdere messaggi di posta elettronica a causa dell’utilizzo di questo secondo esempio, non ve la prendete con me.

Condivido

Leave a comment