'''Simple Mail Transfer Protocol''' ('''SMTP''') è il [[protocollo]] [[standard]] per la trasmissione via [[internet]] di [[e-mail]]. In italiano si potrebbe tradurre come "Protocollo elementare di trasferimento postale".
È un protocollo relativamente semplice, [[ASCII|testuale]], nel quale vengono specificati uno o più destinatari di un messaggio, verificata la loro esistenza, e infine il messaggio viene trasferito. È abbastanza facile verificare come funziona un server SMTP mediante un [[client]] [[telnet]]. L'SMTP usa il protocollo di trasmissione [[TCP]] e, per accedervi, la [[porta di computer(reti)|porta]] 25. Per associare il server SMTP a un dato nome di dominio ([[DNS]]), si usa un record denominato MX (Mail Exchange).
L'SMTP iniziò a diffondersi sempre più fin dainei primi anni '80. A quel tempo era un protocollo complementare'alternativa all'[[UUCP]], che era più adatto a gestire il trasferimento di e-mail fra computer la cui connessione era intermittente. InL'SMTP, altred'altra parole il protocollo SMTPparte, funziona meglio se i computer sono sempre collegati alla rete.
[[Sendmail]] fu uno dei primi, (mase non proprio il primo), agente[[mail otransfer programma di trasferimento di posta elettronicaagent]] ad implementare il protocollo SMTP. NelFino al [[2001]] sono stati scritti almeno 50 i programmi che implementano il protocollo SMTP come [[client]] (mittente dei messaggi) o [[server]], (destinatario del messaggio). ViAltri server molto diffusi sono altri[[Exim]] programmi,di latoPhilip serverHazel, che[[Postfix]] usanodella l'SMTP[[IBM]], :[[qmail]] Exim,di Postfix,D. QmailJ. Bernstein, e [[Microsoft Exchange Server]].
LPoiché inizialmente l'SMTP era un protocollo testuale (basato esclusivamente sul riconoscimento di caratteri disulla testocodifica [[ASCII]]), enon quindipermetteva hadi fortitrasmettere difficoltàdirettamente a trattare con [[file binari]]. FuFurono quindidunque sviluppato unosviluppati standard come il [[MIME]] per codificarela codifica dei file binari, utileed ail trasferirliloro viatrasferimento emailattraverso SMTP. Al giorno d'oggi molti server SMTP supportano l'estensione [[8BITMIME]]., Questala estensionequale consentepermette un trasferimento più agevole dei file binari, come se fossero file di testo.
L'SMTP è un protocollo "push" che nonpermette pemette,soltanto sudi inviare messaggi di richiestaposta, ilma "prelievo"non di messaggirichiederli ad daun server: remoto. Perper fare questo il [[mailclient clientdi posta]] deve usare altri protocolli, quali il [[Post Office Protocol|POP3]], o Post Office Protocol, oppure l'[[IMAP]], o Internet Message Access Protocol. Alcuni server SMTP per fare queste operazioni usano il protocollo [[ERTN]].
==Esempio di comunicazione SMTP==
Dopo aver stabilito una connessione tra il mittente (il client) e il destinatrio (il server), ciòQuella che accadesegue è una sessionetransazione SMTP vera e propriavalida. NellaLe successivarighe conversazione, qualsiasi cosa inviatainviate dal client èsono precedutaprecedute conda "C:", mentre qualsiasiquelle cosa inviatainviate dal server è preceduta da "S:". Su molti computer si può stabilire una connessione mediante il comando [[telnet]]:
telnet www.example.com 25
Questo comando apre ununa collegamentoconnessione SMTP verso l'hosta www.example.com sulla porta SMTP.
S: 220 www.example.com ESMTP Postfix <br>
C: HELO mydomain.com <br>
S: 250 Hello mydomain.com <br>
C: MAIL FROM: sender@mydomain.com <br>
S: 250 Ok <br>
C: RCPT TO: friend@example.com <br>
S: 250 Ok <br>
C: DATA <br>
S: 354 End data with <CR><LF>.<CR><LF> <br>
C: Subject: testmessaggio messagedi <br>prova
C: From: sender@mydomain.com <br>
C: To: friend@example.com <br> C:
C: <br>Ciao,
C: questa è una prova.
C: Hello, <br>
C: .
C: This is a test. <br>
S: 250 Ok: queued as 12345 <br>▼
C: Goodbye. <br>
C: . <br>QUIT
▲S: 250 Ok: queued as 12345 <br>
C: quit <br>
Sebbene opzionalenon sia obbligatorio, quasi tutti Ii client richiedono al server chequali l'estensioneestensioni del protocollo SMTP utilizziil unserver salutosupporta diusando tipoil saluto "EHLO",. piuttostoQuesti checlient diusano tipo "HELO", mostratosoltanto sopra,nel caso ein cui il corposerver delnon testorisponda dellead email è formattato tipicamente in [[MIME]]EHLO.
==La sicurezza e lo spamming del protocollo SMTP==
Una delle limitazioni del protocollo originale SMTP originario è che non è adeguatamente programmato pergestisce l'[[autenticazione, o verifica delle identità,]] dei mittenti. Per ovviare a questo problema è stata sviluppata un'estensione chiamata [[SMTP-AUTH]]. Nonostante questo, lo [[spamming]] rimane ancor oggi problema maggiore. Attualmente non si ritiene conveniente modificare profondamente il protocollo, a causa dell'enorme effetto che avrebbe sull'enorme numero di protocolli SMTP già installati a livello mondiale. Per ovviare a tali inconvenienti è stato proposto comunque un nuovo protocollo chiamato [[Internet Mail 2000]]
Nonostante questo, lo [[spam (informatica)|spam]] rimane ancor oggi un grave problema. Tuttavia, non si ritiene praticabile una revisione radicale del protocollo SMTP, per via del gran numero di implementazioni del protocollo attuale (ad esempio, è stato proposto [[Internet Mail 2000]] come protocollo alternativo).
Per queste ragioni vi sono sempre più proposte per protocolli a modulazione d'ampiezza che assistono le operazioni SMTP. Il gruppo di ricerche Antispam dell'[[IRTF]] sta lavorando su un certo numero di proposte per fornire un semplice metodo di autenticazione, flessibile, leggero e [[scalabilità|scalabile]]. Tra quelli esaminati, molto probabilmente verrà utilizzato il [[Sender Policy Framework]], formalmente conosciuto come Sender Permitted From. Tuttavia, questo protocollo di sicurezza è messo in discussione a causa di violazioni del copyright nei confronti di brevetti [[Microsoft]].
Per questo motivo sono stati proposti diversi protocolli ausiliari per assistere le transazioni SMTP. L'[[Anti-Spam Research Group]] dell'[[IRTF]] sta lavorando su varie proposte di autenticazione e-email centrate sulla flessibilità, leggerezza e [[scalabilità]].
==Gli standard RFC==
|