본문 바로가기

카테고리 없음

SMTP

SMTP란?

간이 전자 우편 전송 프로토콜로, 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜이다.

 

특징

  • userAgent가 메일서버로 메일을 올릴 때가 아니라 메일 서버에서 다른 메일 서버로 메일을 보낼 때 사용한다.
  • 메일 서버에 메세지 큐가 존재해서 큐에 있는 메일을 지속적으로 다른 메일서버로 보내주거나 자신의 user agent에게 보내준다.
  • TCP port number : 25.
  • TCP기반이기 때문에 handshaking을 한다.
  • command/response 상호 작용을 한다.

- command : ASCII text (명령식으로)

- response : 상태 코드 (숫자)

 
 
 

User Agent

- 사용자를 대신하여 일을 수행하는 소프트웨어 에이전트로 메일을 작성하고 읽을 수 있다.

- client가 아니다.

- 내 메일 서버에 메일을 올려야 한다.

Client

- 다른 메일 서버에게서 메일을 받는 서버이다.

Server

- 다른 메일 서버에게 메일을 보내는 서버이다.

 
 
 

순서

송신자(Alice) : 32192004@dankook.ac.kr | 수신자(Bob) : govl6113@naver.com

1. 송신자는 user Agent에서 메일을 작성한다.

2. 송신자의 메일 서버인 dankook mail server에 메일을 올려 dankook 메일서버 메세지 큐에 메일이 위치한다.

3. 송신자의 메일 서버와 수신자의 메일서버가 TCP 연결을 한다.

4. 송신자의 메일 서버인 dankook 메일서버에서 수신자의 메일서버인 naver 메일서버로 메일을 보낸다. (SMTP)

5. 수신자의 메일서버 큐에 수신자의 메일이 위치한다.

6. 수신자의 메일서버에서 user agent로 메일이 전달된다.

 
 

위의 2번 과정 ex)

Header : to, from, subject

Body : message

 
 

위의 4번 과정 ex)

S: 220 hamburger.edu 220 : 모두에게 open

C: HELO crepes.fr 본인 이름 소개

S: 250 Hello crepes.fr, pleased to meet you 250 : 특정 C에게 반응

C: MAIL FROM: <alice@crepes.fr> 본인 UserAgent(송신자) 소개

S: 250 alice@crepes.fr... Sender ok ok

C: RCPT TO: <bob@hamburger.edu> 수신자 소개

S: 250 bob@hamburger.edu ... Recipient ok ok

C: DATA 실제 data 보내기

S: 354 Enter mail, end with "." on a line by itself data 다 보내면 표시로 . 을 찍어줘

C: Do you like ketchup? data

C: How about pickles? data

C: . data 다 끝남

S: 250 Message accepted for delivery 다 받음

C: QUIT 연결 종료 요청

S: 221 hamburger.edu closing connection 연결 종료 수락

 
 
 
 
 

HTTP vs SMTP

공통점

- ASCII Command/response 상호작용을 한다.

- 상태코드를 사용한다.

- TCP를 사용한다.

 
 

차이점

HTTP
 
SMTP
 
사용자 입장에서 pull(당기기)
 
사용자 입장에서 push(보내기)
 
위 4번 예제의 C 부분만 모아 Header+Body(하나의 레코드 형식)로 한방에보내며 더 많은 정보가 들어간다.
 
위 4번 예제처럼 C를 한 줄(7-bit ASCII)씩 주고받으며 여러번 보내야 한다.