Pillole di Bash e awk: Postfix, elenco Mailbox Overquota

Uno dei problemi con le caselle di posta elettronica è il raggiungimento delle quote disco assegnate con il conseguente respingimento di ulteriori messaggi in entrata. In questo articolo vediamo come creare un semplice script per elencare le caselle di posta  con errori per limiti di capienza su server con Postfix .

Lo script è piuttosto semplice e si limita ad estrarre le informazioni dal file di log e  farle filtrare da awk per ottenere l’elenco che ci interessa.

Create il file list_mail_overquota utilizzando il vostro editor preferito. Non essendo un guru dei sistemi Unix-like non amo il sofisticato Emacs e nemmeno il potente quanto macchinoso vi e solitamente utilizzo joe o nano. Ovviamente se utilizzate un’interfaccia grafica (cosa peraltro insolita su un server GNU/Linux) potete affidarvi ad un altro editor di vostro piacimento.

Il contenuto sarà piuttosto scarno e sarà costituito da alcuni comandi concatenati che servono ad estrarre dal file di LOG le informazioni che ci interessano e d a trasformarle in modo da visualizzare solamente quello che coi interessa in una forma semplice e leggibile.

dallo script potete già notare che awk viene richiamato passandogli un file contenente le regole per filtrare l’output estratto tramite grep. Non ci resta quindi che creare il file:

/quota/ {
    indirizzo = $7
    sub(/to=/, "",indirizzo)
    sub(/</, "",indirizzo)
    sub(/>/, "",indirizzo)
    sub(/,/, "",indirizzo)
    conta[indirizzo] += 1
}
END {
    for (i in conta) {
        print "Per: " i ":" conta[i]
    }
}

Il funzionamento è abbastanza semplice:

  • per ogni riga contenente la segnalazione di quota overflow, estrae l’indirizzo di posta ed incrementa il relativo contatore

  • al termine visualizza l’elenco di indirizzi interessati con il relativo contatore.

ora dobbiamo rendere eseguibile lo script:

e non ci resta che farlo eseguire:

per ottenere l’elenco dei nostri utenti che non provvedono a ripulire regolarmente la propria casella di posta

Per: user1@inforisorse.it:61
Per: user2@inforisorse.it:98