Gestione della posta ellettronica su un server Debian GNU/Linux
Servizio di posta elettronica (tipologie)
Lato server
Routing dei messaggi |
EXIM, POSTFIX, SENDMAIL, QMAIL |
|
Servizio POP3/IMAP |
QPOPPER, UWIMAPD, DOVECOT, COURIER |
|
Servizio filtro antivirus |
AMAVIS |
|
Definizione impronte virali |
CLAMAV, FRESHCLAM, F-PROT WS |
|
Controllo antispam |
SPAMASSASSIN |
|
Database dello spam |
SA-LEARN (LOCALE), RAZOR (CENTRALIZZATO SUL WEB) |
|
Greylisting | QPSMTPD, POSTGREY |
Lato client
Postazioni personali |
Eudora, Thunderbird, Mozilla, Kmail, Evolution |
No postazioni personali |
Squirrelmail, Horde/Imp, Ilohamail |
Protocollo POP3 Post
Office Protocol 3 (POP3) è attualmente
il protocollo più utilizzato per
il download della posta elettronica. Il
protocollo POP3 descritto nella RFC 1939,
fornisce le funzioni base per scaricare
e cancellare la posta da un mail server.
Per eseguire il processo di download viene
instaurata una connessione di tipo TCP
tra il client ed il server POP3 in ascolto
di default sulla porta 110. |
Protocollo IMAP
Internet Mail Access Control (IMAP) e' un protocollo per la gestione della posta elettronica che permette di compiere le elaborazioni direttamente sul server remoto.
Il protocollo IMAP giunto alla versione
4, descritto nella RFC 2060, è nato
come candidato per la sostituzione del protocollo
POP3 e presenta infatti una maggiore flessibilita',
ed un sistema di gestione piu' esteso e complesso.
IMAP si basa sul concetto di elaborare tutta la
posta su un server remoto e centralizzato,
in modo di avere a disposizione l'intero insieme
dei propri messaggi da qualsiasi macchina ci si
connetta, al contrario di quanto accade tramite
POP3, il quale scarica in locale i messaggi
degli utenti.
Le funzionalita' offerte da IMAP sono:
- Accesso e gestione dei messaggi di posta direttamente
sul server;
- Possibilità di creare, cancellare e rinominare
mailbox;
- Supporto della modalità di lavoro offline
per i client e successiva sincronizzazione quando
possibile;
- Ricerca e selezione dei messaggi in base ad
attributi quali testo o contenuto MIME;
Una sessione IMAP consiste in una serie di comandi
inviati dal client al server, il quale resta in
ascolto sulla porta TCP 143, e terminati
da CRLF (Invio). Ogni comando deve avere
un identificatore, ovvero un prefisso alfanumerico
(Es. A0001) chiamato tag che lo precede
il cui compito è quello di far corrispondere
le risposte dels server alle rispettive domande
del client.
Una sessione IMAP consiste nelle seguenti fasi:
1 - Enstaurazione della connessione da parte del
client con l'IMAP server (in ascolto sulla porta
143);
2 - Risposta del server con il messaggio di benvenuto;
3 - Autenticazione e successiva gestione delle
mail da parte del client;
4 - Termine della connessione al seguito della
richiesta da parte client o per via della scadenza
del tempo di timeout;
ATTRIBUTI DEI MESSAGGI IMAP
Avendo la possibilita' di gestire la posta in
modo centralizzato sul server, e potendo accedere
quindi da diversi client, IMAP implementa una
sistema di attributi in grado di indicare lo stato
corrente di un messaggio. Per ogni messaggio
vengono definiti uno o piu' flag, i quali
iniziano con il carattere "\",
che ne indicano lo stato:
- \Seen: indica che il messaggio e' stato
letto;
- \Answered: indica che e' stata inviato
un messagio di reply a al messaggio;
- \Flagged: indica che sul messaggio e'
stato impostato un flag urgent o Special Attention;
- \Deleted: indica che il messaggio e'
stato marcato per la cancellazione;
- \Draft: indica che il messaggio non e'
completo ed e' quindi marcato come bozza;
- \Recent: indica che il messaggio e' appena
giunto nella mailbox;
STATI DI UNA SESSIONE IMAP
Una sessione IMAP puo' attraversare quattro stati:
- Non-Authenticated State;
- Authenticated State;
- Selected State;
- Logout State;
In relazione allo stato della sessione, sono disponibili
determinati comandi per l'elaborazione dei messaggi.
Comandi in Non-Authenticated State
In Non-Authenticated State, si trovano gli utenti
che sono collegati al server ma che si devono
ancora autenticare per avere la possibiilta' di
gestire la propria posta. I comandi disponibili
in questo stato sono:
AUTHENTICATE
:
indica il metodo di autenticazione da utilizzare;
LOGIN
<utente>
<password>
:
invia al server il nome utente e la password per
autenticarsi;
Comandi in Authenticated State
Una volta forniti i corretti valori di login e
password si passa in Authenticated State. Le operazioni
possibili in questo stato sono: scegliere, esaminare,
creare, cancellare, rinominare una mailbox, controllarne
lo stato e gestire le sottoscrizioni ad altre
caselle. I comandi utilizzati sono:
Select
<mailbox>
:
seleziona la mailbox con cui lavorare;
Examine
<mailbox>
:
seleziona la mailbox ma con accesso in sola lettura;
Create
<mailbox>
:
crea una nuova mailbox;
Delete
<mailbox>
:
cancella una mailbox;
Rename
<vecchio-nome-mailbox>
<nuovo-nome-mailbox>
:
rinomina una mailbox;
Subscribe
<mailbox>
:
aggiungela mailbox alla lista delle caselle attive
da visualizzare in un client IMAP;
Unsubscribe
<mailbox>
:
elimina la mailbox alla lista delle caselle attive
da visualizzare in un client IMAP ;
List
<riferimento>
<mailbox>
:
restituisce un sottoinsieme dei nomi disponibili
al client;
LSUB
<riferimento>
<mailbox>
:
restituisce un sottoinsieme delle casella sottoscritte
dall'utente;
Status
<mailbox>
<stato>
:
indica lo stato della mailbox;
Append
<mailbox>
<messaggio>
:
aggiunge un messaggio alla mailbox selezionata;
Comandi Selected State
In selected state, ovvero quando si e' scelto
su quale casella elaborare sono disponibili i
comandi per la gestione dei messaggi:
Check
:
funzione di manutenzione del server IMAP;
Close
:
riporta in Authenticated State e rimuove
i messaggi con flag \Delete attivo;
Expunge
:
rimane nello stato Selected e rimuove i messaggi
con flag \Delete attivo;
Search
[setcaratteri]
<parametri>
:
cerca i messaggi che soddisfano i parametri di
ricerca indicati;
Fetch
<messaggi>
<dati>
:
visualizza determiniti dati di un messaggio (Es.
Subject, data, testo ecc);
Store
<messaggi>
<valore-dati>
:
cambia i dati che si voglio modificare nel messaggio.
Viene solitamente usato per cambiare i flag di
stato;
Copy
<messaggi>
<mailbox>
:
copia i dati nella casella specificata;
Uid
<comando>
<argomenti>
:
esegue i comandi impartiti in base al numero Uid
(Unique Identifier) anzichè il numero
messaggio;
Comandi Logout State
Una volta che il client effettua una richiesta
di chiusura della connessione, si passa in logout
state, successivamente appena pronto il server
terminare il collegamento.
Comandi disponibili in ogni stato
Alcuni comandi non sono associati ad un particolare
stato del server e quindi sono sempre disponibili:
CAPABILITY
:
indica le funzioni supportate dal server;
NOOP
:
non esegue nulla, risponde in modo positivo se
il server è attivo. Utilizzato per evitare
la disconnessione causa timeout;
LOGOUT
:
indica al server che il client vuole terminare
la connessione;
Un esempio di sessione IMAP tramite telnet:
[homer@Enigma homer]#
telnet imap.joker.net
143
* OK [CAPABILITY IMAP4REV1 LOGIN-REFERRALS STARTTLS
AUTH=LOGIN] joker.net IMAP4rev1 2001.315 at Sun,
13 Jul 2003 22:09:17 +0200 (CEST)
Il server risponde e visualizza la versione
del protocollo. Siamo in Non-Authenticated State.
a100 LOGIN homer onslls
a100 OK [CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX-REFERRALS
SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT
MULTIAPPEND] User homer authenticated
Viene eseguito il login e l'utente è
accettato. Siamo in Authenticated State.
a101 select inbox
Viene selezionata la mailbox inbox (la posta
in arrivo). Siamo in Selected State.
* 2 EXISTS
* NO Trying to get mailbox lock from process 925
* 0 RECENT
* OK [UIDVALIDITY 1058126897] UID validity status
* OK [UIDNEXT 3] Predicted next UID
* FLAGS (NonJunk \Answered \Flagged \Deleted \Draft
\Seen)
* OK [PERMANENTFLAGS (NonJunk \* \Answered \Flagged
\Deleted \Draft \Seen)] Permanent flags
* OK [UNSEEN 1] first unseen message in /var/spool/mail/homer
a101 OK [READ-WRITE] SELECT completed
La prima voce 2 EXISTS indica che sono presenti
due messaggi
a102 fetch 1:2 (flags body[header.fields (subject)])
Viene effettuata una richiesta di visualizzazione
dei subject delle due mail presenti...
* 1 FETCH (FLAGS (\Seen NonJunk) BODY[HEADER.FIELDS
("SUBJECT")] {37}
Subject: Protocollo IMAP Overview
)
* 2 FETCH (FLAGS (\Seen NonJunk) BODY[HEADER.FIELDS
("SUBJECT")] {20}
Subject: Prova 2
)
a102 OK FETCH completed
a103 FETCH 1 (body[text])
Richiesta del corpo del messaggio 1
* 1 FETCH (BODY[TEXT] {105}
Messaggio di prova,
relativo all'Infobox sul protocollo IMAP per Openskills
--
Arnaldo aka Homer
)
a104 STORE 1 +FLAGS (\Deleted)
Il messaggio 1 viene marcato con il flag
\Deleted ovvero da cancellare
* 1 FETCH (FLAGS (\Seen \Deleted NonJunk))
a104 OK STORE completed
a105 EXPUNGE
Vengono cancellati i messaggi con il flag
\Deleted attivo (in questo caso il messaggio 1)
* 1 EXPUNGE
* 1 EXISTS
* 0 RECENT
a105 OK Expunged 1 messages
a106 LOGOUT
Una volta lanciato il comando logout si
entra in Logout State
* BYE joker.net IMAP4rev1 server terminating connection
a106 OK LOGOUT completed
Il
server invia il messaggio BYE e termina la connessione
Come per gli altri protocolli a livello applicativo,
un client di posta che supporta IMAP si occuperà
per l'utente di scambiare i messaggi con il server.
Protocollo
SMTP
Parzialmente tratto da OpenSkills LiveBooks a cura di Arnaldo "Homer" Zitti.
Tale documentazione è rilasciata con licenza FDL: può essere liberamente utilizzabile e distribuibile in forma digitale (CDROM, email, pubblicazione su Web), ma non può essere modificata in alcuna parte e non può venire rimossa questa nota e i riferimenti agli autori.