MIME
더 많은 작업
MIME(Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장)은 원래 영문 텍스트만 나르도록 만들어진 인터넷 전자우편에 한글 같은 다른 문자, 이미지·소리·동영상 같은 멀티미디어, 첨부 파일을 실어 보낼 수 있도록 메시지의 형식과 내용 유형을 표시하는 규약이다.
초기 전자우편 형식(RFC 822)과 SMTP는 7비트 ASCII 텍스트만 다루었다. MIME 은 1992년 RFC 1341 로 처음 나왔고 지금은 RFC 2045~2049 가 기준이다. 메시지 헤더에 내용이 어떤 종류의 자료인지(Content-Type)와 어떻게 인코딩했는지(Content-Transfer-Encoding)를 적어, 받는 쪽 프로그램이 그 자료를 알맞게 풀어 보여 주거나 실행할 수 있게 한다.
MIME 은 메일을 보내거나 가져오는 프로토콜이 아니다. 메일 본문을 어떤 형식으로 담을지 정하는 규약이고, 전송은 SMTP, 수신함에서 가져오기는 POP·IMAP 이 맡는다 → 이메일 프로토콜
| 헤더 | 뜻 | 예 |
|---|---|---|
| MIME-Version | MIME 형식을 따른 메시지임을 표시 | MIME-Version: 1.0
|
| Content-Type | 내용의 유형/세부 유형과 문자 집합 | text/html; charset=UTF-8
|
| Content-Transfer-Encoding | 8비트·이진 자료를 7비트 텍스트로 바꾼 방식 | base64, quoted-printable
|
| Content-Disposition | 본문에 바로 보일지, 첨부 파일인지 | attachment; filename="a.pdf"
|
이진 자료는 Base64 로 바꿔 텍스트로 싣는다. 본문과 여러 첨부를 한 메일에 담을 때는 multipart/mixed 로 경계 문자열(boundary)을 두고 나눈다.
유형/세부 유형 꼴로 쓴다.
- text/plain, text/html
- image/jpeg, image/png, image/gif
- audio/mpeg, video/mp4
- application/pdf, application/octet-stream(임의의 이진 자료)
- multipart/mixed, multipart/alternative
MIME 타입은 전자우편 밖으로 퍼져 웹에서도 쓴다. 웹 서버는 응답 헤더의 Content-Type 으로 보내는 파일이 무엇인지 알려 주고, 웹 브라우저는 이 MIME 타입을 보고 직접 표시할지, 브라우저가 지원하지 않는 멀티미디어 파일이면 그것을 처리하는 프로그램(헬퍼 애플리케이션·플러그인)을 불러 실행할지를 정한다. 그래서 MIME 을 "웹 브라우저가 지원하지 않는 각종 멀티미디어 파일의 내용을 확인하고 실행해 주는 규약" 으로 설명하기도 한다.
- 서버 설정에서 확장자와 MIME 타입을 짝짓는다(아파치의
AddType) → 리눅스 httpd.conf - 리눅스 file 명령의
--mime옵션은 파일 내용을 보고 MIME 타입을 알려 준다