Simple Mail Transfer Protocol
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, 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 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 dai primi anni '80. A quel tempo era un protocollo complementare all'UUCP più adatto a gestire il trasferimento di e-mail fra computer la cui connessione era intermittente. In altre parole il protocollo SMTP funziona meglio se i computer sono sempre collegati alla rete.
Sendmail fu uno dei primi, (ma non il primo), agente o programma di trasferimento di posta elettronica ad implementare il protocollo SMTP. Nel 2001 sono almeno 50 i programmi che implementano il protocollo SMTP come client (mittente dei messaggi) o server, (destinatario del messaggio). Vi sono altri programmi, lato server, che usano l'SMTP : Exim, Postfix, Qmail, Microsoft Exchange Server.
L'SMTP era un protocollo basato esclusivamente sul riconoscimento di caratteri di testo ASCII, e quindi ha forti difficoltà a trattare con file binari. Fu quindi sviluppato uno standard MIME per codificare file binari, utile a trasferirli via email. Al giorno d'oggi molti server SMTP supportano l'estensione 8BITMIME. Questa estensione consente un trasferimento più agevole dei file binari, come se fossero file di testo.
L'SMTP è un protocollo "push" che non pemette, su richiesta, il "prelievo" di messaggi da server remoto. Per fare questo il mail client deve usare il 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ò che accade è una sessione SMTP vera e propria. Nella successiva conversazione, qualsiasi cosa inviata dal client è preceduta con "C:", mentre qualsiasi cosa inviata 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 un collegamento SMTP verso l'host www.example.com.
S: 220 www.example.com ESMTP Postfix
C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM: sender@mydomain.com
S: 250 Ok
C: RCPT TO: friend@example.com
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: test message
C: From: sender@mydomain.com
C: To: friend@example.com
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: quit
S: 221 Bye
Sebbene opzionale, quasi tutti I client richiedono al server che l'estensione SMTP utilizzi un saluto di tipo "EHLO", piuttosto che di tipo "HELO", mostrato sopra, e il corpo del testo delle email è formattato tipicamente in MIME.
La sicurezza e lo spamming del protocollo SMTP
Una delle limitazioni del protocollo originale SMTP è che non è adeguatamente programmato per 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
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 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.
Gli standard RFC
- RFC 821, pubblicato nel 1982
- RFC 1123 pubblicato nel 1989. Correzioni all'RFC 821
- RFC 1425 pubblicato nel 1993. Introduce il comando EHLO
- RFC 1651 pubblicato nel 1994. Rimpiazza l'RFC 1425
- RFC 1869 pubblicato nel 1995. Rimpiazza l'RFC 1651
- RFC 1891 pubblicato nel 1996. Corregge l'RFC 1869
- RFC 2821 pubblicato nel 2001. Rimpiazza gli RFC 821, RFC 1123, RFC 1869
- RFC 2822 pubblicato nel 2001.