Simple Mail Transfer Protocol: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Corretto: "affidamento su" |
m Bot: template:apostrofo e modifiche minori |
||
Riga 51:
SMTP è un protocollo [[connection oriented]], [[text based]], nel quale un mail sender comunica con un mail receiver inviando stringhe di comandi e fornendo le informazioni necessarie attraverso un canale di comunicazione affidabile, tipicamente basato su [[TCP/IP|TCP]]. Una sessione SMTP consiste nello scambio di comandi generati da un client SMTP e le corrispettive risposte del server SMTP. Una sessione può includere zero o più transazioni SMTP. Una ''transazione SMTP'' consiste in tre sequenze di comandi e risposte:
# '''<code>MAIL FROM</code>''': comando per definire l’indirizzo di ritorno, chiamato anche return-path<ref>{{Cita web|url=https://cr.yp.to/smtp/mail.html|titolo=The MAIL, RCPT, and DATA verbs}}</ref>, reverse-path<ref name="tools.ietf.org"/>, bounce address, mfrom o envelope sender.
# '''<code>RCPT TO</code>''': comando per definire il destinatario del
# '''<code>DATA</code>''': comando inviato per segnalare l’inizio del messaggio di testo, il contenuto del messaggio, come definito nell'envelope. Consiste di un header ed un body, separati da una linea vuota. <code>DATA</code> tuttavia è un insieme di comandi ai quali il server risponde due volte: la prima volta come conferma di ricezione del testo (acknowledge), la seconda dopo la sequenza di end-of-data per accettare o rifiutare l’intero messaggio.
Oltre alle risposte intermedie al comando '''<code>DATA</code>''', ogni risposta del server può essere positiva (caratterizzata dal codice 2xx) o negativa. Le riposte negative possono essere permanenti (5xx) o temporanee (4xx). Un rifiuto ('''reject''') rappresenta un fallimento permanente e il client dovrebbe inviare un bounce message al server dal quale ha ricevuto il messaggio. Un '''drop''' è una risposta positiva, seguita dal messaggio di rifiuto, invece che dal messaggio di avvenuta consegna.
Riga 162:
L'inizio della trasmissione del testo della mail è identificata dal comando <code>DATA</code>, dopo il quale il testo è trasmesso linea per linea e termina con la sequenza <code><CR><LF>.<CR><LF></code>detta sequenza di ''end-of-data''. Poiché una linea può contenere solamente un punto (.) come parte del testo, il client manda ''due'' punti consecutivi ogni volta che una linea inizia con un punto. Analogamente il server sostituisce ogni sequenza di due punti consecutivi con uno solo (questa tecnica è chiamata ''dot-stuffing'').
La risposta positiva del server
Il comando <code>QUIT</code> termina la sessione. Se la mail ha altri destinatari, il client si connetterà ad un opportuno server SMTP per i successivi destinatari. Le informazioni che il client invia coi comandi <code>HELO</code> e <code>MAIL FROM</code>, sono inserite (non mostrate nel codice di esempio) nella mail come campi ''header'' aggiuntivi, dal server destinatario, aggiungendo rispettivamente i campi ''Received'' e ''Return-Path''.
|