2016-10-20 2 views
0

IMAP의 RFC :IMAP 프로토콜은 멀티 파트 본문에서 바이너리를 지원합니까?

8 비트 이진 메일 텍스트는
[MIME-IMB] 콘텐츠 전송 인코딩의 사용을 통해 지원된다. IMAP4rev1 구현은
리터럴에서 8 비트 또는 멀티 옥텟 문자를 전송하지만 [CHARSET]이 식별 될 때만
을 사용해야합니다.

BINARY 본문 인코딩이 정의되어 있지만 인코딩되지 않은 이진 문자열은 허용되지 않습니다. "2 진. 자열"은 NUL.자를 가진 문자열입니다. 구현시 데이터를 전송하기 전에 바이너리 데이터를텍스트 형식 (예 : BASE64)으로 인코딩해야합니다. 또한 CTL 문자가 과도한 문자열은 이진으로 간주 될 수 있습니다.

  1. 구현이 RFC는 "BINARY 몸 인코딩이 정의"라는 이유 64 기수로 변환해야합니다. 데이터가 base64 (또는 다른 형식)로 전송 될 때마다 효과적으로 바이너리가 지원되지 않기 때문에. 아니면 내가 잘못 읽은거야?

  2. IMAP는 MIME 멀티 파트를 지원합니다.이 파트는 이진 데이터를 가질 수 있습니까? 그것은 content-transfer-encoding인가? 내가 IMAP/HTTP에 새로운 오전

,이 질문에 대한 이유는, 내가 HTTP 서버에서 HTTP 및 IMAP을 지원하는 서버를 개발하는 내용으로, 바이너리 (거대한 다중 데이터의 데이터를 받아 봐해야 바이너리로 -transfer-encoding), FETCH는 IMAP에서 수행 될 수 있습니다. 문제는 데이터를 구문 분석하고 IMAP가 바이너리를 지원하지 않으면 multipart 내부의 각 부분을 base64로 변환해야합니다. 나는 심각한 성능 문제라고 생각합니다.

답변

1

대답은 불행히도 "아마도"입니다.

MIME RFC는 바이너리를 지원하지만 IMAP RFC는 특별히 NULL 문자를 보낼 수 없습니다. 텍스트 기반 파서, 특히 NULL로 끝나는 문자열의 의미를 가진 C로 작성된 파서의 경우 혼동을 일으킬 수 있기 때문입니다.

일부 IMAP 서버는 본문을 "bag of bag"으로 간주하기 때문에 어떤 인코딩이 실제로 다시 인코딩되는지는 의심 스럽습니다. 따라서 전체 메시지를 묻는다면, 그 메시지의 내용을 알게 될 것입니다.

클라이언트가 MIME-Binary를 처리 할 수 ​​있다면 아마 괜찮을 것입니다.

BINARY를 올바르게 지원하는 IMAP 확장 프로그램에는 RFC 3516이 있지만 널리 배포되지는 않습니다.

보조 노트 : 왜 Multipart MIME을 사용하고 있습니까? 그것은 HTTP에 대한 이상한 구현 선택입니다.

+0

한편 전체 BINARY를 지원하는 SMTP 서버는 드물기 때문에 메일 시스템에 실제로 Binary 메시지를 가져 오는 것은 어렵습니다. – Max