Elaborare i messaggi di posta con Procmail

Procmail e' un software che consente di analizzare i messaggi email ricevuti ed intraprendere delle azioni in base a regole definite dall'utente o globalmente. E' utile ad esempio per avviareun determinato programma alla ricezione di una particolare email, per spostare messaggi di posta in cartelle predefinite in base l'indirizzo del mittente, ad elaborare un servizio di mailing list, ecc.

Di seguito vengono  illustrati i seguenti punti:

1- L'installazione;

2- Integrazione con l'mta Postfix;

3- Esempi di regole;

Iniziamo quindi dall'installazione.

1-

Per gli utenti che utilizzano Fedora e CentOS linux, bastera' eseguire questo

yum install procmail

In Debian ed Ubuntu linux si potra' utilizzare il packet manager apt

apt-get install procmail

Se desiderate compilare dal sorgente o non trovate un pacchetto precompilato, seguite pure questo esempio

wget ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz

tar zxvf procmail-3.22.tar.gz

cd procmail-3.22

make

make install

2- Integrazione con l'mta Postfix

Configurare postfix per abilitare procmail e' davvero molto semplice, bastera' difatti inserire nella configurazione del servizio di posta (/etc/postfix/main.cf) la seguente riga

mailbox_command = /path/di/procmail

Ovviamente e' necessario cambiare /path/di/procmail con la locazione del procmail nel vostro sistema (in Debian Lenny /usr/bin/procmail)

Adesso bisogna eseguire questo comando per far rileggere a Postfix la sua configurazione

postfix reload

3- Esempi di regole

Le direttive per il filtraggio e l'elaborazione dei messaggi di posta da parte di procmail possono essere gestite sia globalmente (valido per tutti gli utenti di sistema) che individualmente (e' l'utente a configurare il 'proprio' procmail). Le regole 'globali' devono essere memorizzate in '/etc/procmailrc', quelle individuali nel file '.procmailrc' nella home dell'ultente. Se si utilizzano 'ricette' globali, e' necessario inserire in procmailrc l'istruzione DROPPRIVS=yes al fine di conservare il corretto proprietario dei messaggi analizzati.

N.B. Per verificare la locazione di questi file bastera' eseguire da shell 'man procmail', quindi cercare la parola procmailrc nella sezione FILES del manuale

Ecco qualche esempio:

Cestinare automaticamente i messaggi email provenienti dal dominio @spammer.it:

DROPPRIVS=yes
PATH=/bin:/usr/bin:/usr/local/bin
SHELL=/bin/sh

#senza questo le email vanno in /var/spool/mail (caso in cui le mailbox fossero nel formato mbox)
DEFAULT=$HOME/Maildir/

:0
* ^From.*@spammer.it
/dev/null

Fare un backup di tutte le email in ingresso

DROPPRIVS=yes
PATH=/bin:/usr/bin:/usr/local/bin
SHELL=/bin/sh

#senza questo le email vanno in /var/spool/mail (caso in cui le mailbox fossero nel formato mbox)
DEFAULT=$HOME/Maildir/

# backup di tutte le email in ingresso
:0c:
|gzip -9fc >> /path/del/backup.gz

Fare un forward delle email indirizzate a utente@sito1.it verso utente@sito2.it

DROPPRIVS=yes
PATH=/bin:/usr/bin:/usr/local/bin
SHELL=/bin/sh

#senza questo le email vanno in /var/spool/mail (caso in cui le mailbox fossero nel formato mbox)
DEFAULT=$HOME/Maildir/
#se al posto di :0: si mette :0c: una copia dell'email viene recapitata anche a utente@sito1.it
:0:
* ^To.utente@sito1.it
! utente@sito2.it