[successivo] [precedente] [inizio] [fine] [indice generale] [licenze] [indice analitico] [tomo] [parte]
I messaggi di posta elettronica non vengono sempre recapitati presso l'elaboratore che si utilizza abitualmente. Questa è la situazione tipica in cui ci si trova quando si è collegati a Internet tramite un ISP, per mezzo di una linea commutata. Di solito si ottiene un accesso (account) presso un elaboratore dell'ISP e questo diventa solitamente anche il recapito per la posta elettronica.
Il problema è comunque generale: si può avere la necessità di scaricare la posta ricevuta presso un recapito remoto.
La prima idea che può venire in mente può essere quella di usare il protocollo TELNET e leggere così la posta remota. Ma questa non è la soluzione corretta. Per trasferire la posta da un recapito a un altro, si usa il protocollo POP3 (a volte POP2) oppure IMAP. Come si può immaginare, si tratta di un servizio che deve essere gestito da un demone.
Il modo con cui vengono scaricati messaggi e inseriti nel sistema locale ha dei risvolti importanti. Infatti, questi messaggi possono essere scaricati in un file locale, che normalmente corrisponde alla casella postale dell'utente, il quale può leggerla attraverso mail o un altro programma che sfrutta lo stesso meccanismo. In alternativa, i messaggi potrebbero essere inseriti nel sistema locale attraverso un servizio SMTP, che in tal caso però, dovrebbe essere attivato necessariamente.
Quando la posta elettronica è giunta presso un recapito remoto, senza essere stata ridiretta da lì attraverso un alias o un forward per la sua prosecuzione, può essere prelevata per mezzo di vari protocolli, tra cui i più importanti sono POP2, POP3 e IMAP.
Il prelievo fatto in questo modo, può tradursi poi:
nello scarico dei messaggi in un file locale che rappresenta la casella postale dell'utente per cui si svolge l'operazione;
nell'invio dei messaggi attraverso l'MDA locale;
nell'invio dei messaggi attraverso un servente SMTP locale, o comunque uno più «vicino».
Ognuna delle scelte possibili ha dei vantaggi e degli svantaggi. Il primo tipo di operazione, non richiede la presenza di un servente SMTP locale, e nemmeno di un MDA, cioè di un Mail Delivery Agent, per la consegna locale del messaggio. Così si presta perfettamente all'uso presso nodi isolati che possono connettersi a Internet attraverso una linea commutata, e solo allora trasmettono e ricevono la posta elettronica.
Il secondo tipo di operazione richiede la presenza di un MDA, composto generalmente da un programma in grado di ricevere i messaggi attraverso lo standard input, che poi sia in grado di recapitarli localmente, ed eventualmente di farli proseguire altrove attraverso gli alias e i forward eventuali. In pratica però, l'MDA a cui si fa riferimento è quasi sempre Sendmail, o un altro sistema compatibile. Il vantaggio di questa scelta è che per attuarla non occorre attivare il servizio SMTP, cioè non è necessario che Sendmail sia stato avviato come demone in ascolto della porta SMTP.
L'ultimo caso richiede invece che localmente sia presente un MTA completo, in grado di ricevere le connessioni SMTP. I motivi per cui non si riceve la posta direttamente nel nodo locale, possono essere vari: la connessione con l'esterno potrebbe essere discontinua, come nel caso di un collegamento PPP attraverso linea commutata; il sistema remoto presso cui giunge la posta per qualche motivo, potrebbe avere delle politiche che impediscono la prosecuzione dei messaggi (il forward); il sistema locale potrebbe essere irraggiungibile dall'esterno a causa delle politiche di sicurezza adottate, e per lo stesso motivo, la posta elettronica potrebbe non essere trasferita localmente, lasciando l'onere a ogni nodo di prelevarsela da un servente principale.
Quando si utilizza l'ultimo tipo di trasferimento, e anche quando si utilizza il secondo, il programma che lo fa interviene come se fosse un MTA vero e proprio. In tal senso, potrebbe essere attivato periodicamente attraverso il sistema Cron, a intervalli brevi, oppure come un demone.
Il prelievo della posta remota è un'operazione personale dell'utente che ha l'accesso presso il sistema remoto. Il programma che si usa per accedere a uno di questi servizi che lo permettono, deve identificarsi in qualche modo, e di solito si tratta di fornire l'identità dell'utente remoto e la parola d'ordine.
Il fatto di lasciare viaggiare la parola d'ordine in chiaro, attraverso la rete, è un problema da non trascurare: finché la connessione è diretta (o quasi, come nel caso di una linea commutata), il problema è minimo; quando la connessione attraversa più nodi, il problema diventa delicato.
Oltre a questo, occorre considerare che le informazioni delicate come le parole d'ordine non possono apparire in una riga di comando, perché sarebbero leggibili semplicemente analizzando l'elenco dei processi attivi. Per questo, quando si vuole automatizzare il processo di recupero della posta remota senza dover ogni volta inserire la parola d'ordine, questa può essere annotata soltanto in un file di configurazione, protetto opportunamente contro ogni accesso da parte di altri utenti.
ipop3d, ipop2d e imapd, sono i demoni per i servizi di trasferimento della posta locale verso i clienti che lo richiedono, mostrando le credenziali necessarie. Permettono rispettivamente di utilizzare i protocolli POP3, POP2 e IMAP. Sono gestiti dal supervisore Inet e filtrati dal TCP wrapper.
Nell'esempio seguente, vengono mostrate le righe di /etc/inetd.conf
in cui si dichiara il loro possibile utilizzo.
pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d imap stream tcp nowait root /usr/sbin/tcpd imapd
Questi tre demoni potrebbero fare parte di un pacchetto unico di GNU/Linux: Imap.
Popclient è un programma molto semplice che permette di scaricare la posta da un recapito remoto utilizzando il protocollo POP2 o POP3, inserendola in un file che corrisponda alla casella postale dell'utente nel nodo locale, oppure passandola a un MDA (Mail Delivery Agent). In questo modo, una volta scaricata, la posta può essere letta con un programma tradizionale come Mailx.
È importante sottolineare che per questo scopo, non è necessario che sia attivo un servente SMTP locale, ed è questo punto che può rendere vantaggioso l'utilizzo di Popclient al posto di Fetchmail.
popclient [ opzioni ] [ host_remoto ]
popclient è l'eseguibile che compie tutto il lavoro di Popclient. Può essere predisposto anche un file di configurazione, che permette l'automazione delle operazioni.
Nelle opzioni della riga di comando, si può osservare che non è stata indicata la possibilità di inserire la parola d'ordine. Infatti, non è possibile; per non dover inserire la parola d'ordine ogni volta che si scarica la posta, è necessario predisporre un file di configurazione.
-2
Viene utilizzato il protocollo POP2.
-3
Viene utilizzato il protocollo POP3.
-k | --keep
Copia i messaggi dal servente remoto senza cancellarli da lì.
-s | --silent
Non mostra i messaggi di progressione dell'operazione.
-v | --verbose
Visualizza attraverso lo standard error tutti i messaggi che intercorrono tra il programma e il servente remoto.
-u utente | --u utente
Permette di specificare il nome dell'utente così come è registrato nel sistema remoto. Il valore predefinito è il nome dell'utente così come è conosciuto nel sistema locale.
-r cartella_remota | --remote cartella_remota
Permette di specificare una cartella della posta nel servente remoto, diversa da quella predefinita. Dipende dal servente remoto se questa cartella alternativa esiste. Questa opzione può essere utilizzata solo con il protocollo POP2.
-o cartella_locale | --local cartella_locale
Permette di specificare una cartella della posta locale alternativa. Quando non viene specificata una cartella per la posta ricevuta, si intende quella predefinita dal sistema locale.
-c | --stdout
Permette di emettere attraverso lo standard output la posta, invece di utilizzare la cartella della posta.
0 Uno o più messaggi sono stati caricati.
1 Non c'è posta.
2 Errore nell'apertura di un socket.
3 L'autentificazione dell'utente è fallita: il nome dell'utente o la parola d'ordine sono errati.
4 Errore generico nel protocollo di comunicazione.
5 Errore di sintassi nell'uso degli argomenti di popclient.
6 Errore generico nella registrazione della posta nella cartella locale.
7 Errore generico riportato dal servente remoto. Riguarda il protocollo POP3.
10 Errore indefinito.
Popclient può essere configurato in modo personale attraverso il file ~/.poprc
. In tal modo, l'utente può predisporre tutti i dati necessari ad automatizzare la connessione senza la necessità di utilizzare script o comandi pieni di opzioni. In particolare, attraverso il file personalizzato di configurazione, si può predisporre anche la parola d'ordine necessaria a prelevare la posta.
Si può leggere eventualmente la pagina di manuale popclient(1).
L'esempio seguente mostra uno script che utilizza la riga di comando di popclient per tutto ciò che è possibile fare in questo modo. La parola d'ordine per accedere al servente remoto deve essere fornita subito dopo l'avvio dello script .
#!/bin/bash #====================================================================== # posta-remota # # Carica la posta da un elaboratore remoto utilizzando il protocollo # pop-3 e la deposita in un file «inbox». # Non utilizza alcun argomento dalla riga di comando, ma richiede # l'inserimento della password durante l'esecuzione. #====================================================================== #====================================================================== # Variabili. #====================================================================== #------------------------------------------------------------------ # Il nome dell'elaboratore dal quale si scarica la posta. #------------------------------------------------------------------ COMPUTER_POP="weizen.mehl.dg" #------------------------------------------------------------------ # Il nome dell'utente così come è registrato nell'elaboratore POP. #------------------------------------------------------------------ UTENTE="tizio" #------------------------------------------------------------------ # Il file in cui si vuole che sia depositata la posta scaricata # dall'elaboratore POP. #------------------------------------------------------------------ INBOX="~/mail/inbox" #====================================================================== # Inizio. #====================================================================== #------------------------------------------------------------------ # Tenta di caricare la posta dall'elaboratore remoto. #------------------------------------------------------------------ if popclient -3 -o $INBOX -u $UTENTE $COMPUTER_POP then #-------------------------------------------------------------- # L'operazione è riuscita, avvisa del successo. #-------------------------------------------------------------- echo "È stata scaricata posta da $COMPUTER_POP all'interno \ di $INBOX" else #-------------------------------------------------------------- # L'operazione non è riuscita. #-------------------------------------------------------------- echo "Non ci sono messaggi nuovi nel servente $COMPUTER_POP." fi #====================================================================== # Fine. #======================================================================
Prima di poter eseguire uno script è importante ricordare di attribuirgli i permessi di esecuzione necessari.
chmod +x nome_del_file
---------
In alternativa, per ottenere lo stesso risultato dello script, si può realizzare un file di configurazione come quello seguente, dove, in particolare, è possibile inserire anche la parola d'ordine.
# .poprc server weizen.mehl.dg \ proto pop3 \ user tizio \ pass tazza \ localfolder /home/tizio/mail/inbox
Fetchmail è un sistema di recupero della posta remota molto complesso. Permette di inserire i messaggi ottenuti nel sistema di consegna locale attraverso un MDA come Sendmail; oppure può utilizzare direttamente il protocollo SMTP per ottenere lo stesso risultato, o per inserire i messaggi in un sistema di trasporto più vicino (quale quello di una rete locale).
Può funzionare anche come demone personale (di un utente) in modo da provvedere regolarmente allo scarico dei messaggi.
Fetchmail ha il vantaggio di poter utilizzare una grande varietà di protocolli fatti per questo scopo. In linea di massima ci si può concentrare sui soliti POP2, POP3 e IMAP, ma è bene tenere presente che le possibilità sono maggiori, nel caso si presentasse l'occasione.
L'eseguibile fetchmail può essere gestito molto bene attraverso la riga di comando, ma è consigliabile anche la sua configurazione attraverso il file ~/.fetchmailrc
, che permette di agevolare le operazioni di routine.
In queste sezioni vengono mostrati solo alcuni aspetti di Fetchmail, il cui utilizzo può essere approfondito attraverso la consultazione della sua documentazione originale: fetchmail(1).
fetchmail [ opzioni ] host_remoto
Permette di caricare la posta posta elettronica da un recapito remoto avendo a disposizione la scelta di un gran numero di protocolli per questo scopo. La posta caricata viene immessa automaticamente nel sistema locale di posta dell'utente che ha utilizzato il programma.
L'eseguibile fetchmail dovrebbe poter funzionare anche soltanto per mezzo delle indicazioni passate attraverso la riga di comando. In pratica potrebbe non essere così, e si può essere costretti a definire in ogni caso il file di configurazione |
Se si pone un conflitto tra quanto specificato tramite le opzioni della riga di comando e le direttive del file di configurazione, le prime prendono il sopravvento.
-a | --all
Scarica tutti i messaggi, compresi quelli che risulta siano già stati visti.
-k | --keep
Non cancella i messaggi che vengono scaricati.
-u utente_remoto | --username utente_remoto
Specifica precisamente il nome da utilizzare per accedere al servente remoto. Se non viene indicata questa informazione (attraverso la riga di comando, oppure attraverso la configurazione), si intende lo stesso nome utilizzato nel sistema locale.
-t n_secondi | --timeout n_secondi
Permette di stabilire un tempo massimo per la connessione, oltre il quale Fetchmail deve abbandonare il tentativo.
-d n_secondi | --daemon n_secondi
Avvia Fetchmail in modalità demone, cioè sullo sfondo, allo scopo di eseguire la scansione dei serventi in modo regolare. L'argomento esprime la durata dell'intervallo tra una scansione e l'altra, espresso in secondi.
Ogni utente può avviare una sola copia dell'eseguibile fetchmail in modalità demone; tuttavia, se si tenta di avviare una nuova copia di fetchmail, quando è già attivo il demone, ciò fa sì che venga eseguita immediatamente una nuova scansione.
Il file di configurazione di Fetchmail è molto importante. È interessante notare che non esiste un file di configurazione generale, ma solo quelli dei singoli utenti, e questo è ragionevole, dal momento che il recupero della posta elettronica è un'operazione personale.
Prima di analizzare la sintassi che può essere utilizzata al suo interno, si può notare che i commenti vengono espressi nel modo consueto, attraverso il simbolo # che li introduce, dove poi tutto quello che segue, fino alla fine della riga, viene ignorato. Così anche le righe bianche e quelle vuote vengono ignorate.
Ogni direttiva del file ~/.fetchmailrc
contiene tutte le specifiche riferite al recupero della posta elettronica da un servente determinato. Queste direttive possono impiegare più righe, senza la necessità di indicare simboli di continuazione, e si distinguono perché iniziano con la parola chiave poll, oppure skip.
Una direttiva poll rappresenta un servente da interpellare, mentre una direttiva skip, uno da saltare. Di fatto non serve una direttiva skip, ma può essere utile per evitare di cancellarla, riservando per il futuro la possibilità di riutilizzarla rimettendo la parola chiave poll.
Le direttive sono composte da una serie di parole chiave che rappresentano delle opzioni, a volte accompagnate da un argomento. Alcune parole chiave sono speciali, e pur non avendo alcun significato, sono utili per facilitare la lettura delle direttive. Tali parole sono: and, with, has, wants e options. Nello stesso modo, possono essere usati la virgola, il punto e virgola e i due punti, che vengono ignorati ugualmente.
All'interno di ogni direttiva, deve essere rispettato un certo ordine nell'indicazione delle opzioni. Se ne distinguono due tipi: opzioni del servente e opzioni dell'utente. Le opzioni del servente devono apparire prima di quelle dell'utente.
Per comprendere il senso di queste direttive, è bene fare mente locale al formato generale semplificato, che queste possono avere.
poll servente [protocol protocollo ] [username utente_remoto ] [password parola_d'ordine ]
Gli argomenti delle opzioni che rappresentano delle stringhe, possono essere racchiusi tra apici doppi, in modo da poter contenere simboli particolari, come gli spazi (specialmente quando si tratta di indicare le parole d'ordine).
poll servente | skip servente
Specifica l'accesso a un servente. Se si usa la parola chiave skip, tutta la direttiva viene ignorata.
proto protocollo | protocol protocollo
Il tipo di protocollo da utilizzare, viene determinato normalmente in modo automatico. Con questa opzione può essere specificato espressamente, e si possono indicare i nomi seguenti.
POP2
POP3
IMAP
IMAP-K4
IMAP-GSS
APOP
KPOP
Si noti che queste parole chiave possono essere espresse anche utilizzando solo lettere minuscole.
port n_porta
Permette di specificare il numero della porta da utilizzare, nel caso il servente ne utilizzi una non standard.
timeout n_secondi
Specifica il tempo massimo di inattività, dopo il quale si conclude la connessione, o il suo tentativo.
interface interfaccia / numero_ip / maschera
Permette di specificare un'interfaccia di rete, assieme al gruppo di indirizzi che deve avere, prima di tentare la connessione con il servente remoto.
user utente_remoto | username utente_remoto
Specifica il nome da utilizzare per accedere al sistema remoto.
is utente_remoto here
Rappresenta il nome dell'utente locale che deve ricevere il messaggio. Di solito non si specifica, essendo quello che effettua l'operazione di recupero.
pass parola_d'ordine | password parola_d'ordine
La parola d'ordine per accedere al sistema remoto.
fetchall
Richiede espressamente il recupero di tutti i messaggi, compresi quelli già prelevati, ma mantenuti nel servente per qualche motivo.
limit n_byte
Fissa la dimensione massima dei messaggi che possono essere prelevati. Quelli che eccedono tale limite vengono lasciati nel servente e risultano «non letti».
syslog
Negli esempi viene mostrato l'uso di parole chiave che non sono state descritte. In ogni caso, il loro significato dovrebbe risultare intuitivo.
poll roggen.brot.dg protocol pop3 username tizio password "frase segreta"
Rappresenta la scansione del servente roggen.brot.dg con il protocollo POP3, utilizzando il nominativo-utente tizio che richiede la parola d'ordine frase segreta (che appare opportunamente tra virgolette).
poll roggen.brot.dg protocol pop3 username tizio password "frase segreta" poll schwarz.brot.dg username tizio1 password "ciao ciao"
Qui si prevede la scansione di due serventi, dove nel secondo caso non viene specificato il protocollo e anche il nominativo utilizzato risulta differente dal primo.
poll roggen.brot.dg protocol pop3 username tizio password "frase segreta" poll schwarz.brot.dg username tizio1 password "ciao ciao"
Come nell'esempio precedente, ma più strutturato e più facile da leggere.
poll roggen.brot.dg protocol pop3 username tizio password "frase segreta" is tizio here username caio password "ciao caio" is caio2 here username pippo password "marameo maramao" is pippo here
In questo caso, per uno stesso servente sono stati indicati diversi utenti remoti e locali. Per intendere il senso, si osservi che l'utente remoto caio corrisponde all'utente locale caio2.
Evidentemente, per ottenere un tale risultato, è necessario che l'utente che avvia Fetchmail conosca tutte le parole d'ordine di questi utenti. Probabilmente ciò è possibile quando si tratta di root. |
Trattando l'argomento del trasferimento della posta remota, non bisogna dimenticare i programmi MUA (Mail User Agent) che si arrangiano a scaricarsela. L'esempio più comune è Netscape.
Utilizzando un MUA di questo tipo, se si dispone di un elaboratore connesso saltuariamente a Internet, non serve alcun sistema di gestione della posta elettronica locale, e nemmeno alcun programma per scaricarla dal recapito presso il fornitore di accesso.
D'altro canto, se si vuole gestire la posta elettronica localmente, ma si intende usare un programma come Netscape per leggerla e inviarla, si è costretti ad attivare il servente SMTP e anche il servizio POP3 per poterla prelevare dallo stesso elaboratore locale.
Appunti di informatica libera 2001.01.30 --- Copyright © 2000-2001 Daniele Giacomini -- daniele @ swlibero.orgDovrebbe essere possibile fare riferimento a questa pagina anche con il nome messaggi_giunti_presso_recapiti_remoti.html
[successivo] [precedente] [inizio] [fine] [indice generale] [licenze] [indice analitico] [tomo] [parte]