호우동의 개발일지

Today :

article thumbnail
더보기
썸네일
전자메일 전송 절차의 2단계

메일 메시지 포맷

  • 전자메일을 보낼 때 주변 정보가 포함된 헤더가 메시지 몸체 앞에 오게 된다.
    • 주변 정보는 일련의 헤더 라인에 포함되는데 RFC 5322에 정의되어 있다.
      • RFC 5322는 메일 헤더 라인에 대한 정확한 포맷과 그 의미에 대해 해석을 기술

    • 헤더라인과 메시지 몸체는 빈 줄(CRLF)로 분리됨

  • 각 헤더 라인은 키워드, 콜론 값의 순서로 구성되고, 읽을 수 있는 텍스트를 포함
    • 키워드 중엔 반드시 필요한 것과 선택 사항이 있다.
      • 반드시 필요한 키워드 → 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의 클라이언트와 서버 측 모두를 수행한다.

  • 대신 일반 사용자는 로컬 호스트에서 사용자 에이전트를 수행하고,
  • 늘 켜져 있는 공유 메일 서버에 저장된 메일박스에 접근한다.
    • 메일 서버는 보통 사용자들과 공유한다.

 


전자메일 메시지 전송의 두 단계 절차

  • 송신자의 사용자 에이전트는 송신자의 메일 서버로 직접 대화하지 않는다.

 

과정

전자메일 전송 절차의 2단계
전자메일 전송 절차의 2단계

  1. 송신자 사용자 에이전트는 자신의 메일 서버로 SMTP 또는 HTTP를 이용해 보냄
  2. 송신자의 메일 서버는 SMTP를 사용하여 수신자 메일 서버로 메시지를 중계
    • 이때 SMTP는 클라이언트 SMTP이다.

 

전송 절차가 두 단계인 이유

  • 송신자의 메일 서버를 통해 중계하지 않으면,
    송신자의 사용자 에이전트는 목적지 메일 서버에 도달할 수 없기 때문
  • 송신자는 전자메일을 자신의 메일 서버에 먼저 저장하고,
    그 메시지를 수신자의 메일 서버로 반복해서 보낸다.
    • 반복해서 보내는 것은 수신자의 메일 서버가 동작할 때까지 반복한다.

 


수신자가 자신의 ISP 내부의 메일 서버에 있는 메시지를 얻는 법

  • 수신자의 사용자 에이전트는 메시지를 얻기 위해 SMTP를 사용할 수 없다.
    ← SMTP는 Push 프로토콜이고, 메시지를 얻는 것은 Pull 동작이기 때문

  • 메일 서버로부터 전자 메일을 확인하는 것은 대표적으로 2가지가 존재
    • 2가지 방법 모두 수신자의 메일 서버에 의해 유지되는 폴더를 관리
    • 수신자는 자신의 메시지를 자신이 생성한 폴더로 이동/삭제/표기할 수 있다.

 

HTTP를 사용하는 방법

  • 수신자가 웹 기반 전자메일이나, 스마트폰 앱을 사용하고 있는 경우 가능
  • 수신자의 메일 서버는 송신자 메일 서버와 통신하기 위해 2가지 인터페이스를 가져야 함
    • HTTP 인터페이스와 SMTP 인터페이스

 

인터넷 메일 접근 프로토콜(IMAP)을 사용하는 방법

  • 마이크로소프트 아웃룩과 같은 전형적인 메일 클라이언트를 사용하는 것