메일 프로토콜

강승구·2023년 5월 21일
0

메일 전송 시나리오

메일을 주고받기 위해서 송신자(Alice)와 수신자(Bob)은 LAN이나 WAN을 통해서 2개의 메일 서버에 연결된다.
송신자가 수신자에게 메일을 전송하기 위해서는 위 그림과 같이 총 9단계를 거치게 된다.

메일의 구조

메일은 envelope와 message로 구성된다.
envelope는 송신자의 주소, 수신자의 주소와 기타정보를 포함하고 message는 header와 body를 포함하고 있다.

메일 전송 과정


메일을 전송하는 과정은 연결 설정, 메일 전송, 연결 종료로 구성된다.

연결 설정

클라이언트가 25번 포트로 TCP 연결을 생성하면 SMTP 서버는 연결 절차를 시작하게 된다.

  1. 서버는 메일을 받을 준비가 되었음을 클라이언트에게 알리기 위해서 코드 220을 전송한다.
    만약 서버가 준비되지 않았다면 421을 전송한다.
  2. 클라이언트는 자신을 식별하기 위해서자신의 도메인 이름 주소를 이용해 HELO 메세지를 전송한다.
  3. 서버는 코드 250을 전송해 응답한다.

메세지 전송

SMPT 클라이언트와 서버사이에 연결이 설정된 후에 송신자와 하나 이상의 수신자들 사이에 하나의 메세지가 교환될 수 있다.

  1. 클라이언트는 메세지의 송신자를 알리기 위해서 MAIL FROM 메세지를 보낸다. 이 메세지에는 송신자의 주소가 포함되어 있다. 이 단계에서는 오류를 회신하고 베세지를 보고하기 위해서 회신 메일 주소를 서버에 되돌려 주는 것이 요구된다.
  2. 서버는 코드 250을 전송해 응답한다.
  3. 클라이언트는 수신자의 이메일 주소를 포함하는 RCPT TO 메세지를 전송한다.
  4. 서버는 코드 250을 전송해 응답한다.
  5. 클라이언트는 메세지 전송을 초기화 하기 위해서 DATA 메세지를 전송한다.
  6. 서버는 코드 354를 전송해 응답한다.
  7. 클라이언트는 연속된 줄의 메세지 내용을 전송한다. 각 줄은 주어진 라인 종류 토큰인 2문자 (CR, LF)로 종료된다. 하나의 구두점(.)이 들어있는 라인으로 메세지를 종료된다.
  8. 서버는 코드 250을 전송해 응답한다.

연결 종료

메세지가 성공적으로 전송된 후에 클라이언트는 연결을 종료한다.
1. 클라이언트는 QUIT 명령을 전송한다.
2. 서버는 코드 221을 전송해 응답한다.

IMAP vs POP3

POP3

메일서버에 있는 메일을 자신의 컴퓨터로 가져와 관리한다.
메일 다운로드와 동시에 메일서버의 메일이 삭제된다. (삭제되지 않도록 별도 설정 가능)
IMAP과 비교했을 때 메일뷰어라는 특성이 적절하다고 보인다.
메일을 삭제해도 메일서버에있는 원본은 삭제되지않는다.

IMAP

서버의 메일함과 메일 프로그램의 메일함 및 내용을 일치하도록 동기화한다.
메일 프로그램에서 메일을 삭제, 복사, 이동한 내용이 서버의 메일함에 동일하게 적용된다.
동시에 여러 개의 메일 프로그램에서 동일한 계정으로 접속이 가능하다.
메일의 일부분을 미리 읽어올 수 있다.

MIME (Multipurpose Internet Mail Extension)

profile
강승구

0개의 댓글