Come trovare le email bloccate nella coda di uscita di Postfix? La prima azione pratica che possiamo fare è analizzare la queue insieme al mail log per capire cosa è successo. La coda di postfix è divisa in due, una per i messaggi active e l’altra per i deferred. Quest’ultima contiene i messaggi il cui invio è stato rimande e, idealmente, dovrebbe essere sempre vuota.
Utilizziamo il comando qshape per visualizzare quante email si trovano in coda. Teniamo presente che l’invioè immediato e che non dovrebbe comparire alcuna email.
# qshape T 5 10 20 40 80 160 320 640 1280 1280+ TOTAL 0 0 0 0 0 0 0 0 0 0 0
Per visualizzare quanti invii sono state rimandati per un errore utilizziamo il comando qshape deferred :
# qshape deferred T 5 10 20 40 80 160 320 640 1280 1280+ TOTAL 5 0 0 0 0 0 0 0 0 0 5 gmail.com 4 0 0 0 0 0 0 0 0 0 4 tiscali.it 1 0 0 0 0 0 0 0 0 0 1
Se visualizziamo uno o più domini significa che c’è qualche problema di invio verso quest’ultimi, e dobbiamo procedere ad un po’ di analisi per capire il perché.
Analizzare le mail in coda
Visualizzare l’intera coda di invio
Per visualizzare l’elenco completo delle email bloccate nella coda d’uscita, utilizziamo il comando mailq :
# mailq -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 2FC8824D24 10588 Thu Sep 27 14:52:41 me@esempio.it (connect to alt2.gmail-smtp-in.l.google.com[74.125.79.26]:25: Connection timed out) paolo@gmail.com -- 16 Kbytes in 2 Requests.
Visto che ogni messaggio in coda ottiene un ID univoco (nell’esempio qui sopra è 2FC8824D24), possiamo utilizzarlo per leggere il messaggio, in questo modo:
postcat -qv 2FC8824D24
Forzare l’invio mail dalla coda
Volendo, possiamo forzare l’invio di un messaggio bloccato in coda utilizzando, analogamente a quanto appena visto, il comando postqueue utilizzando “i”:
# postqueue -i 2FC8824D24
Per provare ad inviare tutte le email bloccate possiamo utilizzare:
# postqueue -f
Cancellare le email in coda
In alcuni casi è necessario svuotare la coda delle mail in uscita. Possiamo farlo semplicemente in questo modo:
# postsuper -d ALL deferred
..oppure cancellare una singola email indicandone l’ID:
# postsuper -d 2FC8824D24