Negli anni ’60 venivano usate varie forme di posta elettronica. Le persone comunicavano usando sistemi sviluppati per un particolare computer mainframe. Nel momento in cui più computer cominciarono ad essere collegati gli uni con gli altri, specialmente nell’ARPANET del Governo degli Stati Uniti, furono sviluppati degli standard per permettere agli utenti che utilizzavano sistemi diversi di poter comunicare attraverso le e-mail. L’SMTP nacque dallo sviluppo di questi standard durante gli anni ‘70.
Trova le sue radici nei Mail Box Protocol (1971), FTP Mail (1973),e Mail Protocol. Il lavoro continuò per tutti gli anni ‘70, fino a quando l’ARPANET si trasformò nella moderna Internet, attorno al 1980. Jon Postel nel 1980 propose un Protocollo di Trasferimento Email che iniziò ad eliminare la dipendenza delle email dall’FTP. Inizialmente fu pubblicato come RFC 821 nell’Agosto 1982, sempre da Postel. Questo standard fu sviluppato nello stesso periodo come Usenet, un network di comunicazione uno-verso-molti con molti aspetti in comune, diffondendosi nei primi anni ‘80.
Al tempo, era un complemento dell’UUCP (Unix to Unix CoPy), che gestiva meglio i trasferimenti di email tra computer connessi in maniera intermittente. D’altra parte, funziona meglio quando il computer che manda e quello che riceve sono connessi alla rete per tutto il tempo. Entrambi usano un meccanismo store and forward (conserva e inoltra) e sono esempi di tecnologia push. Anche se i newsgroup di Usenet si basano ancora sul protocollo UUCP tra i server, la posta UUCP è praticamente sparita insieme ai “bang paths” che usavano come intestazioni dei messaggi. Sendmail è stata una delle prime applicazioni ad implementarlo.
Altri programmi popolari che lo implementano includono Postfix, qmail, Novell GroupWise, Exim, Novell NetMail, Microsoft Exchange Server, Sun Java System Messaging Server e il worm Sobig. Nel 2001 c’erano almeno 50 programmi che lo supportavano come client (per spedire messaggi) o come server (per ricevere messaggi). Message Submission (RFC 2476) e SMTP-AUTH (RFC 2554) sono stati introdotti nel 1998 e nel 1999, ed entrambi hanno comportato la nascita di nuovi trend nella spedizione delle e-mail. In origine, i server SMTP erano interni a un’organizzazione, ricevevano la posta che veniva inviata all’organizzazione dall’esterno, e inoltravano all’esterno i messaggi dell’organizzazione.
Ma con il passare del tempo, questi server SMTP (Mail transfer agents), videro il loro ruolo crescere e diventarono Mail submission agents per Mail user agents, alcuni dei quali inoltravano email dall’esterno all’organizzazione. Questa evoluzione, conseguenza della rapida espansione e popolarità del World Wide Web, comportava che tale protocollo dovesse includere regole specifiche e metodi per inoltrare le email e autenticare gli utenti, in modo da prevenire abusi come invio di e-mail non richieste (spam). Poichè all’inizio questo protocollo era semplicemente basato su testo ASCII, non gestiva bene i file binari.
Perciò furono sviluppati standard come il Multipurpose Internet Mail Extensions (MIME) per far sì che anche i file binari potessero essere trasferiti attraverso questo protocollo. Gli MTA sviluppati dopo Sendmail tendevano ad essere implementati 8-bit-clean, in modo da poter usare la strategia alternativa “just send eight” per trasmettere dati arbitrari via SMTP. Gli MTA non 8-bit-clean di oggi tendono a supportare l’estensione 8BITMIME, permettendo di trasmettere file binari con quasi la stessa facilità del semplice testo.
Il Simple Mail Transfer Protocol (protocollo semplice di trasferimento email o SMTP) è uno standard di Internet per la trasmissione di posta elettronica (e-mail) attraverso il protocollo di rete Internet Protocol (IP). L’SMTP è stato definito per la prima volta nell’RFC 821 (STD 10), e l’ultimo aggiornamento risale all’RFC 5321 (2008), che descrive il protocollo nell’uso esteso di oggi, conosciuto anche come SMTP esteso (ESMTP).
Mentre i software di posta elettronica dei server lo utilizzano per mandare e ricevere email, le applicazioni degli utenti in genere lo usano solo per mandare messaggi a un server di posta perché vengano inoltrati. Per ricevere messaggi, le applicazioni degli utenti usano o il Post Office Protocol (POP) o l’Internet Message Access Protocol (IMAP), per accedere agli account su un server di posta elettronica.
SMTP è un protocollo relativamente semplice, basato sul testo, nel quale sono specificati uno o più destinatari di un messaggio (dei quali, nella maggior parte dei casi, viene verificata l’esistenza) insieme al testo del messaggio ed eventuali altri oggetti integrati. Il messaggio viene quindi trasferito a un server remoto attraverso una serie di richieste e risposte tra il client e il server. Sia un client e-mail dell’utente, o MUA (Mail User Agent), sia un server MTA (Mail Transport Agents) che inoltri le e-mail possono comportarsi da client SMTP.
Un client e-mail viene configurato in modo da conoscere il server della posta in uscita. Un server che inoltri le e-mail determina a quale server deve collegarsi cercando il record DNS MX (Mail eXchange) per il nome di dominio di ogni destinatario. Gli MTA conformanti (non tutti) ritornano al semplice record A in caso non ci sia nessun MX (i server che inoltrano possono anche essere configurati per usare uno smarthost). Il client SMTP avvia una connessione TCP attraverso la porta 25 del server (a meno che non sia disposto diversamente nella configurazione).
Risulta essere abbastanza facile testare un server SMTP usando il programma netcat. Essendo un protocollo “push” non può “prendere” i messaggi da un server remoto su richiesta. Per ricevere i messaggi su richiesta, che è la cosa che più comunemente viene fatta sul computer di un singolo utente, un client di posta deve usare il POP3 o l’IMAP. Un altro server SMTP può richiedere una consegna usando ETRN. Il POP3 è diventato popolare perchè i computer dei singoli utenti si connettono ad Internet in maniera intermittente; l’SMTP è più adatto a una macchina collegata ad Internet in maniera permanente. Un modo semplice per ricordare l’acronimo è Send Mail To People.