본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

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 타입을 알려 준다

전자우편 프로토콜과 구분

편집 원본 편집
이름 하는 일
SMTP 작성한 메일을 받는 사람의 메일 서버로 전송한다(TCP 25)
POP(POP3) 메일 서버에 도착한 메일을 사용자 컴퓨터로 가져온다(TCP 110)
IMAP 메일을 서버에 둔 채 읽고 관리한다(TCP 143)
MIME 메일에 멀티미디어·첨부를 담는 형식을 정한다
S/MIME MIME 메시지에 전자서명과 암호화를 더한 보안 규약

메일을 패킷으로 나누고 주소를 해석해 경로를 정하는 일은 전자우편 규약이 아니라 TCP/IP 의 몫이다.