martedì 5 luglio 2011

Email Introduzione al MIME

Introduzione al MIME

MIME (Multipurpose Internet Mail Extensions) è uno standard proposto dai laboratori Bell Communications nel 1991 per estendere le possibilità limitate della posta elettronica (mail) e soprattutto per permetter di inserire dei documenti (immagini, suoni, testo, …) in un messaggio. E' definito all'origine dai RFC 1341 e 1342 del giugno 1992.
MIME propone di descrivere, grazie a delle intestazioni, il tipo di contenuto del messaggio e la codificazione usata.
MIME apporta alla messaggeria le seguenti funzionalità :
  • Possibilità d'avere più oggetti (allegati) in uno stesso messaggio;
  • Una lunghezza di messaggio illimitata;
  • L'uso di giochi di caratteri (alfabeti) oltre a quelli del codice ASCII;
  • L'uso di testi arricchiti (sotto forma di messaggi, tipi di carattere, colori, ecc.);
  • Degli allegati binari (eseguibili, immagini, file audio o video, ecc.), eventualmente composti da più parti;
MME usa delle direttive d'intestazione specifiche per descrivere il formato utilizzato nel corpo di un messaggio, per permettere al client di messaggeria di poterlo interpretare correttamente :
  • MIME-Version: si tratta della versione dello standard MIME usata nel messaggio. Attualmente esiste solo la versione 1.0.
  • Content-type: descrive il tipo e i sotto-tipi di dati. Può avere un parametro « charset », separato da un punto virtuale, che definisce il gioco di caretteri usati.
  • 'Content-Transfer-Encoding : definisce la decodifica usata nel corpo del messaggio.
  • Content-ID: rappresenta un identificativo unico di parte del messaggio.
  • Content-Description: fornisce delle informazioni complementari sul contenuto del messaggio.
  • Content-Disposition: definisce i parametri dell'allegato, soprattutto il nome associato al file attraverso l'attributo filename.

Principali Types MIME

Il type MIME, usato nell'intestazione Content-Type , è utilizzato per typare i documenti allegati ad un messaggio. Un type MIME è costituito nel modo seguente :
Content-type: type_mime_principale/sotto_type_mime
Ad esempio, un'immagine GIF avrà il seguente type MIME :
Content-type: immagine/gif
I principali types di dati, detti talvolta, « types di dati discreti », sono i seguenti :
  • text: dati testuali leggibili. text/rfc822 [RFC822] ; text/plain [RFC2646] ; text/html [RFC2854] .
  • image: dati binari che rappresentano delle immagini digitali image/jpeg ; image/gif ; image/png.
  • audio: dati digitali sonori audio/basic ; audio/wav
  • video : dati video : video/mpeg
  • application : altri dati binari. application/octet-stream ; application/pdf
Il type MIME è anche usato nel Web, per typare i documenti trasferiti dal protocollo HTTP. Al momento di una transazione tra un server web e un navigatore internet, il server web invia in primo luogo il type MIME del file inviato al navigatore, affinché quest'ultimo possa sapere come visualizzare il documento.

Formati di codifica

Per trasferire dei dati binari, MIME propone cinque formati di codifica utilizzabili nell'intestazione Transfer-encoding :
  • 7bit : formato testo codificato su 7 bits (per i messaggi non accentuati) ;
  • 8bit : formato test 8 bits ;
  • quoted-printable : formato Quoted-Printable, raccomandato per i messaggi che usato un alfabeto codificato su più di 7 bits (ad esempio presenza di accenti) ;
  • base64 : formato Base 64, raccomandato per l'invio di file binari in allegato ;
  • binary : formato binario, sconsigliato.
MIME, essendo molto aperto, pemette di usare altri formati di codificazione come i seguenti :

Decodificazione dell'intestazione

L'uso dell'intestazione Transfer-encoding permette di precisare un formato di decodificazione per il corpo del messaggio, ma non risolve il problema della decodificazione delle intestazioni stesse (ad esempio l'oggetto del messaggio).
Così, per permettere di decodificare le intestazioni con degli alfabeti di più di 7 bits, e permettere ad esempio d'avere un oggetto della mail accentuato, lo standard MIME propone il formato seguente :
=?charset?decodificazione?risultato?=
  • charset rappresenta il gioco di carattere usato,
  • decodificazione definisce la decodificazione voluta con due valori possibili :
    • Q per quoted-printable
    • B per base64
  • risultato: testo codificato secondo il metodo specifico.
Ecco qui sotto un esempio di codificazione in Quoted-Printable con « Kioskea » come oggetto del messaggio :
Subject: Comment =?ISO-8859-1?Q?=E7a_marche_=3F?=

Messaggi compositi

Attraverso il type MIME « multipart » lo standard MIME permette di definire dei messaggi compositi, cioè dei messaggi con più allegati, eventualmente inclusi.
Per fare questo, MIME permette di definire un separatore detto boundary. Si tratta di una catena arbitraria definita nell'attributo dell'intestazione Content-type :
Content-Type: multipart/mixed;
 boundary="------------020005090303070203010601" 
Ogni separatore delimita un contenuto cominciando dalle intestazioni Content-Type e Content-Encoding. E' essenziale che il valore di questo separatore non esista nel contenuto del messaggio.
Esistono differenti tipi di separatore :
  • multipart/mixed definisce una lista di più elementi
  • multipart/alternative definisce differenti alternative per una stessa informazione, ad esempio un messaggio in formato testo e HTML. Se il client di messaggeria è capace e configurato per la visualizzazione con un formato, visualizzerà la versione HTML, altrimenti userà la versione testo.
  • multipart/parallel definisce dei dati presentati nello stesso momento (suono e immagine ad esempio).
  • multipart/signed definisce una firma digitale per i dati del messaggio
  • multipart/related definisce delle informazioni legate fra loro

Liste dei types MIME

I types MIME sono normalizzati da un organismo chiamatoIANA (Internet Assigned Numbers Authority). Ecco una lista non esaustiva dei types MIME più diffusi
Type MIME Type di file Estensione associata
application/atom+xml File di formato ATOM atom
application/iges FileCAS iges
application/javascript File Javascript js
application/dxf File AutoCAD dxf
application/mp4 File MPEG4 mp4
application/iges Formato di scambio CAO IGES igs,iges
application/octet-stream File binari non interpretati bin
application/msword File da lavoro in formato Microsoft Word doc
application/pdf File Adobe Acrobat pdf
application/postscript File PostScript ai,eps,ps
application/rtf Formato di testo arricchito rtf
application/sgml File SGML sgml
application/vnd.ms-excel File tabellari in formato Microsoft Excel xls
application/vnd.ms-powerpoint File presentazione in formato Microsoft Powerpoint ppt
application/xml fichier XML xml
application/x-tar File compressi tar tar
application/zip File compressi ZIP man
audio/basic File audio basici au,snd
audio/mpeg File audio MPEG mpg,mp3
audio/mp4 File audio MPEG-4 mp4
audio/x-aiff File audio AIFF aif,aiff,aifc
audio/x-wav File audio Wave wav
image/gif Immagini gif man
image/jpeg Immagini JPEG jpg,jpeg,jpe
image/png Immagini PNG png
image/tiff Immagini Tiff tiff,tif
image/x-portable-bitmap File Bitmap PBM pbm
image/x-portable-graymap File Graymap PBM pgm
image/x-portable-pixmap File Pixmap PBM ppm
multipart/x-zip File archivio zip zip
multipart/x-gzip File archivio GNU zip gz,gzip
text/css Fogli di stile css
text/csv File di testo con separazione dei valori csv
text/html File HTML htm,html
text/plain File di testo senza formattazione txt,g,h,c,cc,hh,m,f90
text/richtext File di testo arricchiti rtx
text/rtf File di testo in formato Rich Text Format rtf
text/tab-separated-value File di testo con separazione di valori tsv
text/xml Files XML xml
video/h264 Video H.264 h264
video/dv Video in formato DV dv
video/mpeg Video MPEG mpeg,mpg,mpe
video/quicktime Video QuickTime qt,mov
video/msvideo Video Microsoft Windows avi

Ulteriori informazioni

  • Lista ufficiale dei types MIME (IANA - )
  • RFC principali :
    • RFC 2045: MIME Part One: Format of Internet Message Bodies
    • RFC 2046: MIME Part Two: Media Types
    • RFC 2047: MIME Part Three: Message Header Extensions for Non-ASCII Text
    • RFC 2048: MIME Part Four: Registration Procedures
    • RFC 2049: MIME Part Five: Conformance Criteria and Examples
  • RFC annexes :
    • RFC 1524: The formal description of mailcap files. Mailcap files describe how to handle media types.
    • RFC 2015: MIME Security with Pretty Good Privacy (PGP).
    • RFC 2110: MIME E-mail Encapsulation of Aggregate Documents, such as HTML (MHTML).
    • RFC 2111: Content-ID and Message-ID Uniform Resource Locators.
    • RFC 2112: The MIME Multipart/Related Content-type.
    • RFC 2183: Defines the syntax and sematics of the "Content-Disposition" header to convey presentational information.
    • RFC 2184: MIME Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations

Nessun commento:

Posta un commento