# Multipurpose Internet Mail Extensions

Il Multipurpose Internet Mail Extensions (MIME; lett. "estensioni multifunzione alla posta di Internet") è uno standard di Internet che estende la definizione del formato dei messaggi di posta elettronica, originariamente definito dall'SMTP, il protocollo di trasmissione delle email. MIME aggiunge il supporto per:
* l'impiego di codifiche di caratteri diversi dall'ASCII,
* l'aggregazione di diversi messaggi tra loro,
* la codifica di messaggi (o loro parti) non testuali.
Queste novità rispetto ad SMTP consentono caratteristiche oggi comuni nell'uso della posta elettronica, come il concetto di allegato, l'invio di file non testuali, la lunghezza arbitraria delle linee di testo e del messaggio stesso, o ancora la firma digitale e la cifratura dei messaggi. Per garantire compatibilità con il protocollo SMTP, i messaggi email in formato MIME vengono codificati in uno o più messaggi nel formato SMTP spediti ordinatamente. Quasi tutte le email scritte da persone e molte delle email generate automaticamente sono trasmesse usando queste due tecnologie.
Sebbene il formato sia nato per la posta elettronica, oggi è impiegato in ambiti anche molto diversi, specialmente in contesti di comunicazione o memorizzazione il cui oggetto abbia una codifica non fissata e che debba pertanto essere esplicitata da metadati. L'esempio più evidente è il protocollo HTTP alla base del World Wide Web, nel quale i messaggi tra browser e server web sono codificati usando MIME.
La descrizione e la specifica ufficiale di MIME sono contenute in sei documenti RFC dell'IETF: RFC 2045, RFC 2046, RFC 2047, RFC 4288, RFC 4289, RFC 2049.

## Caratteristiche

Il protocollo base di Internet per la trasmissione di email, l'SMTP, supporta solo caratteri ASCII a 7 bit. Questo di fatto limita le email a messaggi che, quando trasmessi, includono solo i caratteri sufficienti per scrivere in un numero limitato di lingue, come per esempio l'inglese, e rende leggibile (ma non corretta) la rappresentazione in qualche altra lingua che fa uso dell'alfabeto latino. Il MIME definisce meccanismi atti a spedire altri tipi di informazione con l'email, potendo includere testo scritto in lingue diverse dall'inglese usando codifiche diverse dall'ASCII, e contenuti binari come immagini, suoni e filmati, oppure programmi. Il MIME è anche un componente fondamentale dei protocolli di comunicazione come l'HTTP, il quale richiede che i dati siano trasmessi come messaggi simil-email, sebbene i messaggi non siano effettivamente email.
La traduzione dei messaggi da e in formato MIME è generalmente fatta in automatico dai client e dai server quando si spediscono o si ricevono email SMTP/MIME. Il formato base delle email su Internet è definito nell'RFC 2822, che è un aggiornamento del RFC 822. Questi standard specificano i formati conosciuti per rappresentare le intestazioni e il corpo delle email, come anche le regole attinenti all'utilizzo delle intestazioni quali "A:", "Oggetto", "Da" e "Data:". MIME definisce un insieme di intestazioni per inserire attributi aggiuntivi in un messaggio, come per esempio il tipo del contenuto, e definisce un insieme di codifiche di trasferimento che possono essere usate per rappresentare dati binari a 8 bit utilizzando il charset ASCII a 7 bit. Lo standard MIME specifica anche regole per codificare caratteri non ASCII nelle intestazioni del messaggio email, come "Oggetto:", permettendo a queste intestazioni di contenere caratteri diversi dall'inglese.
Lo standard MIME è espandibile. Le sue definizioni includono metodi per definire nuovi tipi di contenuto e altri attributi MIME. Uno degli obiettivi espliciti dello standard era di non esigere cambiamenti sui server preesistenti, e permettere alle email plain-text di funzionare in entrambe le direzioni con i client preesistenti. Questo obiettivo è stato raggiunto definendo gli attributi dei messaggi in formato MIME opzionali, impostandoli di default come non-MIME, in modo che i messaggi plain-text vengano correttamente letti dai client MIME. Inoltre, un semplice messaggio MIME viene interpretato correttamente anche da un client che non supporta il MIME, sebbene abbia le intestazioni che il client non-MIME non sa come interpretare.

## Estensibilità

Può sembrare sorprendente che la versione MIME sia formalmente rimasta 1.0 dal 1992 a oggi. In realtà, MIME esordisce mettendo a punto un meccanismo per specificare e descrivere il formato dei messaggi di posta elettronica (RFC 1521). Lo standard definisce un processo di registrazione e un formato, fornendo in pratica delle linee guida per la messa a punto di nuove estensioni. In particolare viene caldeggiata l'introduzione di nuovi tipi di contenuto e di nuovi metodi di accesso. Viene anche suggerito l'uso del prefisso X- per i nomi non registrati.
I tipi di contenuto predefiniti sono sette. Cinque sono tipi elementari: testo, audio, immagine, video e applicazione, dove l'ultimo rappresenta il tipo di dati generato o utilizzato da un particolare software applicativo. Ogni tipo ha dei sottotipi, per cui abbiamo, per esempio, image/gif e application/zip. Due sono tipi composti: messaggio e multipart. Anche questi hanno i loro sottotipi, per esempio message/rfc822 è usato per rinviare messaggi come allegati, mentre con multipart/alternative si può inviare un testo sia in versione normale sia in HTML.
I metodi di accesso sono introdotti allo scopo di inviare un riferimento al messaggio in luogo del messaggio stesso. Questo non è semplicemente un link in mezzo al testo, come spesso si usa. Lo standard prevede un tipo message/external-body corredato del tipo di accesso. I metodi d'accesso previsti vanno dalle varie forme di FTP, ai file locali o remoti, ai messaggi email su un server di posta (presumibilmente in cartelle IMAP condivise). Tra i parametri che corredano l'accesso ci sono le autorizzazioni e la data di scadenza.
Ovviamente non è pensabile che un normale client di posta, compatibile con la versione 1.0 di MIME, possa trattare tutte queste estensioni in modo appropriato. L'apparato di MIME è tale da permettere e regolare lo sviluppo di estensioni che saranno sviluppate via via. L'interfacciamento di segreterie telefoniche e fax potrebbe essere un esempio.