Gestione servizi di Posta
Next: Altri Servizi di Rete
Up: Introduzione
Previous: Configurazione di un Name
Server
La posta elettronica è la più usata tra le applicazioni
Internet. Il protocollo TCP di gestione della posta si chiama Simple
Mail Transfer Protocol o SMTP.
Un utente Internet non utilizza direttamente l' SMTP ma un applicativo
utente (ad esempio su Unix mh, Berkeley mail, elm, mush). l' applicativo
utente invia la posta ad un sever sullo stesso host, chiamato Message
Transfer Agent (MTA).
l' MTA apre la connessione TCP con l' MTA ricevente e usa il protocollo
SMTP per trasferire la posta al ricevente. Il più comune MTA nei sistemi
Unix è sendmail. Da qualche hanno si sta diffondendo anche qmail
(gestione domini virtuali). Linux usa anche smail, che è un sendmail
semplificato.
I comandi del protocollo SMTP sono circa una dozzina:
- HELO - E' il comando con cui l' MTA del mittente
si identifica.
- MAIL From: - E' il comando con cui viene identificato
l' utente che ha spedito il messaggio
- RCPT To: - E' il comnado per identificare il ricevente
del messaggio.
- DATA - E' il comando per iniziare l' invio dei dati.
- . - Serve al MTA mittente per indicare che lo stream dei dati è
terminato.
- QUIT - E' il comando per chiudere la connessione tra i due MTA.
- RSET - E' il comando di reset che serve ad abortire la connessione
corrente, causando un reset su entrambi i lati.
- VRFY - E' il comando che permette al mittente di verificare la
correttezza di un indirizzo di posta, senza mandare la posta.
- NOOP - Costringe semplicemente l' MTA ricevente a replicare OK.
- EXPN - E' il comando utilizzato per espandere una mailing list.
- TURN - Consente ai due MTA di scambiarsi i ruoli di ricevente/trasmittente
senza dover aprire una nuova connessione TCP. Sendmail non supporta
però questo comando.
Le possibili risposte da parte del ricevente, oltre al generico
OK (codice 200), sono il 220 (greetings), il 250 (Dati OK), il
354 (Enter mail) il 221 che termina la connessione
Esempio di scambio di posta tra due sendmail:
# /usr/lib/sendmail -v cxr@dsnet.it
cxr@dsnet.it... aliased to cxr@minghetti.dsnet.it
Subject: Test
Testing
.
(EOF)
cxr@minghetti.dsnet.it... Connecting to minghetti.dsnet.it (smtpl)...
220 minghetti.dsnet.it Sendmail 5.65 (1.1.8.2/14Sep94-8.2MAM) Mon, 18 Dec 1995 0
8:13:51 GMT
>>> HELO maggiore.dsnet.it
250 minghetti.dsnet.it Hello maggiore.dsnet.it, pleased to meet you
>>> MAIL From:
250 ... Sender ok
>>> RCPT To:
250 ... Recipient ok
>>> DATA
354 Enter mail, end with "." on a line by itself
>>> .
250 Ok
>>> QUIT
221 minghetti.dsnet.it closing connection
cxr@minghetti.dsnet.it... Sent
Un messaggio di posta elettronica è composto da tre parti:
- la busta (envelope) utilizzata per la consegna del messaggio.
Contiene i due campi From: e To:. RFC 821 contiene le specifiche su cosa
deve contenere l' envelope e su come interpretare questo contenuto.
Contiene anche le specifiche del protocollo di scambio posta su una
connessione TCP.
- le intestazioni (headers) sono utilizzati dagli applicativi
utente: Received, Message-Id, From, date, Reply-To, X-Phone, X-Mailer,
To, Subject. Il formato e l' interpretazione degli header è
definito dall' RFC 822 (eccetto per gli X-).
- il corpo (body) è il contenuto vero e proprio del
messaggio. RFC 822 specifica che tale contenuto deve essere in formato
NVT ASCII text. Usando il comando DATA si trasferiscono prima gli headers,
seguiti da una riga bianca, e poi il contenuto vero e proprio.
L' applicativo utente prende il contenuto del messaggio, aggiunge i
suoi header e manda il messaggio all' MTA (sendmail). Questo aggiunge a
sua volta i suoi header, aggiunge l' envelope e manda il tutto
al ricevente del messaggio
Se il tentativo di invio posta fallisce , l' MTA deve mettere il
messaggio in coda e riprovare la trasmissione più tardi. RFC
Host Requirements consiglia un time-out di circa 30 minuti, riprovando
in caso di fallimento per 4/5 giorni. Il default di sendmail è
di 3 giorni
RFC 1425 definisce delle estensioni al protocollo SMTP : Extended
SMTP (ESMTP). Usa il comando EHLO dopo il greeting, in modo da mantenere
la compatibilità con le versioni standard di SMTP. Supporta dei
comandi in più: SIZE, 8BITMIME (per permettere trasferimenti non ASCII)
RFC 1521 definisce delle estensioni al SMTP che permettono di strutturare
il body del messaggio. Queste estensioni sono chiamate Multipurpose
Internet Mail Extensions (MIME). Non usa ESMTP, ma invece aggiunge degli
ulteriori headers per informare il ricevente della struttura del corpo
del messaggio.
Perchè funzioni, l' applicativo utente del ricevente deve
essere in grado di interpretare MIME.
La configurazione di un MTA di posta è piuttosto complicata. Oggi
- a causa del problema dello spamming - lo è ancora di più.
E' necessario infatti limitare le funzioni di relay-to dell'SMTP e in alcuni
casi configurare dei preprocessori che permettano di rifiutare a priori
mail provenienti o destinate a particolari indirizzi
In Unix con sendmail, il principale file di configurazione si chiama
sendmail.cf
SOFTWARE PROGETTO DSNET
Mercoledi' 13 maggio 1998