MIME 메시지

MIME 헤더

MIME 메시지는 데이터와 메타 데이터로 구성됩니다. MIME 메타 데이터는 HTTP 양식 헤더와 MIME 경계 디리미터로 구성됩니다. 각 헤더는 행에서 콜론 분리 이름-값 쌍입니다. ASCII 순서 <CR><LF>는 회선을 종료합니다. 헤더 블록이라고 하는 이 헤더 순서는 빈 줄로 종료됩니다(<CR><LF><CR><LF>). 이 HTTP 양식 다음에 오는 헤더는 MIME 문서에 표시될 수 있습니다. 여러 가지의 표준 MIME 헤더에 대해서는 MIME 표준 헤더 필드에 설명되어 있습니다.

Content-Type

MIME 구문 분석기가 존재해야 하는 유일한 구문 분석기는 Content-Type 헤더입니다. 이 헤더는 메시지에서 데이터의 유형을 지정합니다. Content-Type 값이 "multipart"로 시작하면 메시지는 멀티파트 메시지 MIME입니다. 멀티파트 메시지의 경우 Content-Type에는 메시지 파트를 구분하기 위해 사용하는 텍스트를 제공하는 경계 속성도 포함해야 합니다. 각각의 개별 MIME 파트에는 각 파트에서 데이터 유형을 지정하는 고유한 Content-Type 필드가 있습니다. 이 필드 역시 멀티파트일 수 있으므로 멀티파트 메시지의 중첩이 허용됩니다. 다른 Content-Type 값을 가지고 있는 MIME 파트는 BLOB 데이터로 핸들링됩니다.

MIME 문서가 HTTP를 통해 송신될 경우, Content-Type 헤더가 MIME 메시지 본문이 아닌 HTTP 헤더 블록에 표시됩니다. 이러한 이유로, 브로커는 Content-Type 헤더의 값을 논리 트리의 Properties 폴더에서 ContentType 등록 정보로 관리합니다. 이로써 MIME 구문 분석기는 HTTP를 통해 수신된 MIME 문서의 Content-Type 값을 확보할 수 있습니다. 새 MIME 트리를 작성하거나 Content-Type 값을 수정해야 하는 경우. MIME 도메인의 ContentType 등록 정보를 사용하여 Content-Type 값을 설정하십시오. Content-Type 값을 MIME 트리나 HTTP 트리에 직접 설정하면 값이 무시되거나 일관되지 않게 사용될 수 있습니다. 다음 ESQL은 브로커 ContentType 등록 정보를 설정하는 방법의 예입니다.
SET OutputRoot.Properties.ContentType = 'text/plain';

구문 분석

MIME 도메인은 전체 MIME 스펙을 강요하지 않습니다. 이에 따라 다른 응용프로그램에서 올바르지 않을 수 있는 메시지에 대해 작업할 수 있습니다. 예를 들어, MIME 구문 분석기는 MIME-Version 헤더를 강요하지 않습니다. MIME 구문 분석기는 다음과 같은 제한조건을 강요합니다.
  • MIME 헤더를 적절하게 형식화해야 합니다. 이는 다음을 의미합니다.
    • 각 헤더는 자체 행에서 ASCII 순서 <CR><LF>로 종료되는 콜론으로 분리되는 이름-값 쌍입니다.
    • 헤더 행은 7비트 ASCII를 사용해야 합니다.
    • 세미콜론을 사용하여 매개변수를 분리하십시오.
      Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml
    • 헤더에는 괄호로 묶인 주석이 있을 수 있습니다. 예를 들면 다음과 같습니다.
      MIME-Version: 1.0 (Generated by XYZ)
  • 공백으로 시작하는 행은 이전 행의 연속으로 처리됩니다. 이로서 하나의 긴 행을 여러 행 사이에 분할할 수 있습니다.
  • 헤더 블록에서 두 개 이상의 헤더가 같은 이름을 가지고 있으면 해당 값들이 쉼표로 분리되는 목록으로 병합됩니다.
  • 최상위 레벨 MIME Content-Type 헤더는 사용 가능해야 합니다. 헤더에서는 대소문자 구분이 없습니다. 전송 방식이 HTTP이면, HTTP 헤더의 Content-Type 값이 최상위 레벨 Content-Type으로 사용됩니다. 전송 방식이 HTTP가 아니면, MIME 메시지의 초기 헤더 블록에 Content-Type이 표시되어야 합니다.
  • Content-Type 값은 매체 유형과 / 문자 및 부속 유형 순으로 구성됩니다. 예로 text/xmlmultipart/related를 들 수 있습니다. 구문 분석기는 부속 유형의 유효성을 검증하지 않습니다. 이 값 다음에는 세미콜론으로 분리되는 하나 이상의 매개변수가 올 수 있습니다.
  • 메시지의 매체 유형이 멀티파트일 경우 경계 속성은 별도의 MIME 파트를 구분하는 데 사용되는 텍스트를 제공해야 합니다.
  • 각각의 개별 MIME 파트에 고유한 Content-Type 헤더가 있을 수 있습니다. Part 헤더에 멀티파트의 매체 유형이 있을 수 있으므로, 멀티파트 메시지의 중첩이 허용됩니다. 이 경우 올바른 경계 속성을 제공해야 하므로 해당 값이 이전에 메시지에서 정의한 값과 달라야 합니다. 다른 Content-Type 값을 가지고 있는 MIME 파트는 BLOB 데이터로 핸들링됩니다.
  • MIME 멀티파트 경계 디리미터는 7비트 ASCII로 표시됩니다. 경계 디리미터는 하이픈 쌍으로 시작하고 뒤에 경계 문자열이 있는 한 행으로 구성됩니다. 이 순서는 MIME 메시지 내에서 경계로서가 아닌 다른 지점에서 발생하면 안됩니다. MIME 종료 디리미터는 하이픈 쌍, MIME 경계 문자열, 다시 하이픈 쌍 순으로 구성됩니다. 모든 디리미터 행은 ASCII 순서 <CR><LF>로 끝나야 합니다. 구분된 메시지 예는 다음과 같습니다.
    --MIME_boundary
    message data
    --MIME_boundary
    message data
    --MIME_boundary--
    여기서 MIME_boundary는 경계 디리미터 문자열이며 message data는 메시지 데이터를 표시합니다.
  • MIME 매체 유형 "message"는 지원되지 않으므로 런타임 시 오류가 발생합니다.
  • 전문 데이터(초기 MIME 헤더 블록과 첫 번째 경계 디리미터 사이의 텍스트)나 후문 데이터(최종 경계 디리미터 이후의 텍스트)는 논리 트리에서 값 전용 요소로 저장됩니다. 전문 데이터 및 후문 데이터는 각각 Parts 노드의 첫 번째 및 마지막 하위 요소로만 표시됩니다.
  • MIME 구문 분석기는 요청시 구문 분석을 지원하지 않으므로 구문 분석 타이밍 등록 정보를 무시합니다. 구문 분석기는 메시지 모델에 대해 MIME 메시지의 유효성을 검증하지 않으므로 Message Brokers Toolkit 유효성 검증 등록 정보를 무시합니다.

멀티파트 MIME의 특수 경우

MIME 구문 분석기는 기본적으로 멀티파트 MIME 메시지에 사용하기 위한 것입니다. 그러나 구문 분석기는 일부 특수 경우도 핸들링합니다.
  • 단 하나의 파트만 가지고 있는 멀티파트 MIME. MIME 파트에 대한 논리 트리는 Content-Type 및 기타 정보를 일반적인 방식으로 저장하지만 첨부에 해당되는 Data 요소는 비어 있습니다.
  • 단일 파트 MIME. 단일 파트 MIME의 경우 논리 트리에는 Parts 하위 요소가 없습니다. MIME 트리의 마지막 하위 요소는 Data 요소입니다. Data 요소는 메시지 데이터를 포함하는 BLOB의 상위 요소입니다.
  • 컨텐츠가 없는 MIME Parts.

S/MIME(Secure MIME)

S/MIME은 보안 전자 우편을 송신하기 위한 표준입니다. S/MIME에는 메시지를 암호화하는 데 사용되는 알고리즘을 정의하는 매개변수 protocolmicalg와 함께 multipart/signed의 외곽 레벨 Content-Type이 있습니다. 하나 이상의 MIME 파트는 인코드된 컨텐츠를 가질 수 있습니다. 이 파트들은 application/pkcs7-signature와 같은 Content-Type 값과 base64의 Content-Transfer-Encoding 값을 가지고 있습니다. MIME 도메인은 메시지가 실제로 부호되었는지 여부를 검증하거나 해석하려고 하지 않습니다.

관련 개념
MIME 트리 세부사항
논리적 트리 구조
메시지 모델링 개념
관련 태스크
메시지 본문 컨텐츠 가공
관련 참조
MIME 표준 헤더 필드
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac30080_