|
Made in |
DESCRIPTION | Protocollo SMTP Overview | Live Discussion - Skill: 2- JUNIOR |
Simple Mail Transfer Protocol (SMTP) è il protocollo utilizzato per trasmettere messaggi di posta elettronica tra due host. | ||
SMTP utilizza il protocollo di trasporto TCP, ed in particolare un SMTP server rimane costantemente in ascolto sulla porta 25. Il server SMTP si occupa poi di trasferire i messaggi nelle caselle di posta (mailbox) dei destinatari, oppure qualora non fosse il diretto responsabile di queste, inoltrarli (operazione di relay) al server che provvederà a farlo. La sintassi dei comandi è case-insensitive, ed è composta da istruzioni seguite da uno o più parametri terminate da un CRLF (Invio). Il protocollo è descritto nella RFC 821, ma lavora in stretta collaborazione con altri standard come la RFC 822 che descrive la sintassi degli headers della mail, la RFC 1049 che definisce le strutture dati per interpretare correttamente il contenuto delle mail e la RFC 974 che si occupa del routing delle mail tramite DNS. Lo standard definito dalla RFC 821, aveva diversi limiti riguardanti per esempio la dimensioni dei messaggi oppure la trasmissione di mail non in inglese o diverse dal semplice plain text. Per ovviare a questa restrizione è stato necessario estendere il protocollo tramite la RFC 1425 riguardante le SMTP Service Extensions. I principali comandi SMTP: HELO : Identifica il client SMTP al server SMTP;EHLO : E' possibile usare anche questo comando per identificarsi, se il server supporta le SMTP Service Extensions riponderà in modo positivo altrimenti con un errore di tipo 500 (Syntax Error);MAIL FROM: <indirizzo mittente>: Indicata la mailbox del mittente del messaggio;RCPT TO: <indirizzo destinatario> : Indica la mailbox del desinatario (Recipient). E' possibile specificare attraverso molteplici RCPT TO diversi destinatari;DATA : Indica al server che quanto digitato successivamente saranno i dati del messaggio di posta;RSET : Annulla i comandi (Reset) precedentemente inviati nella sessione SMTP corrente;VRFY <stringa>: Chiede al server se la stringa di testo immessa rappresenta unnome utente presente ed in tal caso visualizza l'intero indirizzo; HELP : Visualizza i comandi disponibili sul server;NOOP : Non esegue nessuna operazione restituisce solo un messaggio 250 (Ok) se il server risponde;QUIT : Termina la sessione SMTP corrente; Una sessione SMTP attraversa almeno sei fasi: 1. Il client SMTP contatta il server sulla porta TCP 25. Se questo è in ascolto e la connessione è accettata risponde con un messaggio 220 (Ready); 2. Il client chiede di stabilire la sessione SMTP inviando il comando HELO seguito dal FQDN (Fully Qualified Domani Name). Se il server accetta rispondo con un messaggio 250 (Ok);3. Il client indica il proprio indirizzo tramite il comando MAIL FROM: <indirizzo mittente>. Il server risponde con 250 (Ok) per ogni destinatario accettato;4. Successivamente il client indica al server i destinatari del messaggio tramite RCPT TO: <indirizzo destinatario> ed il server risponde per ogni destinatario accettato un codice 250 (Ok);5. Il client comunica al server l'intenzione di scrivere il corpo del messaggio con DATA. Il server risponde con un codice 354 e indica come marcare il termine del messaggio. I campi come Date, Subject, To, Cc, From vanno inseriti tra i dati della mail;6. Completato il messaggio da scrivere tramite . il server memorizza la mail. A questo punto è possibile, scrivere un nuovo messaggio oppure inviare il comando QUIT , dopo il quale il server invia i messaggi e risponde con un codice 221 (Closing) e la connessione TCP viene terminata;Esempio di una sessione SMTP da linea di comando: homer@Joker:~$ telnet smtp.springmail.it 25 Trying 195.130.225.171... Connected to smtp.springmail.it. Escape character is '^]'. 220 mail.springmail.it ESMTP Service (6.5.032) ready Tramite il programma telnet viene contattato il server SMTP sulla pora TCP 25 E' possibile notare dal messaggio ESMTP Service che il server supporta le SMTP Service Extensions HELO 250 mail.springmail.it Missing required domain name in HELO, defaulted to your IP address [62.10.125.229] Il client si identifica tramite il comando helo (non iniviando un nome di dominio, viene utilizzato l'indirizzo IP) L'autenticazione avviene con HELO anziché EHLO e quindi il client non usufruisce delle SMTP Service Extensions qui supportate HELP 214-Valid SMTP commands: 214- HELO, EHLO, NOOP, RSET, QUIT, STARTTLS 214- MAIL, RCPT, DATA, VRFY, EXPN, HELP, ETRN 214-For more info, use HELP <valid SMTP command> 214 end of help HELP QUIT 214-Syntax: QUIT 214-Purpose: request closing of the connection 214 end of help Il client richiede una lista dei comandi disponibili tramite help e successivamente un aiuto per il comando QUIT MAIL FROM:<[email protected]> 250 MAIL FROM:<[email protected]> OK RCPT TO:<[email protected]> 250 RCPT TO:<[email protected]> OK DATA Inizia l'inserimento del corpo della mail 354 Start mail input; end with <CRLF>.<CRLF>
250 Mail accepted Il comando "." punto termina l'inserimento del messaggio; Il server SMTP lo accetta QUIT 221 mail.springmail.it QUIT Connection closed by foreign host. La connessione TCP termina e si ritorna al prompt homer@Joker:~$ Il client di posta elettronica (Kmail, Outlook o Eudora) si occupa solitamente di comunicare con il server al posto nostro in base alla propria configurazione. |
Openskills LiveBook: Guida ai protocolli Internet | (C)oresis Srl | GNU FDL licence | Generated: 23/10/2003 |