270 likes | 448 Views
Michał Rajkowski Jan Dudziec. MIME Multipurpose Internet Mail Extensions RFC 1521. Plan prezentacji. Definicja MIME MIME, a inne RFC Format wiadomości Pola nagłówka Typy zawartości Podsumowanie. MIME - Multipurpose Internet Mail Extensions - Standard poczty elektronicznej
E N D
Michał Rajkowski Jan Dudziec MIMEMultipurpose Internet Mail ExtensionsRFC 1521
Plan prezentacji • Definicja MIME • MIME, a inne RFC • Format wiadomości • Pola nagłówka • Typy zawartości • Podsumowanie RFC 1521 - MIME
MIME - Multipurpose Internet Mail Extensions - Standard poczty elektronicznej - Mechanizmy specyfikacji i opisu formatu zawartości wiadomości internetowych RFC 1521 Uzupełnia wcześniejsze publikacje i rozszerza standardy o mechanizmy pozwalające na przesyłanie różnych typów zawartości Definicja MIME RFC 1521 - MIME
RFC 822 – Standard opisujący format wiadomości internetowych (1982r.) Treść: - Protokół reprezentacji wiadomości - Specyfikacja nagłówka - Format i zawartość wiadomości – 7 bitowy kod ASCII Wady: - wiadomości tekstowe – brak formatowania (czcionek itp) - wiadomości nie tekstowe – odrzucane lub konwertowane na ASCII -> utrata informacji Wcześniejsze publikacje (1) RFC 1521 - MIME
RFC 1341 i RFC 1342 – pierwsze publikacje i definicje MIME RFC 1341 - MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describingthe Format of Internet MessageBodies RFC 1342 - Representation of Non-ASCII Textin Internet MessageHeaders RFC 1521 zostało wprowadzone, aby zastąpić RFC 1341, RFC 1342. Wcześniejsze publikacje (2) RFC 1521 - MIME
RFC 1521 • RFC 1521 - MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies • Zmiana formatu wiadomości • Opis mechanizmów pozwalających na przesyłanie obiektów różnego typu bez straty informacji • Zawartość specyfikacji: • Version Header Field • Content-Type Header Field • Content-Transfer-Encoding Header Field • Additional Content-Header Fields • Content-ID Header Field • Content-Description Header Field RFC 1521 - MIME
HEADER{ Format wiadomości MIME-version: 1.0 Content-type: multipart/mixed; boundary="frontier" This is a multi-part message in MIME format. --frontier Content-type: text/plain --frontier Content-type: application/octet-stream Content-transfer-encoding: base64 Pgh0bWw+CiAgPGhlYWQ+CiAgPC9oZWF kPgogIDxib2R5PgogICAgPHA+VGhpcyBpc yB0aGugYm9keSBvZiB0aGUgbWVzc2FnZ S48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg= --frontier-- BODYPART Bodypart header { Bodypart header { Body { RFC 1521 - MIME
MIME-Version Header Field • Nowe pole nagłówka • Określa numer wersji formatu zawartości wiadomości • Wartość dla standardu zgodnego z RFC1521: • Ogólna postać: • MIME-Version: 1.0 version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT RFC 1521 - MIME
Content-TypeHeader Field content := "Content-Type" ":" type "/" subtype *(";" parameter) type := "application" / "audio" / "image" / "message"/ "multipart" / "text" / "video" / extension-token extension-token := x-token / iana-token iana-token := <publiczny i zarejestrowany w IANA> x-token := < "X" -token or "x" -token> subtype := token parameter := attribute "=" value attribute := token value := token token := 1*<any (ASCII) CHAR except SPACE, CTLs, or tspecials> tspecials := "(" / ")" / "<" / ">" / "@" "," / ";" / ":" / "\" “<">"/" / "[" / "]" / "?" / "=" • Pole zdefiniowane po raz pierwszy w RFC 1049 • Określa typ danych zawartych w ciele wiadomości • Jest zbiorem parametrów • Parametry obowiązkowe:TYP i PODTYP • Typ- rodzaj zawartości: text,multipart,application, message, audio,video, image, experimental • Podtyp- np. format • Przykład: “image/jpg” RFC 1521 - MIME
Content-Transfer-EncodingHeader Field encoding := "Content-Transfer-Encoding" ":"mechanism • Nowo zdefiniowane pole • Wskazuje typ transformacji ciała wiadomości użyty na potrzeby transportu wiadomości • Domyślna wartość - “7bit” • Część nagłówka wiadomości i nagłówka ciała wiadomości mechanism := "7bit" "quoted-printable" "base64" "8bit" "binary" x-token Przykład: Content-Type: text/plain; charset=ISO-8859-1 Content-transfer-encoding: base64 RFC 1521 - MIME
“7bit”,”8bit”,”binary” => brak kodowania Content-Transfer-EncodingHeader Field Quoted-printable • Standardowo do przesyłania tekstu • Drukowalne znaki ASCII • Znaki o kodach >127-> 3 znaki • Przykład: • Ó - 243 (ISO-8859-2) => “=F3” Base64 • stosowany głownie do plików binarnych (grafika, dźwięk) • możliwy do zastosowania także dla zwykłego tekstu RFC 1521 - MIME
Content-Transfer-EncodingHeader Field The Base64 Alphabet RFC 1521 - MIME
Additonal Content-Header Fields • Optional Content-ID Header Field • Etykieta zawartości • Analogiczne wykorzystanie jak “Message-ID” • Obowiązkowy dla typu “message/external-body” • Optional Content-Description Header Field • Opisowe informacje • Standardowo w postaci US-ASCII, RFC-1522 posiada mechanizm pozwalający na korzystanie z innego kodowania niż US-ASCII • Przykład: Description := “Content-Description “:” *text RFC 1521 - MIME
Typy zawartosći • Text • Multipart • Message • Application • Image • Audio • Video • Experimental RFC 1521 - MIME
TEXT • Zasadniczo do przesyłania zawartości tekstowej • CHARSET - krytyczny parametr używany do zdefiniowania podtypów • Domyślnie - “text/plain;charset=us-ascii” • Zdefiniowane wartości charset: US-ASCII, ISO-8859-X Przykład: text-type := "text" "/" text-subtype [";" "charset" "=" charset] text-subtype := "plain" charset := "us-ascii"/ "iso-8859-1"/ "iso-8859-2"/ "iso-8859-3" / "iso-8859-4"/ "iso-8859-5"/ "iso-8859-6"/ "iso-8859-7" / "iso-8859-8" / "iso-8859-9" RFC 1521 - MIME
MULTIPART • Umożliwia przesyłanie kilku różnych typów danych w 1 wiadomości • Każda część to osobne “bodypart” z osobnym nagłówkiem • Enkapsulacja- każda część oddzielona granicami boundary := 0*69<bchars> bcharsnospace • W przypadku wystapienia średnika „:” - • Dozwolone kodowania- “7bit”, “8bit”, “binary” • Podtyp: “mixed” (podstawowy),“alternative”, “digest”, ”parallel” Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08jU534c0p RFC 1521 - MIME
MULTIPART-przykład From: Nathaniel Borenstein <nsb@bellcore.com> To: Ned Freed <ned@innosoft.com> Subject: Formatted text mail MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=boundary42 --boundary42 Content-Type: text/plain; charset=us-ascii ---TEKST niesformatowany---- --boundary42 Content-Type: text/richtext ---TEKST w fromacie richtext--- --boundary42 Content-Type: text/x-whatever --Oryginalna postać tekstu---- --boundary42-- RFC 1521 - MIME
MESSAGE • Dołączenie innej wiadomości • Możliwe podtypy: “rfc822”, “partial” , “external-body” • Wymaga kodowania “7bit”, “8bit”,”binary” • Message header: us-ascii (zawsze) • Partial – umożwilia przesyłanie duży obiektów podzielonych na części (łączenie po “content-id”) • External-body-obowiązkowy parametr “acces-type”Parametry opcjonalne:“expiration”, “size”,”permission”, “name”,”site”, “directory”,”mode”, “server”,”subject” RFC 1521 - MIME
MESSGE-przykład 1 X-Weird-Header-1: Foo From: Bill@host.com To: joe@otherhost.com Subject: Audio mail Message-ID: <id1@host.com> MIME-Version: 1.0 Content-type: message/partial; id="ABC@host.com"; number=1; total=2 X-Weird-Header-1: Bar X-Weird-Header-2: Hello Message-ID: <anotherid@foo.com> MIME-Version: 1.0 Content-type: audio/basic Content-transfer-encoding: base64 From: Bill@host.com To: joe@otherhost.com Subject: Audio mail MIME-Version: 1.0 Message-ID: <id2@host.com> Content-type: message/partial; id="ABC@host.com"; number=2; total=2 RFC 1521 - MIME
Message-przykład 2 From: Whomever To: Someone Subject: whatever MIME-Version: 1.0 Message-ID: <id1@host.com> Content-Type: multipart/alternative; boundary=42 Content-ID: <id001@guppylake.bellcore.com> --42 Content-Type: message/external-body; name="BodyFormats.ps"; site="thumper.bellcore.com"; access-type=ANON-FTP; directory="pub"; mode="image"; expiration="Fri, 14 Jun 1991 19:13:14 -0400 (EDT)" Content-type: application/postscript Content-ID: <id42@guppylake.bellcore.com> --42 Content-Type: message/external-body; access-type=mail-server server="listserv@bogus.bitnet"; expiration="Fri, 14 Jun 1991 19:13:14 -0400 (EDT)" Content-type: application/postscript Content-ID: <id42@guppylake.bellcore.com> get RFC-MIME.DOC --42-- RFC 1521 - MIME
APPLICATION • Przesyłanie danych nie zakwalifikowanych do pozostałych kategorii • Przetwarzanie zawartosci przed pokazaniem jej uzytkownikowi • Podtypy: “octet-stream”(dane binarne), “Postscript”(program napisany w jezyku Postscript/Postscript2 – Adobe Systems Inc.) • “octet-stream” - parametry: “type”, “padding” • Kolejne typy mają być zdefiniowane w przyszłości RFC 1521 - MIME
IMAGE, AUDIO, VIDEO IMAGE • Do przesyłania obrazów • Podtyp- format obrazu: “jpeg”, “gif” itp. AUDIO • Do przesyłania obrazów • Podstawowy podtyp “basic”- kodowanie 8 bitowe [PCM] VIDEO • Do przesyłania plików video (dopuszczalnie z dźwiękiem) • Podtyp- format video: “mpeg” RFC 1521 - MIME
EXPERIMENTAL • Eksperymentalne podtypy • Zaczynają się na “X-” • Formaty bez jednoznacznej i publicznej definicji • Prywatne wartości • Odradza się tworzenie nowych typów – powinno się stosować rozszerzanie już istniejących RFC 1521 - MIME
Zasady korzystania z MIME Agent pocztowy używający MIME musi: • Zawsze tworzyć pole “"MIME-Version: 1.0"” • Rozpoznawać “Content-Transfer-Encoding” i przeprowadzić odpowiednie dekodowanie • Rozpoznawać i odpowiednio prezentować dane inne niż “text” • “Text”- wyświetlać za pomocą US-ASCII, jak nie zna podtypu to prezentować nieprzetworzone dane, rozpoznawać “charset”, rozpoznawać “ISO-8859-X” • “Message”- rozpoznawać podtyp “822” • “Multipart”- rozpoznawać podtyp “mixed” i “alternative” • “Application”- rozpoznawać podtyp i umieszczać zawartość w pliku RFC 1521 - MIME
Podsumanie • MIME jest powszechnie stosowanym standardem do przesyłania i przetwarzania wiadomości • RFC 1521 jest pierwszym i podstawowym dokumentem opisującym przesyłanie różnych typów wiadomości • Dalsze wersje: • RFC 2045- Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies • RFC 2046-Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types • RFC 2047- MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text • RFC 2048-Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures • RFC 2049-Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples RFC 1521 - MIME
Pytania na kolokwium • W przypadku stosowania Quoted-printable, co się dzieje gdy mamy znak o wartości większej od 127 • Nie jest on przesyłany • Jest kodowany za pomocą 3 znaków • Ani a), ani b) • Co jest typem podstawowym dla Multipart? • Parallel • Mixed • Digest • Czy możemy ustawić (dla typu zawartości Message) message header inny niż us-ascii? • Tak, jeżeli użyjemy kodowania 7 bit • Tak, jeżeli użyjemy kodowania 8bit lub binary • Ani a), ani b) RFC 1521 - MIME
Dziękujemy za uwagę. RFC 1521 - MIME