RFC 2045 opisuje strukturę MIME, w tym nagłówki określające typ i kodowanie każdej części wiadomości.
Rola RFC 2045 w strukturze MIME
RFC 2045 jest pierwszą częścią specyfikacji MIME, czyli standardu używanego do opisywania i przenoszenia treści innych niż prosty tekst ASCII w wiadomościach poczty elektronicznej. Dokument definiuje podstawowe nagłówki MIME, sposób deklarowania typu danych oraz reguły kodowania treści przed przekazaniem jej przez transport pocztowy. Sam RFC 2045 nie opisuje całego MIME: powiązane elementy określają między innymi RFC 2046 dotyczący typów nośnika, RFC 2047 dotyczący kodowania tekstu w nagłówkach, RFC 2048 dotyczący procedur rejestracji oraz RFC 2049 zawierający przykłady i kryteria zgodności.
Wiadomość MIME składa się z nagłówków oraz treści oddzielonych pustą linią. Nagłówki informują odbiorcę, jak interpretować znajdujące się dalej dane. Najważniejsze dla RFC 2045 są pola MIME-Version, Content-Type, Content-Transfer-Encoding, Content-ID i Content-Description. Typowa wiadomość tekstowa może zawierać na przykład nagłówek MIME-Version: 1.0, pole Content-Type: text/plain; charset=UTF-8 oraz wskazanie sposobu przekazania bajtów w polu Content-Transfer-Encoding.
Content-Type i podział wiadomości na części
Pole Content-Type określa typ oraz podtyp danych, zapisane w formie type/subtype. Przykłady to text/plain dla zwykłego tekstu, text/html dla dokumentu HTML, image/jpeg dla obrazu JPEG oraz application/pdf dla dokumentu PDF. Do typu można dołączyć parametry. W przypadku tekstu parametr charset określa zestaw znaków, natomiast przy wiadomości wieloczęściowej parametr boundary wskazuje ciąg używany do rozdzielania poszczególnych fragmentów.
Typ multipart pozwala umieścić w jednej wiadomości kilka niezależnych części. Przykładowo multipart/mixed może zawierać tekst oraz załącznik, a multipart/alternative może przechowywać tę samą treść w wersji text/plain i text/html. Każda część ma własne nagłówki MIME i własne dane. Granica rozpoczynająca część jest zapisywana jako --boundary, a zakończenie całego komunikatu jako --boundary--. Wartość granicy nie powinna występować wewnątrz danych żadnej z części, ponieważ mogłaby zostać błędnie potraktowana jako separator.
Kodowanie danych w transporcie pocztowym
RFC 2045 definiuje pole Content-Transfer-Encoding, które opisuje reprezentację danych używaną podczas transportu. Wartość 7bit oznacza dane ograniczone do znaków ASCII, z liniami nieprzekraczającymi 998 znaków, przy czym zalecana maksymalna długość linii wynosi 78 znaków. Wartość 8bit dopuszcza oktety spoza ASCII, ale nadal wymaga zachowania ograniczeń dotyczących długości linii i nie jest przeznaczona do dowolnych danych binarnych. Wartość binary pozwala na dane binarne i długie linie, lecz wymaga transportu obsługującego taki sposób przekazania.
Dla plików binarnych często stosuje się kodowanie base64. Dzieli ono dane na grupy po trzy oktety i przedstawia je za pomocą czterech znaków, używając alfabetu 64 znaków oraz znaku = jako dopełnienia. Kodowanie zwiększa rozmiar danych, dlatego załącznik po dekodowaniu może być mniejszy niż jego reprezentacja w wiadomości. Dla tekstu zawierającego głównie znaki ASCII, lecz wymagającego bezpiecznego przeniesienia znaków specjalnych, stosuje się quoted-printable. W tym formacie znak równości rozpoczyna zapis szesnastkowy, na przykład =C4, a miękki koniec linii pozwala podzielić długą linię bez dodawania rzeczywistego znaku końca w odtwarzanym tekście.
Znaczenie MIME podczas diagnozy laptopa i komputera
Błędna interpretacja struktury MIME może powodować wyświetlanie pustej wiadomości, pojawienie się surowych fragmentów --boundary, brak załącznika albo pokazanie treści HTML jako zwykłego tekstu. Przy diagnostyce warto sprawdzić, czy każda część ma poprawny nagłówek Content-Type, czy parametr boundary jest identyczny w nagłówku nadrzędnym i separatorach oraz czy zastosowane kodowanie odpowiada rzeczywistym danym. Niezgodność między deklaracją base64 a zawartością, usunięcie znaków końca linii albo obcięcie końcowego dopełnienia może uniemożliwić prawidłowe odtworzenie pliku.
Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w ramach diagnostyki problemów z oprogramowaniem można również sprawdzić konfigurację klienta pocztowego, zapis wiadomości oraz sposób obsługi załączników MIME. Taka analiza pozwala odróżnić uszkodzenie samego pliku od błędu dekodowania, niepełnego pobrania wiadomości lub nieprawidłowego tworzenia struktury przez program pocztowy.