[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]
Procmail(1) è un sistema di analisi e selezione dei messaggi di posta elettronica, che si inserisce subito dopo un MDA (Mail delivery agent). Viene usato praticamente per ogni tipo di controllo che riguardi la posta elettronica, a livello di singolo utente, ma ha un grande difetto: la sintassi per la sua configurazione.
In questo capitolo viene descritto l'uso di Procmail al livello dell'utente singolo, senza entrare nel dettaglio della spiegazione sulla sintassi da usare per la sua configurazione.
Procmail, nel suo utilizzo normale, viene avviato con i privilegi di un certo utente e serve per ricevere un messaggio di posta elettronica attraverso lo standard input, da depositare nel file appropriato che rappresenta la casella di posta in entrata di quello stesso utente. Per la precisione, qualsiasi sia la forma dei dati che vengono ricevuti in ingresso, questi vengono depositati tali e quali nella casella di posta.
cat messaggio | procmail |
Il funzionamento di Procmail dipende dalla presenza e dal contenuto di un file di configurazione. Generalmente si considera solo il file ~/.procmailrc
, di competenza dell'utente, proprio perché Procmail lo si intende uno strumento che deve gestire l'utente singolo.
|
Attraverso la configurazione, si può istruire Procmail in modo da selezionare i messaggi per depositarli in file differenti, in base a qualche criterio, così come è possibile utilizzare altri programmi per il controllo della presenza di virus o per l'individuazione di «spam», i quali aggiungono delle voci nell'intestazione dei messaggi, così che lo stesso Procmail possa poi separarli dai messaggi normali.
|
Per cominciare a comprendere l'uso di Procmail, occorre predisporre un file di configurazione iniziale (~/procmailrc
), molto simile a quello seguente:
|
Come si può intuire, vengono definite delle variabili di ambiente per il funzionamento di Procmail stesso. In particolare, la variabile MAILDIR rappresenta la directory in cui vengono depositati i file per il recapito dei messaggi, mentre DEFAULT rappresenta il file che deve ricevere i messaggi in modo predefinito. Eventualmente, la variabile DEFAULT potrebbe anche corrispondere a /var/mail/$LOGNAME
.
Avendo fatto questo, si può utilizzare un file contenente il testo seguente, per verificare il funzionamento di Procmail:
|
Supponendo che questo file si chiami messaggio, si può vedere se Procmail lo può recapitare regolarmente:
$
cat messaggio | procmail
[Invio]
Indipendentemente dal fatto che l'utente sia effettivamente caio, dovrebbe trovare il messaggio nel file ~/mail/mbox
, da come si vede nella configurazione stabilita. Ma più importante di questo, nel file ~/mail/procmail.log
si deve vedere cosa ha fatto Procmail:
|
Per svolgere il suo compito, Procmail deve essere avviato ogni volta che c'è un messaggio da recapitare a un certo utente.
Si parte dal presupposto che il sistema, senza Procmail, sia già in grado di recapitare i messaggi agli utenti, pur senza compiere analisi dei contenuti di questi. Quando si vuole inserire Procmail, quello che prima svolgeva il compito di MDA, dopo deve avvalersi a sua volta di Procmail per completare il recapito.
A seconda dei casi, può darsi che Procmail venga preso in considerazione in modo automatico dal sistema di recapito dei messaggi di posta elettronica, oppure che si debba intervenire all'interno di file ~/.forward
.
A titolo di esempio viene mostrato un estratto della configurazione di Exim 3, dove viene definito l'uso di Procmail, nel caso si verifichi la presenza del programma stesso e del file di configurazione personale necessario:
|
Quando invece il programma che gestisce la consegna dei messaggi ignora l'esistenza di Procmail, occorre utilizzare il file ~/.forward
. Potrebbe essere necessario utilizzare una delle due forme seguenti, ma si deve verificare con la documentazione del sistema MDA:
|
|
Il file di configurazione di Procmail contiene, oltre alle direttive per assegnare un valore a delle variabili di ambiente, delle «ricette» (recipe) con cui si dice cosa fare dei messaggi elaborati. Si osservi l'esempio seguente:
|
In questo caso si mostra un file completo, che dopo l'assegnamento delle variabili di ambiente e dopo un'annotazione (commento) contiene una ricetta:
|
Le ricette si distinguono perché iniziano sempre con la sigla :0. In questo caso, la ricetta indica che si vuole mettere una copia dei messaggi che risultano diretti all'indirizzo scuola@lists.linux.it
nel file didattica
(precisamente il file $MAILDIR/didattica
).
Si osservi che |
|
Nell'esempio seguente, invece, si vede la stessa ricetta, con la differenza che manca la «c», per fare in modo che i messaggi individuati dalla condizione vengano messi solo nel file o nella directory didattica
:
|
L'esempio successivo riguarda l'uso di un programma antivirus e si avvale di due ricette in sequenza:
|
La prima ricetta richiede di avviare il programma clamdscan (con le opzioni che si vedono), inviandogli il messaggio attraverso lo standard input. Il risultato della scansione è un testo descrittivo che viene emesso dal programma attraverso lo standard output, che così viene assegnato alla variabile VIRUS. La seconda ricetta prende lo stesso messaggio e verifica che la variabile VIRUS contenga la stringa FOUND alla fine: se c'è la corrispondenza, il messaggio viene messo nel file o nella directory virus
.
|
L'esempio seguente riguarda due ricette per utilizzare SpamAssassin, allo scopo di valutare i messaggi e «marchiarli» come spam:
|
Nella prima ricetta si vede l'uso delle opzioni f e w. La lettera f serve per fare in modo che il messaggio, inviato al programma attraverso il condotto che si vede dopo la condizione, venga modificato e passato alle ricette successive con tale modifica. La lettera w richiede di attendere l'esecuzione del programma e di verificare il valore di uscita dello stesso: se si verifica un errore, occorre rifiutare le modifiche al messaggio, che così passa intatto alle ricette successive.
Dopo le opzioni, appare il segno di due punti (:), perché poi viene indicato il nome di un file, spamassassin.lock
, che viene creato nel momento dell'utilizzo della ricetta e cancellato subito dopo. La presenza di questo file serve a evitare che il programma spamassassin venga avviato quando ne esiste già un altro che non ha ancora completato il suo compito; pertanto, all'esecuzione della ricetta, se il file esiste già, si attende che il file scompaia prima di procedere (in inglese si definisce: lock file).
La condizione della prima ricetta si avvera se il messaggio ha una dimensione inferiore a 256 000 byte (ovvero 250 Kibyte). Ciò serve a evitare di scandire messaggi di dimensioni troppo grandi. Tali messaggi più grandi non vengono così controllati dal programma spamassassin.
Nella prima ricetta, il programma spamassassin aggiunge delle intestazioni ai messaggi, in particolare una denominata X-Spam-Level:, che contiene una fila di asterischi: più sono gli asterischi, più è probabile che si tratti di messaggi indesiderabili. Nella seconda ricetta, infatti, si verifica la presenza di un'intestazione di questo tipo: se appaiono almeno 15 asterischi, il messaggio viene messo nel file o nella directory spam
.
Per la descrizione dettagliata della sintassi da usare per la costruzione delle ricette di Procmail, occorre leggere i documenti: procmailrc(5) e procmailex(5).
Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) Procmail GNU GPL o Artistic
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome procmail.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]