IceWarp 이메일 서버 자세히보기

아이스워프 메일서버

SMTP 동작 원리

알 수 없는 사용자 2007. 5. 11. 10:38

 SMTP 동작 원리


이제
인터넷을 통해 메시지가 어떻게 흘러가는지 살펴 보도록 하자. 여기 예에서는 Mary Bob에게 메일을 송신하고, Bob 메일을 어떻게 수신하는지 단계별로 알아 본다.


사용자 삽입 이미지

<그림 1> Mary Bob에게 메시지를 보내는 과정

 

l       Step 1 : Mary 이메일 클라이언트 프로그램을 실행하여 Bob에게 보낼 메시지를 작성한다.

l       Step 2 : 보내기 버튼을 클릭하여 메시지를 발송한다.

l       Step 3 : Mary 이메일 클라이언트 프로그램은 메시지를 변환하고, SMTP 프로토콜을 이용하여 ISP MTA 전송한다.

l       Step 4 : MTA 메시지가 누구의 것인지 확인한다. Bob 로그인하여 메시지를 가져갈 때까지 메시지 저장소에 메일을 보관한다.

l       Step 5 : Bob 이메일 클라이언트 프로그램을 실행한다. 이메일 클라이언트 프로그램은 POP 프로토콜을 이용하여 POP 서버에 Bob에게 메일이 있는지 요청한다.

l       Step 6 : POP 서버는 Bob 메일 저장소에 메일이 있는지 확인하여 저장소에 있는 메일의 목록을 반환한다.

l       Step 7 : Bob 이메일 클라이언트는 메시지에 있는 메일의 목록을 살펴 보고, 아직 다운로드하지 않은 메일이 있는지 결정한다. 그리고 다운로드 받지 않은 모든 메시지를 보내달라는 요청을 보낸다.

l       Step 8 : POP 서버는 Bob 이메일 클라이언트로 메시지를 전송한다.

l       Step 9 : Bob 이메일 클라이언트는 메시지를 다운로드하고 메시지들은 로컬 하드 디스크에 저장된다.

 

이제 좀더 세분화하여 살펴 보도록 하자. 앞에서 설명한 단계 중에서 메시지가 전송되는 과정은 가지 이다.

 

l       SMTP 이용하여 MTA 메일(메시지) 보낸다.

l       POP 서버에서 메일을 수신한다.

 

먼저, 사용자가 작성하는 이메일 메시지의 형식에 대해 살펴보자. 이메일의 형식은 보통 6 부분으로 이루어져 있다.(첨부파일 등은 일단 제외하자.)

 

l   To:                    수신자(메일을 받는 사람)

l   From:                송신자(메일을 보내는 사람)

l   CC:                    Carbon Copy(참조)

l   BCC:                 Blind CC(숨은 참조)

l   Subject:            제목

l   Body                 본문

 

Mary 다음과 같은 메시지를 작성하여 보내기 버튼을 누르면, 이메일 클라이언트는 메시지를 다음의 3부분으로 재구성한다 : 1)송신자, 2) 수신자 목록, 3) 데이터 부분에 Reply-To:, Date: 추가하고 BCC 삭제.


사용자 삽입 이미지

< 그림 2 > 이메일 클라이언트가 메시지를 여러 부분으로 나누는 과정

 

이제, Mary 이메일 클라이언트가 메일 서버(MTA 서버) 어떻게 통신을 연결하여 메시지를 송신하는지 알아 보자. 아래 그림에서 화살표의 방향을 주의해서 살펴보도록 한다.


사용자 삽입 이미지

< 그림 3 > Mary 이메일 클라이언트가 MTA 서버와 통신하는 과정

 

위의 그림에서 ehlo(또는 helo)에서부터 250 Message Received까지가 하나의 세션(session)이다.

 

여기서는 메일 계정이 모두 같은 메일 서버(도메인이름) 가지고 있어, 실제로 우리가 사용하는 환경에서 있는 다른 메일 서버로 전송하는 과정이 빠져 있다. 따라서, 아래 그림을 살펴 보면, 송신자의 MTA 수신자의 MTA 다른 경우 어떻게 전송이 되는지 있다.


사용자 삽입 이미지

< 그림 4 > MTA 간의 통신 과정

 

여기서 특히 중요한 점은 바로 DNS 서버의 역할이다. 메일 서버라는 관점에서 DNS 서버는 아주 중요한 역할을 수행한다. DNS 서버는 호스트 이름(ex. www.merak.co.kr) IP 주소로 이름풀이(name resolution)하는 것도 중요하지만, MX 레코드(도메인의 메일 호스트가 어디인지 나타내줌) 정보를 이용하여 먼저 해당도메인의 메일 서버의 호스트이름을 알려준다. 따라서 발신 MTA DNS 수신 MTA 도메인 정보 MX 질의하여 얻은 주소로 메일을 전송한다.

 

이제 마지막으로, Bob 자신의 MTA 서버에서 POP 프로토콜을 이용하여 메시지를 수신하는 과정에 대해 알아 보자.


사용자 삽입 이미지

< 그림 5 > Bob 이메일 클라이언트가 MTA에서 새로운 메시지를 수신하는 과정

 

Bob 이메일 클라이언트는 POP 서버로 인증을 시도하여 OK 떨어진 이후에 메시지를 수신받게 된다. UIDL 이미 다운로드한 메일의 목록을 나타내는 값이다. 위의 그림에서 ehlo(또는 helo)부터 QUIT 부분까지를 세션(session)이라고 한다.

 

지금까지의 과정이 송신자의 이메일 클라이언트에서 작성한 메시지가 수신자의 이메일 클라이언트로 전송되는 과정을 좀더 자세하게 살펴 보았다. 이렇게 살펴 이유는, 스팸을 차단하는 방법에는 여러 가지가 있는데, 지금까지 살펴본 단계 속에 이러한 스팸 차단 기술들이 적용되기 때문이다. 스팸 메일을 막기 위해서는 먼저 내가 수신자의 입장이라고 가정하고, 메일이 나한테 들어오는 순간부터 한단계 한단계 스팸 차단 방법을 적용해 나가면 스팸을 충분히 막아낼 있다.