|
|
|
MINIGUIDA: E-MAIL
Il funzionamento della posta elettronica Invio di un messaggio di posta elettronica (utilizzo del server SMTP)
Nel momento in cui ci accingiamo a inoltrare un messaggio di posta elettronica, il nostro computer, utilizzando il programma appropriato, si connette al server SMTP del provider stabilito. Ormai quasi tutti i providers titolari di un server SMTP fanno sì che esso sia utilizzabile soltanto dai loro stessi abbonati. In altre parole, per poter inviare un'e-mail, ogni utente è obbligato ad utilizzare il server SMTP appartenente allo stesso provider che gli offre l'accesso ad Internet in quel momento. La porta predefinita dei server SMTP è la n. 25. Una volta collegato al server SMTP sulla relativa porta, il client provvede ad inviargli, utilizzando il protocollo specifico, l'indirizzo del mittente, l'indirizzo del destinatario, l'oggetto del messaggio e il testo. Ma vediamo subito un esempio: Supponiamo di avere un account sul provider localhost, col nome utente io. Il nostro indirizzo e-mail sarà quindi io@localhost. Come si può notare, il simbolo @ è utilizzato per separare il nome utente dall'indirizzo del provider. Supponiamo adesso di voler inviare un'e-mail all'indirizzo tu@remotehost; Una volta dato il comando d'invio, il nostro client si connetterà al server SMTP del provider localhost sulla relativa porta (di solito la n. 25, come abbiamo detto). Quando il client si sarà connesso al server riceverà da esso una risposta di questo tipo: 220 [indirizzo del server] È da premettere che, praticamente in qualsiasi tipo di sessione client/server, sia i comandi inviati sia quelli ricevuti, per essere riconosciuti come validi, devono essere seguiti da una riga vuota, ovvero un "a capo". In gergo questa riga si chiama CrLf.
HELO [Host del computer client] Con questa riga il client si "presenta" al server e gli fornisce l'host del computer sul quale è installato.
250 Hello [Host del computer client], pleased to meet you Il client invierà allora la riga contenente l'indirizzo del mittente del messaggio: MAIL FROM: <io@localhost> Nella maggior parte dei casi, i providers che dispongono di un server SMTP non si curano dell'indirizzo del mittente, nel senso che esso può indifferentemente corrispondere a un loro account o meno;
RCPT TO: <tu@remotehost> Anche a questo punto il server risponderà con una riga di testo che inizierà con 250; il client invierà dunque il testo "Data", che potrebbe definirsi un'introduzione all'e-mail vera e propria: Data Alla ricezione di "Data", il server invierà una riga con la quale comunicherà al client che è pronto a ricevere l'e-mail; questa riga inizierà con 354. A questo punto il client provvederà ad inviare il contenuto dell'e-mail: From: <io@localhost>
Come si può notare, il client ripete, nella prima riga, l'indirizzo del mittente del messaggio e nella seconda riga quello del destinatario.
From: "Nome del mittente" <io@localhost>
Una volta inviata l'e-mail in questo modo, il server invierà una conferma, ovvero una riga di testo che inizierà con 250.
QUIT Il server invierà una riga di testo che inizierà con 221 e chiuderà la connessione con il client; l'invio del messaggio al server SMTP è completo. È ovvio che, spiegato in maniera così dettagliata, l'invio di un messaggio di posta elettronica possa risultare un po' complicato. Per questo motivo ho voluto riassumere di seguito la "conversazione" che abbiamo appena esaminato tra client e server SMTP. Le righe scritte in verde identificano i commenti, mentre le righe scritte in rosso e in blu identificano rispettivamente i dati ricevuti dal server SMTP e quelli inviati dal client. Il client si connette al server SMTP sulla relativa porta. 220 [indirizzo del server] HELO [Host del computer client] 250 Hello [Host del computer client], pleased to meet you MAIL FROM: <io@localhost> 250 etc. etc. RCPT TO: <tu@remotehost> 250 etc. etc. Data 354 etc. etc. From: <io@localhost>
250 etc. etc. QUIT 221 etc. etc. Il server chiude la connessione con il client. Una volta che il messaggio è stato inviato al server SMTP e la connessione col client è stata chiusa, il server dovrà provvedere ad inviare il messaggio al suo destinatario. Vediamo quali sono le operazioni che vengono compiute per far sì che ciò avvenga:
Ricezione di un messaggio di posta elettronica (utilizzo del server POP3)
Per leggere i messaggi di posta elettronica depositati sul server POP3 del nostro provider, il nostro client dovrà naturalmente connettersi a questo server sulla relativa porta.
La porta predefinita dei server POP3 è la n. 110. Il server POP3 richiede il nome utente e ovviamente la relativa password per poter accedere alla propria casella e leggere i messaggi ivi depositati. Una volta stabilita la connessione, il server provvederà ad inviare al client una sorta di messaggio di benvenuto. Ricordiamoci sempre la regola del CrLf, la riga vuota, citata nel paragrafo precedente. Alla ricezione di questo messaggio, il client invierà il nome utente corrispondente all'account desiderato, utilizzando il comando USER, in questo modo: USER [nomeutente] Se il nome utente sarà riconosciuto dal server, esso invierà un messaggio per notificare l'esito positivo del comando inviato. In caso contrario, ovviamente, il server invierà un messaggio di errore.
+OK A questo punto il client invierà la password relativa a quel nome utente, utilizzando il comando PASS: PASS [password] Anche stavolta il server invierà un messaggio di notifica.
STAT Al comando STAT il server risponde con un messaggio del seguente formato: +OK 1 100 Vediamo nei dettagli cosa significa questo messaggio: +OK esito positivo del comando inviato dal client; 1 numero dei messaggi depositati sul server POP3; 100 dimensione totale dei messaggi depositati sul server. Il valore è espresso in byte. In questo caso il server ha comunicato al client che su esso è depositato un solo messaggio per una dimensione totale di 100 byte; andiamo adesso a vedere cosa risponderebbe il server al comando STAT nel caso in cui su di esso fossero depositati più messaggi: +OK 3 1400 Nel dettaglio: +OK esito positivo del comando inviato dal client; 3 numero dei messaggi depositati sul server POP3; 1400 dimensione totale dei messaggi depositati sul server. In questo caso il server ha comunicato che su esso sono depositati 3 messaggi per una dimensione totale di 1400 byte.
LIST La lista verrà inviata al client con un messaggio del seguente formato: +OK 3
Con questa lista, il server fornisce al client la dimensione in byte di ciascun messaggio.
+OK esito positivo del comando inviato dal client; 3 numero totale dei messaggi depositati sul server POP3; 1 480 dimensione del messaggio n. 1 (480 byte); 2 230 dimensione del messaggio n. 2 (230 byte); 3 690 dimensione del messaggio n. 3 (690 byte); . Il punto indica la fine della lista messaggi. Una volta ricevuta la lista, il client richiederà al server i singoli messaggi, utilizzando il comando RETR seguito dal numero del messaggio richiesto. RETR 1 Il client richiede il messaggio n. 1. oppure RETR 2 Il client richiede il messaggio n. 2. A questo punto il server invierà al client il messaggio richiesto: +OK
Nel dettaglio: +OK esito positivo del comando inviato dal client; From: <io@localhost> indirizzo del mittente del messaggio; To: <tu@remotehost> indirizzo del destinatario; Subject: Oggetto del messaggio l'oggetto del messaggio, per l'appunto; Testo del messaggio . Il punto indica la fine del messaggio. Se il client di posta elettronica è configurato per la cancellazione automatica dei messaggi scaricati dal server, esso invierà a questo punto il comando DELE seguito dal numero del messaggio appena scaricato. Il comando DELE serve ovviamente per cancellare un dato messaggio dal server POP3.
DELE 1 Se l'eliminazione del messaggio avrà avuto esito positivo, il server risponderà, naturalmente, con un messaggio di notifica che inizia con +OK: +OK Una volta scaricati ed eventualmente cancellati tutti i messaggi dal server POP3, il client comunicherà al server la fine dell'operazione, utilizzando il comando QUIT: QUIT Il server notificherà l'esito positivo del comando (+OK etc. etc.) e chiuderà la connessione col client.
Il client si connette al server POP3 sulla relativa porta. +OK etc. etc. (messaggio di benvenuto del server) USER [nomeutente] +OK etc. etc. PASS [password] +OK etc. etc. STAT +OK 3 1400 LIST +OK 3
RETR 1 +OK
Se il client è configurato per la cancellazione automatica dei messaggi scaricati dal server, esso provvederà all'eliminazione del messaggio appena scaricato utilizzando il comando DELE. DELE 1 +OK etc. etc. L'operazione di scaricamento ed eventuale cancellazione dal server si ripete per tutti i messaggi depositati su esso. RETR 2 +OK
DELE 2 +OK etc. etc. RETR 3 +OK
DELE 3 +OK etc. etc. QUIT +OK etc. etc. Il server chiude la connessione col client. Il protocollo POP3 è stato reso pubblico nella RFC 1939, datata maggio 1996, scaricabile nella sezione Request for comments del presente sito. |