Simple Mail Transfer Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FrescoBot (discussione | contributi)
m Bot: spazi attorno alle parentesi e modifiche minori
m fix errori comuni, replaced: sottoforma → sotto forma using AWB
Riga 1:
SMTP è un [[Protocollo di comunicazione|protocollo standard]] per la trasmissione di email. Inizialmente proposto nella [[Request for Comments|RFC]] 778<ref>{{Cita web|url=https://tools.ietf.org/html/rfc788|titolo=RFC 778}}</ref> nel 1981, poi aggiornato con <nowiki>RFC 821</nowiki><ref name=":0">{{Cita web|url=https://tools.ietf.org/html/rfc821|titolo=RFC 821}}</ref> nel 1982 ed ulteriormente modificato nel 2008 con l’introduzione di [[ESMTP|extended SMTP]] (RFC 1869 e RFC 5321), che è il protocollo attualmente in uso.
 
Anche se i [[server di posta elettronica]] utilizzano SMTP per inviare e ricevere mail, i client mail a livello utente utilizzano SMTP solo per inviare il messaggio al server mail, il quale si occupa dell’invio del messaggio stesso. Per recuperare i messaggi, le applicazioni client usano solitamente protocolli come [[Internet Message Access Protocol|IMAP]] o [[Post Office Protocol|POP3]].
Riga 5:
La comunicazione tra i server mail utilizza il protocollo [[TCP/IP|TCP]] sulla porta 25<ref name=":0" />. I [[Client di posta elettronica|client mail]], tuttavia, spesso inviano le mail in uscita al server sulla porta 587<ref>{{Cita web|url=https://tools.ietf.org/html/rfc4409|titolo=RFC 4409}}</ref>. Anche se deprecata, i provider mail e alcuni produttori come Apple<ref>{{Cita web|url=https://support.apple.com/en-us/HT202944|titolo=Porte utilizzate per servizi Apple}}</ref>, permettono ancora l’uso della porta non standard 465<ref>{{Cita web|url=https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt|titolo=Lista porte - IANA}}</ref> per questa operazione.
 
È possibile rendere sicura una connessione SMTP con [[Transport Layer Security|TLS]], nota come [[SMTPS]], attraverso [[:en:Opportunistic_TLSOpportunistic TLS|STARTTLS]].
 
Anche se sistemi proprietari (come [[Microsoft Exchange]] e [[IBM Notes]]) e sistemi [[webmail]] (come [[Outlook.com]], [[Gmail]] e [[Yahoo! Mail]]) utilizzano protocolli non standard per accedere alla mail box dell’account del rispettivo server mail, tutti utilizzano SMTP, per l’invio e la ricezione di mail, al di fuori dei loro sistemi.
Riga 23:
Ulteriori implementazioni includono FTP Mail<ref>{{Cita web|url=https://tools.ietf.org/html/rfc469|titolo=Network mail meeting summary|autore=M.D. Kudlick|sito=tools.ietf.org|lingua=en|accesso=2017-12-06}}</ref> e Mail Protocol, entrambe del 1973<ref>{{Cita web|url=https://tools.ietf.org/html/rfc524|titolo=Proposed Mail Protocol|autore=J.E. White|sito=tools.ietf.org|lingua=en|accesso=2017-12-06}}</ref>. Il lavoro di sviluppo continuò durante gli anni 70, finché, intorno al 1980, la rete ARPANET si trasformò nella moderna rete internet. [[Jon Postel]] propose un Mail Transfer Protocol nel 1980 che iniziò a rimuovere la dipendenza delle mail da FTP<ref>{{Cita web|url=https://tools.ietf.org/html/rfc772|titolo=Mail Transfer Protocol|autore=Postel, J., Sluizer, S.|sito=tools.ietf.org|lingua=en|accesso=2017-12-06}}</ref>. SMTP venne pubblicato come <nowiki>RFC 788</nowiki> nel novembre del 1981<ref>{{Cita web|url=https://tools.ietf.org/html/rfc788|titolo=Simple Mail Transfer Protocol|autore=J. Postel|sito=tools.ietf.org|lingua=en|accesso=2017-12-06}}</ref>.
 
Agli inizi degli anni ’80, SMTP divenne largamente utilizzato. A quell’epoca era un’estensione di [[UUCP]] (abbreviazione di Unix-to-Unix Copy Program, è una suite di programmi e protocolli che permettono l’esecuzione remota di comandi e il trasferimento di file ed email tra computer), che era più adatto a gestire il trasferimento di email tra computer connessi in maniera intermittente. SMTP tuttavia funziona meglio con mittente e destinatario sempre connessi alla rete. Entrambi utilizzano un meccanismo di [[store and forward]] e sono esempi di [[logica push]].
 
[[Sendmail]], rilasciato con [[Berkeley Software Distribution|4.1cBSD]], subito dopo la RFC 788, fu uno dei primi mail transfer agent ad implementare SMTP<ref>{{Cita web|url=https://docs.freebsd.org/44doc/smm/09.sendmail/paper.pdf|titolo=}}</ref>. Grazie al fatto che BSD Unix divenne il sistema operativo più diffuso su internet, sendmail diventò il [[Server di posta elettronica|mail transfer agent]] (mail server) più utilizzato. Altri SMTP server sono [[Postfix]], [[qmail]], [[Novell]] [[GroupWise]], Exim, [[Novell NetMail]], [[Microsoft Exchange Server]] e [[Oracle Communications Messagging Server]].
 
La possibilità di inviare messaggi (<nowiki>RFC 2476</nowiki><ref>{{Cita web|url=https://tools.ietf.org/html/rfc2476|titolo=Message Submission|autore=Randall Gellens|sito=tools.ietf.org|lingua=en|accesso=2017-12-06}}</ref>) e [[SMTP Authentication|SMTP-AUTH]] (<nowiki>RFC 2554</nowiki><ref>{{Cita web|url=https://tools.ietf.org/html/rfc2554|titolo=RFC 2554}}</ref>) furono sviluppati nel 1998 e 1999, introducendo un nuovo trend nella consegna della email. Inizialmente, i server SMTP erano tipicamente all'interno di una organizzazione, ricevendo mail per l’organizzazione dall'esterno e consegnando messaggi dall'organizzazione per l’esterno. A causa della veloce espansione del [[World Wide Web|Word Wide Web]], i server SMTP hanno dovuto inserire regole specifiche e metodi per consegnare email ed autenticare gli utenti per prevenire abusi come consegna di mail non richieste ([[spam]]). Il lavoro sull'invio dei messaggi (<nowiki>RFC 2476</nowiki><ref name=":1" />) fu sviluppato perché i più famosi mail server spesso sovrascrivevano la mail per sistemare i problemi contenuti in essa come, per esempio, aggiungendo il nome di dominio ad un indirizzo non specificato. Questo comportamento è desiderato quando il messaggio viene corretto mentre si trova in uno stato iniziale ma pericoloso e dannoso quando il messaggio è stato generato altrove e sta per essere trasmesso. Separare mail tra consegna e trasmissione è visto come un modo per permettere ed incoraggiare il rewriting submission e bloccare il rewriting relay. Questa separazione tra consegna e trasmissione divenne velocemente la base della sicurezza mail.
 
Essendo nato come puro protocollo [[ASCII]] text-based 7-bit, SMTP non gestiva bene i file binari e i caratteri non utilizzati nella lingua Inglese. Standard come Multipurpose Internet Mail Extension ([[Multipurpose Internet Mail Extensions|MIME]]) furono sviluppati per codificare i file binari per il trasferimento tramite SMTP. I mail transfer agent (MTA) sviluppati dopo [[Sendmail]] tendevano ad essere implementati come [[8-bit-clean]] così da poter trasmettere qualsiasi file di testo contenente dati (in una qualsiasi codifica 8-bit ASCII-like) attraverso SMTP. Oggigiorno gli 8-bit-clan MTA tendono a supportare l’estensione [[8BITMIME]], permettendo la facile trasmissione di file binari, come avviene per file di testo. Recentemente è stata sviluppata l’estensione [[SMTPUTF8]] per permettere il supporto di testo con codifica [[UTF-8]], garantendo lo scambio di messaggi in lingue come [[Cirillico]] e [[Caratteri cinesi tradizionali|Cinese]].
 
Molte persone contribuirono allo sviluppo delle specifiche SMTP, tra i quali [[Jon Postel]], Eric Allman, Dave Crocker, Ned Freed, [[Randall Gellens]], [[John Klensin]] e [[Keith Moore]].
 
== Modello di gestione delle mail ==
Una mail è inviata da un client di posta ([[Client di posta elettronica|mail user agent]], MUA) ad un server mail ([[Server di posta elettronica|mail transfer agent]], MTA) attraverso un [[mail submission agent]] (MSA), usando SMTP attraverso [[TCP/IP|TCP]] sulla porta 587. La maggior parte dei provider di posta tuttavia permettono ancora l’invio sulla tradizionale porta 25. Spesso MUA e MSA sono istanze dello stesso software, avviato con opzioni diverse sulla stessa macchina.
 
Il MTA utilizza il [[Domain Name System|DNS]] per trovare il record MX di uno specifico dominio (la parte dell’indirizzo dopo il carattere @). Il record MX contiene il nome dell’host target. Basandosi sul nome dell’host e su altre informazioni, il MTA sceglie un server e si connette come SMTP client.
Riga 40:
Il trasferimento di messaggi può avvenire in una singola connessione tra due MTA o attraverso una serie di salti attraverso diversi sistemi intermediari. Un server SMTP può essere destinatario del messaggio o intermediario (compiendo operazioni di store and forward) o gateway (può trasmettere il messaggio utilizzando anche altri protocolli, oltre a SMTP). Ogni salto è un trasferimento formale di responsabilità sul messaggio, per cui ciascun server che riceve il messaggio deve consegnarlo o segnalare un errore.
 
Una volta che il server destinatario accetta il messaggio in arrivo, lo consegna ad un [[Mail Delivery Agent|mail delivery agent]] (MDA), che lo salva in una mailbox per la consegna locale.
 
Una volta consegnato al mail server, il messaggio è memorizzato per poter esser recuperato da un determinato mail client autenticato (MUAs). La mail è recuperata attraverso applicazioni sul dispositivo dell’utente, chiamate mail client, usando il protocollo [[Internet Message Access Protocol]] (IMAP), che facilita sia l’accesso alle mail sia gestisce le mail immagazzinate, o [[Post Office Protocol]] (POP) che tipicamente usa il tradizionale formato mbox per le mail, o un sistema proprietario come per esempio [[Microsoft Exchange]]/[[Outlook]] o [[Lotus Notes]]/Domino. I client [[Webmail]] possono utilizzare entrambi i modi ma il protocollo per il recupero solitamente non è un protocollo standard. [[Post Office Protocol|POP3]] e [[Internet Message Access Protocol|IMAP]] sono protocolli simili ma con alcune differenze sostanziali:
* [[Post Office Protocol|POP3]]: il client mail si collega al server, scarica la posta in locale, cancella i messaggi scaricati dal server e si disconnette (è possibile comunque impostare alcuni parametri per evitare la cancellazione della mail dal server). Caratteristiche di questo protocollo: possibilità di avere i messaggi sempre salvati in locale quindi non è necessaria una connessione internet (ovviamente necessaria per invio e scaricamento dei nuovi messaggi) e risparmio di spazio sul server.
* [[Internet Message Access Protocol|IMAP]]: il client mail si collega al server, richiede i nuovi messaggi e li presenta all'utente salvandoli sottoformasotto forma di file temporanei (analogamente a POP3, è possibile salvare le mail in locale in maniera permanente). Qualsiasi modifica apportata ai messaggi viene riprodotta anche sul server e su qualsiasi altro dispositivo col quale si è effettuato l'accesso. Caratteristiche: posta salvata sul server quindi sempre reperibile da qualsiasi dispositivo tramite autenticazione, possibilità di recuperare la mail anche se un determinato dispositivo sul quale si consultano le mail smette di funzionare, risparmio spazio sul client.
 
SMTP definisce come viene trasmesso il messaggio, non il suo contenuto. Definisce la struttura e i suoi parametri, come l’[[envelope sender]], ma non l’header (ad eccezione delle informazioni di tracciamento) o il corpo del messaggio stesso. STD 10 e <nowiki>RFC 5321</nowiki><ref name="tools.ietf.org">{{Cita web|url=https://tools.ietf.org/html/rfc5321|titolo=RFC 5321}}</ref> definiscono la struttura di SMTP mentre STD 11 e <nowiki>RFC 5322</nowiki><ref>{{Cita web|url=https://tools.ietf.org/html/rfc5322|titolo=RFC 5322}}</ref> definiscono il messaggio (header e body) attraverso un [[Internet Message Format.]]
 
== Struttura del Protocollo ==
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. Un sessione può includere zero o più transazioni SMTP. Una ''transazione SMTP'' consiste in tre sequenze di comandi e risposte:
# '''<code>MAIL</code>''': comando per definire l’indirizzo di ritorno, chiamato anche return-path<ref>{{Cita web|url=http://cr.yp.to/smtp/mail.html|titolo=The MAIL, RCPT, and DATA verbs}}</ref>, reverse-path<ref>{{Cita web|urlname=https://"tools.ietf.org"/html/rfc5321|titolo=RFC 5321}}</ref>, bounce address, mfrom o envelope sender.
# '''<code>RCPT</code>''': comando per definire il contenuto di un messaggio. Questo comando può essere inviato più volte, una per ogni destinatario (gli indirizzi fanno parte della struttura (envelope)).
# '''<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.
Riga 63:
 
=== Recupero Messaggi ===
SMTP è solamente un protocollo di consegna. Nell'utilizzo più comune, il messaggio e inviato al server mail di destinazione, o al server che si trova al passo successivo. Il messaggio è instradato sulla base del server di destinazione, non sulla base dell'utente al quale deve essere inviato. Altri protocolli come [[Post Office Protocol|Post Office Protcol]] (POP) e [[Internet Message Access Protocol]] (IMAP) sono specificamente sviluppati per essere utilizzati dall'utente, recuperando i messaggi e gestendo la casella di posta. Per permettere ad un server mail connesso ad intermittenza di recuperare i messaggi da un server remoto, SMTP ha una funzione per inizializzare una coda di processamento messaggi su un server remoto (vedi sotto).
 
=== Inizializzazione Coda di Messaggi Remota ===
L’ Inizializzazione di una coda di messaggi remota è una caratteristica di SMTP che permette ad un host remoto di iniziare il processamento della coda delle mail su un server, il quale può ricevere messaggi destinati ad esso inviando in comando '''<code>TURN</code>'''. Questa caratteristica tuttavia è stata giudicata insicura<ref name="ReferenceA">{{Cita web|url=RFC 1985|titolo=https://tools.ietf.org/html/rfc1985}}</ref> e fu sostituita (<nowiki>RFC 1985</nowiki><ref>{{Cita web|urlname=RFC 1985|titolo=https:"ReferenceA"//tools.ietf.org/html/rfc1985}}</ref>) dal comando '''<code>ETRN</code>''' che opera in maniera più sicura utilizzando un metodo di autenticazione basato su Domain Name System Information.
 
=== Internazionalizzazione ===
Utenti per i quali la lingua scritta non è basata sull'alfabeto Latino o che usano simboli non contenuti nel set di caratteri [[ASCII]], possono aver problemi causati dal fatto che l’indirizzo mail richiede solamente caratteri Latin. <nowiki>RFC 6531</nowiki><ref>{{Cita web|url=https://tools.ietf.org/html/rfc6531|titolo=RFC 6531}}</ref> nacque per risolvere questo problema, introducendo l’estensione SMTPUTF8 e il supporto per una codifica multi byte per caratteri non ASCII per gli indirizzi mail, per supportare lingue come il greco e cinese.
 
== SMTP Server ==
Un [[client di posta elettronica]] necessita di conoscere l’[[indirizzo IP]] del server SMTP di partenza, che deve essere fornito come parte della sua configurazione (solitamente come nome [[Domain Name System|DNS]], campo MX).
 
=== Restrizioni di Accesso ===
Riga 80:
 
==== Restrizioni di Accesso Basate sulla Posizione ====
Al di sotto di questi sistemi, un [[Internet service provider|ISP]] non permette accesso al server SMTP da parte di utenti al di fuori della rete gestita dall'[[Internet service provider|ISP]] stesso. Più precisamente, il server potrebbe consentire solamente l’accesso di utenti con un indirizzo IP fornito dall’[[Internet service provider|ISP]], che è equivalente a richiedere che entrambi, mittente e destinatario, siano connessi ad internet usando lo stesso [[Internet service provider|ISP]]. Un utente mobile, tuttavia, potrebbe spesso trovarsi su una rete che non è quella del suo normale ISP e quindi potrebbe non riuscire ad inviare mail perché la configurazione del server SMTP scelto non è più accessibile.
 
Un server SMTP di una organizzazione potrebbe quindi fornire solamente servizi ad utenti sulla stessa rete, bloccando l’accesso alla rete esterna. Alternativamente il server potrebbe effettuare un range check sull'indirizzo IP del client. Questi metodi vennero tipicamente utilizzati da enti e istituzioni come università che forniscono un server SMTP solamente per un uso interno all'organizzazione. Tuttavia molte di queste organizzazioni ora utilizzano un metodo di autenticazione.
Riga 98:
La porta 2525 e altre possono essere utilizzate da alcuni provider ma non sono ufficialmente supportate.
 
Molti [[Internet service provider|Internet Service Provider]] ora bloccano tutte le mail inviate dalla porta 25, come misura anti spam<ref>{{Cita web|url=https://www.pcworld.com/article/116843/article.html|titolo=ISPs Pitch In to Stop Spam|sito=PCWorld|lingua=en|accesso=2017-12-14}}</ref> e consentono l'invio solamente dal server mail designato. Il provider così può controllare il traffico in uscita.
 
== Comandi SMTP ==
Riga 136:
== Esempio di comunicazione SMTP ==
 
Di seguito viene riportata una transazione SMTP tra due caselle di posta (''Alice'' e ''Bob'') che si trovano sullo stesso dominio (''example.com''). Le righe inviate dal client sono precedute da "C:", mentre quelle inviate dal server da "S:" (queste lettere tuttavia non fanno parte dello scambio di messaggi ma servono solamente da esempio).
 
S: 220 smtp.example.com ESMTP Postfix