Avanti Indietro Indice

2. Ricevere la posta

Molti ISP oggi forniscono accesso alla mailbox tramite il protocollo POP3. In questo documento tratteremo unicamente tale protocollo dato che gli altri sono usati meno spesso. Inoltre non ci addentreremo nei dettagli di tale protocollo in quanto non è compito di questo documento farlo.

Volendo descrivere in breve il protocollo POP3 potremmo dire che il server è in costante ascolto sulla porta TCP/IP 110. Nel momento in cui c'è una connessione da parte di un client su tale porta, il server richiede un'autenticazione (generalmente del tipo nome utente + password in chiaro), quindi da accesso alla mailbox tramite una serie di comandi che servono principalmente a

In genere queste operazioni vengono svolte tutte in modo automatico da un apposito software. Vediamo quali tra questi sono i più usati e come configurarli.

2.1 Popclient

L'ultima versione di popclient è prelevabile via ftp da sunsite.unc.edu. Nel momento in cui scrivo la versione corrente è la 3.0 ed il file relativo si chiama popclient-3.0.tar.gz.

Per un'uso base di popclient basta chiamarlo con le seguenti opzioni:

popclient -3 -u utente -p password -o /path/per/la/mia/mailbox nomehost

Dunque, vediamo un po' di analizzare questa linea di comando:

Facciamo un esempio:

Il mio nome-utente è pippo, la password baudo, la mia mailbox sulla macchina locale si trova sotto /var/spool/mail/pippo ed il nome dell'host cui devo collegarmi per prelevare la posta è katia.rai.it ... dunque:

popclient -3 -u pippo -p baudo -o /var/spool/mail/pippo katia.rai.it

popclient per default cancella la posta sull'host remoto dopo averla scaricata. Per disabilitare questa funzione aggiungi -k tra le opzioni.

Come mi ha fatto giustamente notare Alberto Menegazzi (flash.egon@iol.it), fetchmail sostituisce popclient, dal quale deriva. E' anche bene fare presente che fetchmail, a differenza di popclient, ha bisogno di un MDA locale per cui, se abbiamo modificato la configurazione di sendmail per l'uso della coda (come spiegato successivamente), ci troveremmo in difficoltà e l'unica soluzione consiste nell'interfacciare fetchmail a procmail inceve che a sendmail. Scusa il giro di parole :)

Per interfacciare direttamente popclient a procmail dobbiamo usare l'opzione -c invece di -o per cui un esempio di sintassi corretta potrebbe essere:

popclient -3 -u pippo -p baudo -c katia.rai.it | procmail

Per ulteriori spiegazioni:

2.2 Fetchpop

L'ultima versione di fetchpop è prelevabile via ftp da sunsite.unc.edu. Nel momento in cui scrivo la versione corrente è la 1.9 (ci sono già in giro delle patch per risolvere alcuni bug di questa versione) ed il file relativo si chiama fetchpop1.9.tar.gz.

Uno dei vantaggi di fetchpop consiste nella possibilità di essere interfacciato direttamente a procmail (maggiori dettagli su procmail successivamente) usando l'opzione -p sulla linea di comando.

Per poter usare fetchpop dovremo farlo partire una prima volta senza parametri sulla linea di comando. Ci verranno chiesti nell'ordine: indirizzo del server POP3, login e password sul server POP3, tempo di inattività espresso in secondi che passa prima di controllare nuovamente l'arrivo di nuova posta quando fetchpop viene lanciato come daemon (opzione -d). All'ultima domanda rispondere con 300 che è il valore minimo specificabile, tanto dal momento che usiamo la posta off-line non useremo mai l'opzione -d. Non fate caso all'errore che si verifica dopo aver inserito quest'ultimo parametro: è normale in quanto fetchpop cerca di collegarsi al server POP3 e non ci riesce (a meno che non siamo collegati in quel momento).

A questo punto fetchpop si è creato un file nella nostra home directory chiamato .fetchhost dove risiedono le informazioni che gli abbiamo dato in questa prima fase. D'ora in poi sarà sufficiente essere collegati alla rete e chiamare fetchpop con le opzioni -r e -a per poter ricevere la nostra posta, inclusi i messaggi eventualmente già letti (opzione -a) e, allo stesso tempo, rimuovere i messaggi sul server dopo averli prelevati (opzione -r).

Quindi la sintassi corretta sarà:

fetchpop -a -r

e, nel caso vogliamo usare procmail:

fetchpop -a -r -p

Per ulteriori spiegazioni:

2.3 Fetchmail

Probabilmente in questo momento fetchmail è il migliore client in circolazione. Ritengo giusto tradurre e riportare le parti salienti del file README:

----------------------------------------------------------------------------
fetchmail è un programma di utilità per il forwarding/prelievo
della posta con POP2, POP3, APOP e IMAP, completo, robusto e ben
documentato, inteso per essere usato su collegamenti TCP/IP su-richiesta
(come connessioni SLIP o PPP). Esso preleva la posta da server remoti e la
invia al sistema di smistamento locale della tua macchina, in modo da
permettere a MUA come elm o Mail di leggerla.

Questa sono le caratteristiche principali di fetchmail. Quelle uniche di
fetchmail sono marcate con **.

*  Supporto per i protocolli **POP2, POP3, **APOP, **IMAP.

** Supporto Kerberos per l'autenticazione dell'utente.

** La macchina viene auto-scandagliata in modo da trovare un server
funzionante se non è stato specificato alcun server per la
connessione. Così non hai bisogno di sapere in anticipo quali tipi di
server stanno girando sulla macchina; l'opzione verbose ti può
mostrare quale sta funzionando.

** Smistamento tramite SMTP alla porta 25 della macchina client. Questo
significa che la posta viene automaticamente inviata all'MDA locale come se
fosse normalmente arrivata dall'esterno via SMTP.

** Timeout se la connessione con il server viene a mancare.

** Supporto per prelevare e forwardare da caselle postali multiple che
garantisce di non causare loop con la posta.

*  Semplice controllo tramite linea di comando o file di controllo di
esecuzione libero-dal-formato.

*  Modo Daemon -- fetchmail può essere lanciato in background per
richiedere la posta da uno o più server ad un intervallo specificato.

*  Gli header From:, To:, Cc:, e Reply-To: sono riscritti in modo che nomi
utenti relativi alla macchina di fetchmail diventino indirizzi Internet
completamente qualificati (l'originale Inglese rende meglio: fully-qualified
Internet addresses, ndt). Questo fa in modo che le risposte funzionino
correttamente. (Sarebbe stata una funzione unica di fetchmail se non
l'avessi aggiunta a fetchpop).

*  Stretto rispetto degli RFC rilevanti e buone opzioni di debugging.
Potresti usare fetchmail per fare un debug sulle implementazioni di un
server.

*  Pagina di manuale scritta con cura, comprensiva ed aggiornata, la quale
descrive non solo i modi di operazione ma anche (**) come diagnosticare i
problemi più comuni e cosa fare riguardo server deficienti.

*  Codice sorgente a prova di bomba, semplice e ben sperimentato -- l'autore
ne fa uso tutti i giorni e non ha mai perso un messaggio, anche nelle
versioni sperimentali.

*  Larga comunità di utenti -- fetchmail ha ereditato una
significativa base di utenti dalla comunità di popclient, scritto da
Carl Harris. Questo significa che il feedback è rapido e i bachi sono
scovati e corretti rapidamente.

Puoi facilmente prelevare l'ultima versione di fetchmail via FTP da:

        ftp://ftp.ccil.org/pub/esr/fetchmail-1.9.tar.gz

Oppure puoi prelevarla dalla home page dell'autore:

        http://www.ccil.org/~esr
----------------------------------------------------------------------------

Bene, spero di averti convinto che fetchmail vale la pena di essere usato nei casi in cui un semplice client POP non è sufficiente.

In ogni caso tieni presente il problema già accennato alla fine della sezione relativa a popclient: fetchmail ha bisogno di un MDA locale per consegnare la posta quindi, se hai configurato sendmail per l'uso della coda (opzione defer), dovrai usare procmail come MDA. Inoltre alcuni server POP recenti non implementano più il comando LAST (gli utenti di Italia On Line lo sanno bene) per cui per loro si impone l'uso di fetchmail.

Se hai scaricato il pacchetto con i sorgenti dall'URL indicato qui sopra, allora probabilmente vorrai installarlo. Niente di più semplice! L'autore di fetchmail è un hacker riconosciuto

attenzione a non confondere la parola hacker con cracker!
e, come tale, sa come rendere più facile la vita di quelli che non lo sono :)

Facciamo un cd /usr/src e un tar vxzf /percorso/per/fetchmail-1.9.tar.gz in modo da ritrovarci il pacchetto originale scompattato sotto /usr/src/fetchmail-1.9

Ora entriamo nella directory di fetchmail e digitiamo configure

Lo script farà un po' di ricerche sulle caratteristiche del nostro sistema e, alla fine, ci riporterà al prompt. Dopo esserci assicurati che il nostro sistema abbia flex versione 2.5.3 o maggiore (è necessario per la compilazione) scrivamo semplicemente make

La compilazione dura molto poco (sul mio P60 con 16MB di RAM meno di un minuto). A questo punto basta diventare root e digitare make install per installare il programma in /usr/local/bin e la pagina di manuale in /usr/local/man/man1. Per cambiare queste directory bisogna modificare il Makefile dopo aver lanciato configure e prima di aver fatto partire la compilazione con make.

Per finire dobbiamo andarci a creare il file ~/.fetchmailrc dandogli i giusti permessi con:

chmod go-rwx,u=rw ~/.fetchmailrc

Un esempio di ~/.fetchmailrc è:

poll host_remoto with protocol POP3:
    user tizio there with password secret1 is caio here;

In questo modo stiamo dicendo a fetchmail di usare tutti i default (leggi la pagina di manuale al riguardo) e collegarsi al server host_remoto per prelevare tramite il protocollo POP3 la posta di tizio, il quale ha come password secret1 e sulla macchina locale ha come login caio.

Per ulteriori spiegazioni:

2.4 Smistare la posta in arrivo, ovvero procmail

Nell'ambito della gestione della posta off-line, procmail può rivelarsi di estremo aiuto nel caso in cui il volume di email quotidiano superi il normale (non è raro che si verifichi un caso simile: basta iscriversi ad un paio di mailing list dal traffico intenso).

Procmail può smistare automaticamente la posta nei folder appropriati filtrando in base a qualsiasi parte di un messaggio (intestazione, uno dei campi dell'intestazione, corpo del messaggio, ecc) oppure può inviarla in pasto (ovvero tramite un pipe) ad un altro programma che potrebbe occuparsi ad esempio di archiviare i messaggi secondo un certo criterio e magari inserendo dei campi opportuni per determinati scopi... insomma le possibilità sono davvero infinite, l'unico limite è la fantasia.

Per dire a procmail come smistare la posta andiamo a crearci il file ~/.procmailrc

Il file ~/.procmailrc è composto da una serie di regole. Per semplificare le cose, diciamo che ogni regola inizia con una riga contenente :0 seguita da una o più righe che descrivono una condizione (tali righe iniziano con un asterisco seguito da una espressione regolare estesa compatibile con egrep), quindi da un'altra riga che descrive l'azione da compiere se le condizioni sono verificate. Vediamo un esempio pratico:

:0
* ^From.*tizio
* ^Subject:.*patagarro
patagarro

Se il messaggio viene da tizio ed ha come soggetto patagarro, allora mettilo nella mailbox patagarro. Altro esempio:

:0:
* Pluto-meeting
`date +%m-%y`/Pluto-meeting

Se gli header del messaggio contengono la parola magica Pluto-meeting allora mettili in una folder che ha come nome la data corrente nel formato mese-anno più /Pluto-meeting

:0
* From.*print-server
| lpr

In questo caso i messaggi provenienti da print-server vengono inviati direttamente in pasto alla stampante.

Per ulteriori spiegazioni:

2.5 Un cenno su IMAP

Come avevo già accennato nell'introduzione, è mia intenzione parlare per il momento solo di POP3. Ma voglio fare una piccola eccezione e farvi leggere questo articolo molto interessante scritto da Luca Polo e da me pescato su it.comp.linux:

----------------------------------------------------------------------------
> Mi avete incuriosito :-) Cos'è l'IMAP 4?

Diamine, ma è soltanto il buon vecchio Internet Message Access
Protocol versione 4!! :-)

Praticamente un super-superset di POP, ma più orientato verso un
effettivo client-server (con POP si ha un download, punto), supporto
multi-client (io leggo la posta da più macchine in posti diversi),
multi-server, ecc.

Un altro punto di forza sta nel fatto che è il server IMAP a gestire
MIME & Co. (client molto più semplici, e inoltre c'è solo
una macchina da tenere aggiornata); inoltre, mediante il protocollo 
ACAP in fase di sviluppo alla Carnegie Mellon, anche i file di
configurazione (personalizzazioni, bookmark, alias) possono risiedere 
sul server, così anche loro risultano indipendenti dalla singola
macchina.

La pacchia degli amministratori di sistema, insomma... :-P

Poi... beh, guardatevi http://www.imap.org/

Lì c'è tutto, compresi tutti i client conosciuti o in fase di
sviluppo; poi ditemi se non vale la pena tenerlo d'occhio... BTW, i server
IMAP di mia conoscenza sono anche POP server (alcuni dicono che siano
perfino molto meglio del "classico" qpopper).

Saluti,
Luca Polo
-- 
 / Luca Polo   : jake@gest.unipd.it    || System administrator          \
| (http://www.gest.unipd.it/~jake for  || Ist. di Ingegneria Gestionale  |
 \ address and phone numbers)          || Universita` di Padova, Italy  /
----------------------------------------------------------------------------


Avanti Indietro Indice