메일 메시지 포맷
- 전자메일을 보낼 때 주변 정보가 포함된 헤더가 메시지 몸체 앞에 오게 된다.
- 주변 정보는 일련의 헤더 라인에 포함되는데 RFC 5322에 정의되어 있다.
- RFC 5322는 메일 헤더 라인에 대한 정확한 포맷과 그 의미에 대해 해석을 기술
- RFC 5322는 메일 헤더 라인에 대한 정확한 포맷과 그 의미에 대해 해석을 기술
- 헤더라인과 메시지 몸체는 빈 줄(CRLF)로 분리됨
- 주변 정보는 일련의 헤더 라인에 포함되는데 RFC 5322에 정의되어 있다.
- 각 헤더 라인은 키워드, 콜론 값의 순서로 구성되고, 읽을 수 있는 텍스트를 포함
- 키워드 중엔 반드시 필요한 것과 선택 사항이 있다.
- 반드시 필요한 키워드 →
From:
헤더 라인과To:
헤더 라인 - 선택 사항 키워드 →
Subject:
헤더 등
- 반드시 필요한 키워드 →
- 키워드 중엔 반드시 필요한 것과 선택 사항이 있다.
- 이러한 명령어는 SMTP 명령과는 다르다.
From
To과
같은 공통 단어가 있긴 함- 메일 메시지 포맷의
From
To
→ 메일 메시지 자체의 일부 - SMTP의
From
To
→ SMTP 핸드셰이킹 프로토콜의 일부
일반 메일 메시지 헤더 포맷 구성
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life.
- 메시지 헤더 다음에 빈 줄이 이어짐
- 그다음 메시지 몸체(ASCII 문자)가 나옴
메일 접속 프로토콜
메일 서버가 자신의 로컬 PC에 있지 않은 이유
- 메일 서버가 호스트에 있는 경우
- 수신 호스트는 전자 메일을 수신하기 위해 항상 켜져 있고, 인터넷에 연결되어야 한다.
← 전자 메일은 언제든 도착할 수 있어야 하기 때문 - 메일 서버는 메일박스를 관리하고 SMTP의 클라이언트와 서버 측 모두를 수행한다.
- 수신 호스트는 전자 메일을 수신하기 위해 항상 켜져 있고, 인터넷에 연결되어야 한다.
- 대신 일반 사용자는 로컬 호스트에서 사용자 에이전트를 수행하고,
- 늘 켜져 있는 공유 메일 서버에 저장된 메일박스에 접근한다.
- 메일 서버는 보통 사용자들과 공유한다.
전자메일 메시지 전송의 두 단계 절차
- 송신자의 사용자 에이전트는 송신자의 메일 서버로 직접 대화하지 않는다.
과정
- 송신자 사용자 에이전트는 자신의 메일 서버로 SMTP 또는 HTTP를 이용해 보냄
- 송신자의 메일 서버는 SMTP를 사용하여 수신자 메일 서버로 메시지를 중계
- 이때 SMTP는 클라이언트 SMTP이다.
전송 절차가 두 단계인 이유
- 송신자의 메일 서버를 통해 중계하지 않으면,
송신자의 사용자 에이전트는 목적지 메일 서버에 도달할 수 없기 때문 - 송신자는 전자메일을 자신의 메일 서버에 먼저 저장하고,
그 메시지를 수신자의 메일 서버로 반복해서 보낸다.- 반복해서 보내는 것은 수신자의 메일 서버가 동작할 때까지 반복한다.
수신자가 자신의 ISP 내부의 메일 서버에 있는 메시지를 얻는 법
- 수신자의 사용자 에이전트는 메시지를 얻기 위해 SMTP를 사용할 수 없다.
← SMTP는 Push 프로토콜이고, 메시지를 얻는 것은 Pull 동작이기 때문 - 메일 서버로부터 전자 메일을 확인하는 것은 대표적으로 2가지가 존재
- 2가지 방법 모두 수신자의 메일 서버에 의해 유지되는 폴더를 관리
- 수신자는 자신의 메시지를 자신이 생성한 폴더로 이동/삭제/표기할 수 있다.
HTTP를 사용하는 방법
- 수신자가 웹 기반 전자메일이나, 스마트폰 앱을 사용하고 있는 경우 가능
- 수신자의 메일 서버는 송신자 메일 서버와 통신하기 위해 2가지 인터페이스를 가져야 함
- HTTP 인터페이스와 SMTP 인터페이스
인터넷 메일 접근 프로토콜(IMAP)을 사용하는 방법
- 마이크로소프트 아웃룩과 같은 전형적인 메일 클라이언트를 사용하는 것