Electronic Mail
3가지 주요 요소 :
- 사용자 에이전트(user agent)
- 메일 서버(mail server)
- SMTP(simple mail transfer protocol)
사용자 에이전트(UA)
- a.k.a 메일 리더
- 메일 메시지 작성, 편집, 읽기
- 예 : Outlook, Thunderbird, iPhone 메일 클라이언트
- 발신 및 수신 메시지는 서버에 저장됨
메일 서버
- 각 수신자들은 메일 서버 내에 메일 박스(mail box)를 가짐
- 메일 박스는 사용자에 대한 수신(incoming) 메일 메시지를 유지 관리
- 송신(outgoing) 메일 메시지의 메시지 큐(message queue)
SMTP protocol
- 인터넷 전자 우편을 위한 응용 계층 프로토콜
- 메일 서버들간에 메일 메시지 송수신을 위한 프로토콜
- client : sending mail server
- server : receiving mail server
SMTP RFC (5321)
- TCP를 사용하여 이메일 메시지를 신뢰성 있게 전송함(클라이언트에서 서버로 연결을 시작하며, 포트 25 사용)
- 직접 전송 : 발신 서버(클라이언트 역할)가 수신 서버로 전송
- 전송의 3가지 단계
- SMTP 핸드셰이킹
- SMTP 메시지 전송
- SMTP 종료
- 명령 / 응답 상호작용 (HTTP와 유사)
- commands : ASCII 텍스트
- 응답 : 상태 코드 및 문구
SMTP : 마지막 정리
- SMTP는 지속 연결을 사용
- SMTP는 메시지(헤더 & 바디)를 7-bit ASCII로 표현해야 함
- SMTP 서버는 메시지의 끝을 결정하기 위해 CRLF.CRLF를 사용
HTTP와 비교 :
- HTTP : pull 방식 (클라이언트가 서버에서 요청)
- SMTP : push 방식 (서버가 클라이언트로 전송)
- 두 프로토콜 모두 ASCII 명령 / 응답 상호작용과 상태 코드를 사용
- HTTP : 각 개체가 자체 응답 메시지에 캡슐화
- SMTP : 여러 객체가 multipart 메세지로 전송
Mail message format
SMTP : 이메일 메시지를 교환하는 프로토콜로, RFC 5321에서 정의됨 (HTTP가 RFC 7231로 정의된 것과 유사)
RFC 2822는 이메일 메시지 자체의 구문을 정의 (웹 문서가 HTML로 구문을 정의하는 것처럼)
헤더 라인 예시:
- To:
- From :
- Subject :
이러한 헤더 라인들은 이메일 본문 내의 영역에 포함되며, SMTP의 MAIL FROM : 및 RCPT TO : 명령과는 다름!
- Body : 이메일 메시지의 본문, ASCII 문자로만 구성됨
multimedia 확장
- MIME (Multipurpose Internet Mail Extension) : 멀티미디어 메일 확장, RFC 2045, 2056
- 메시지 헤더의 추가 라인은 MIME 콘텐츠 유형을 선언합니다.

MIME types
- Text
- 예시 하위 유형 : plain, html
- text/plain, text/html
- 예시 하위 유형 : plain, html
- Image
- 예시 하위 유형 : jpeg, gif
- image/gif, image/jpeg
- 예시 하위 유형 : jpeg, gif
- Audio
- 예시 하위 유형 : basic (8-bit mu-law encoded), 32kadpcm (32 kbps coding)
- Video
- 예시 하위 유형 : mpeg, quicktime
- video / mpeg
- 예시 하위 유형 : mpeg, quicktime
- Application
- 기타 데이터 : 독자가 "볼 수 있는" 형식으로 처리해야 하는 데이터
- 예시 하위 유형 : msword, octet-stream
- application / msword
멀티파트 유형
- HTTP는 각각의 객체들을 독립된 HTTP 응답 메시지로 전송합니다.
- SMTP는 모든 객체를 같은 메시지에 넣어 전송합니다.
- 멀티미디어 메시지가 하나 이상의 객체를 포함할 경우, `Content-type: multipart/mixed`를 사용합니다.
- 이는 수신 사용자 에이전트(UA)에게 메시지가 여러 객체를 가지고 있음을 알려줍니다.
- 수신 UA는 각 객체의 시작과 끝, 비ASCII 객체들의 인코딩, 각 메시지의 content-type을 결정하는 수단이 필요함
- 각 객체 사이에 경계(boundary) 문자를 위치시키고, 메시지의 각 객체 앞에 `Content-type:`과 `Content-Transfer-Encoding:` 헤더 라인을 위치시켜 수행
- 멀티미디어 메시지가 하나 이상의 객체를 포함할 경우, `Content-type: multipart/mixed`를 사용합니다.

메일 접근 프로토콜 (Mail Access Protocol)
- SMTP : 수신자의 서버로 메일 메시지를 전달하고 저정한다.
- 수신측 사용자 에이전트 (UA)는 메일 메시지를 얻기 위해 SMTP를 사용할 수 없습니다.
- SMTP는 푸시(push) 프로토콜이며, 메일 메시지를 얻는 것은 풀(pull) 동작입니다.
- 메일 접근 프로토콜 : 서버에서 메일을 검색하는 데 사용된다.
- POP : 우체국 프로토콜 (POST Office Protocol) [RFC 1939]
- 인증(에이전트 <--> 서버) 및 다운로드 기능을 제공
- IMAP : 인터넷 메일 접근 프로토콜(Internet Mail Access Protocol) [RFC 1730, RFC 3501]
- 더 많은 기능(더 복잡함)을 제공
- 서버에 저장된 메시지 조작 기능을 포함
- HTTP : Gmail, Hotmail, Yahoo! Mail 등에서 사용
- POP : 우체국 프로토콜 (POST Office Protocol) [RFC 1939]
POP3 protocol
- UA가 메일 서버와 포트 110번으로 TCP 연결
인증 단계
- 클라이언트 명령 :
- user : 사용자 이름 선언
- pass : 비밀번호 입력
- 서버 응답:
- +OK : 성공적인 인증
- -ERR : 오류 발생
거래 단계
- 클라이언트 명령 :
- list : 메세지 번호 목록
- retr : 메시지 번호로 메시지 검색
- dele : 메시지 삭제
- quir : 연결 종료
POP3 (추가 정보)
- 이전 예시는 "다운로드 후 삭제" 모드를 사용
- Bob이 클라이언트를 변경하면 이메일을 다시 읽을 수 없다.
- "다운로드 후 유지" 모드는 여러 클라이언트에서 메시지 복사본을 유지
- POP3는 세션 간 상태를 유지하지 않는다.
IMAP
- 모든 메시지를 한 곳(서버)에 보관
- 사용자가 메시지를 폴더로 조작할 수 있게 한다.
- IMAP은 세션 간 사용자 상태를 유지
- 폴더의 이름과 메시지 ID 및 폴더 이름 간의 매핑 정보를 저장
'Network' 카테고리의 다른 글
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 5장 P2P 파일 공유 (3) | 2024.10.12 |
|---|---|
| 컴퓨터 네트워킹 하향식 접근 - Chatper 2, 4장 DNS(Domain Name System) (2) | 2024.10.11 |
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 2장 Web and HTTP (5) | 2024.10.11 |
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 1장 응용 계층 프로토콜의 원칙 (6) | 2024.10.10 |
| 컴퓨터 네트워킹 하향식 접근 Chapter 1, 6장 공격받는 네트워크 (0) | 2024.10.10 |