상세 컨텐츠

본문 제목

mail 전송의 원리

프로그래밍/시스템, 서버구축

by 라제폰 2009. 1. 5. 13:06

본문


 □ mail 전송의 원리


 

Internet service 중 가장 큰 비중을 차지하고 있는 것 중에 하나가 바로 mail service일 것이다. mail server를 운영하려는 우리는, 과연 internet에서 mail이 어떠한 원리로 전송되는지 반드시 알아야 할 것이다. 우선은 간단한 원리를 소개하겠고.. 앞으로 계속해서 mail server의 작동원리까지 설명해 나가겠다.

 

■ internet에서는 메시지를 송신하기 위해 SMTP 프로토콜을 사용한다.
SMTP란, Simple mail Transfer protocol의 약자로서 메시지를 교환하기 위한 프로토콜 규약이다.
다음의 그림을 보면서 자세히 설명하겠다.

 

 

 1. 사용자는 mail client (outlook 또는 eudora)와 같은 프로그램을 통해서 mail을 작성한 후, SMTP를 사용하여 mail deamon으로 메시지를 전송한다.

※ 유닉스용 전자우편 프로그램으로는 mail, mailx, elm, pine(외부에디터 사용)등이 있으며, 윈도우에서는 넷스케이프 mail 메신저, 익스플로러의 아웃룩 익스프레스, eudora 등이 있다.

2. 메일 데몬은 종단간 client의 주소를 분석하고 가장 가까운 mail server(송신자 소속의 메일서버)로 메시지와 정보를 보낸다.

※ mail deamon이란 일종의 프로세스로서, 송신자의 메일과 정보를 메일 서버가 해석 가능하도록 재가공한다.  반대의 경우 또한 같은 방법으로 수신자의 정확한 메시지 수신과 릴레이를 지원한다.
참고적으로, UNIX 기반의 대표적인 SMTP mail deamon으로는 [send mail]이 있으며, 앞으로 랩의 홈페이지에 unix/linux 카테고리가 생기게 된다면 sendmail의 사용에 대한 강좌도 준비하도록 하겠다.

3. 송신자가 보낸 편지가 일단 송신자 측의 전자우편을 관리하는 Mail Server에 전달되면,  Mail Server는 수신자의 전자우편 주소를 분석해서 최단 경로를 찾아 근접한 Mail Server에 편지를 전달하게 된다.

4. 최종 수신자측의 Mail Server에 도착하기까지 연속적으로 전달하는 중계작업이 계속된다.

서로 근접한 Mail Server들 간에 전자우편을 계속해서 중계해 나가는 방법을 통해 메일을 저장 후 전송 (Store-and-forward)하는 서비스를 하게 된다.

5. 이러한 일련의 작업이 계속적으로 이루어 진후, 송수신자는 정확하게 메일 교환을 할 수 있게 된다.

 

전자 우편의 주소 체계와 전송

zenome@email.com

email은 '@'을 구분자로 왼쪽에는 소속된 서버에서 부여받은 ID와 오른쪽에는 소속 서버의 주소의 주소를 사용하게 된다.

전자우편의 구성은 주소와 날짜, 메일의 제목인 주제를 포함하고 있는 메일 헤더와 메일의 내용이 포함되어 있는 메일 본체로 구성되어 있다.

인터넷 전자우편은 7비트 아스키 문자를 전송하는 것을 표준으로 하고 있어 한글로 작성된 메일은 변환코드로 인해 "내용을 알아볼 수 없는 문제가 발생할 수 있다.

이진파일은 인코딩을 통해 텍스트로 변환한 후 발송해야 하지만 요즘은 MIME 방식을 이용해 전자우편에 첨부하여 발송하는 기법을 사용하고 있다.

※ "email.com"은 cnn이 운영하는 실제의 mail 서비스 업체의 주소이다. 여러분의 이해를 돕기 위해 사용했을 뿐이다. 하지만 위의 주소는 필자의 이메일 주소이므로.. 여러분의 문의사항을 보내도 좋겠다.
다만 한글의 경우 글씨가 깨지는 경우가 많으므로 주의하여야 한다.

 

 

SMTP와 POP3

Θ SMTP (Simple Mail Transfer Protocol)

일반적으로 메일을 송신할 때 사용되어진다고 볼 수 있다.
SMTP와 관련된 프로토콜에 대한 표준은 STD와 RFC에서 정해진 것이다. 서버에서 서버로의 프로토콜이며 이외의 다른 여러 프로토콜은 메시지를 접속하기 위해서 사용한다. STMP와 관련된 프로토콜을 살펴보면 다음과 같다.

① STD 10/RFC 821:두 컴퓨터 사이의 메일 교환 표준을 정의하며 SMTP 자체에 관한 표준으로 TCP/IP 호스트 사이에서 메일을 전달하는데 사용된다.

② STD 11/RFC 822, RFC1049:RFC 822와 RFC 1049에 포함된 메일 메시지의 형식에 관한 표준을 정의하며 공식적인 프로토콜명은 MAIL이다. RFC822는 메일 헤더 필드의 의미를 기술하고 헤더 필드 집합과 그에 대한 해석을 정의한다. RFC 1049는 평문 아스키 이외의 문서 형식들이 메일 본문에서 어떻게 사용될 수 있는지에 대해 기술하고 있다.

③ RFC 974:DNS(domain name system)을 이용한 메일 경로 배정에 관한 표준을 정의하고 있으며 공식 프로토콜명은 DNS-MX이다.

STD 10/RFC 821에서는 SMTP를 통해 전달되는 데이터는 상위 비트가 0으로 설정된 7비트 아스키 데이터라고 기술하고 있다. 이는 영문텍스트 메시지를 전송하는데는 적합하지만, 비영어권 데이터 또는 비 텍스트 데이터에 대해서는 부적합하다. 이러한 제약을 극복하기 위해 다음과 같은 접근 방식이 사용된다.

① MIME(multipurpose internet mail extension):RFC 2045부터 RFC 2049에서는 텍스트와 2진 데이터를 RFC 822에서 정의한 7비트 아스키로 코드화하는 메카니즘을 명시한다.

② SMTP Service Extensions:RFC 821에서 정의한 SMTP의 기능을 확장하는 메커니즘을 RFC 1869, RFC 1652, 1870에서 각각 정의하고 있다.

 

Θ POP (Post Office Protocol)

 인터넷 메일 클라이언트가 메일 서버로부터 메일을 꺼내기 위한 규약으로서 인터넷에서 사실상 표준이 되어 있다. 말그대로 메일의 수신을 위한 프로토콜이다. SMTP가 우체부라면 POP은 우체국이라고 생각하면 쉽다. 전자우편의 헤더와 본문 모두를 사용자의 컴퓨터로 다운로드한다. 이프로토콜은 TCP 세션의 109번 포트를 쓰는데 같은 포트를 쓰면서 조금 진보한 POP2가 있고 최근 많이 사용되는 POP3는 110번 포트를 사용한다.

 

※ 참고, protocol이 사용하는 일반적 port

HTTP  :    80 port
FTP    :    21 port
POP3 :  110 port
SMTP :    25 port
IMAP  :   43 port

 

일반적 mail server 환경(UNIX-send mail)에서의 mail 송수신 과정

Sendmail이 설치된 메일서버는 SMTP(Simple Mail Transfer Protocol) 프로토콜을 사용하여 메일을 전송하고, 호스트로부터 받은 메일을 클라이언트로 전달할 때는 POP3 또는 IMAP등의 프로토콜을 사용합니다.

일반적으로 대부분의 사람들이 E-Mail을 보내기 위하여 PC상의 MUA(Mail User Agent : Outlook, Netscape Messanger등)를 사용하게 됩니다. 개인 PC에는 메일 송수신 기능(즉, MTA 기능)이 없기 때문에 인터넷에 연결되어있는 UNIX기반의 메일서버를 이용합니다. 혹은 NT의 Mail exchange서버를 사용하기도 합니다.

abc@abc.com를 메일주소로 가진 사람이 def@def.com을 메일주소로 가지고 있는 사람에게 E-mail을 보내는 과정을 예로 설명하겠습니다.

① 메일서버로 abc@abc.com을 사용하는 abc은  def@def.com에게 편지를 보내기 위해 MUA로 작성된 편지를 SMTP(port 25)를 이용하여 발송한다.

②메일서버의 25번포트에서는 sendmail이 Demon으로 실행되어져 있다가 outlook express가 보내고자 하는 메일을 받는다.

③메일을 받은 sendmail은 메일의 도착지가 자신인지를 확인한다. 만일 도착지가 자신이 아니라면 도착지로 메일을 다시 전송합니다. 자신이 메일의 도착지라면 메일을 MDA(Mail Delivery Agent)에게 넘겨줍니다. MDA(메일을 MTA로부터 받아서 메일박스등에 저장하거나 원하는 필터링을 할 수 있는 프로그램)는 필터링 과정을 거친 후 사용자의 메일박스에 저장한다.

④ def.com 자신이 도착지가 아니라면 MTA는 메일을 def.com의 25포트를 통하여 MTA에게 넘겨주며 def.com의 MTA에 접속할 수 없다면 email.com의 메일 스풀에 저장되어 주기적으로 def.com 시스템의 MTA와 접속을 시도하여 접속이 이루어지면 메일을 전송하고 자신의 스풀에 저장된 메일을 삭제하며 지정된 시간이 지나도 보낼 수 없다면 메일을 전송한 사람에게 메일을 보낼 수 없다고 되돌려 줍니다.

⑤ 편지를 넘겨받은 def.com의 MTA는 User의 존재유무를 확인하여 전달하며 유저가 존재하지 않을 경우 다시 편지를 처음 전송한 사람에게 되돌려 줍니다. 수신인의 hanmail.net 에 존재할 경우 MDA 프로그램에 메일을 넘겨주며 MDA는 적절한 필터링을 거쳐 각 사용자의 메일 박스에 저장됩니다.

 

⑥ 편지 수신자인 uhkim@hanmail.net의 사용자는 유닉스용 MUA인 mutt,pine,elm과 같은 프로그램으로 편지를 받아보며, pc 용 MUA인 microsoft outlook, Netscape messenger, Eudora를 이용하여 IMAP 혹은 POP3프로토콜을 이용하여 hanmai.net에 접근하여 편지를 가져와 읽을 수 있습니다.

이상에서 보듯이 sendmail은 MTA의 역활을 합니다. 사용자로부터 메일을 전달받아 다른 컴퓨터의 MTA에게 넘겨주고, 다른 MTA로 부터 받은 메일을 MDA에게 넘겨주는 인터넷 전자메일의 가장 중심부에 위치하고 있습니다. 현재 UNIX기반 메일서버의 거의 대부분이 MTA로 sendmail을 쓰고 있습니다.

보다 자세히 >>

 

MUA & MTA

사용자가 직접 접하게 되는 것은 우편 대행자(MUA:mail user agent)이다. 이 도구는 여러 가지가 있는데 우선 표준 유닉스 도구는 mail이다.

  이 mail은 크게 두 가지로 발전되었는데 그 하나가 BSD(Berkely Software Distribution)에서 개발된 mailx이고 또 하나는 시스템Ⅴ 유닉스(System Ⅴ Unix)에서 개발된 Mail이다. 이 두 도구는 대개의 표준 유닉스 시스템에 기본적으로 탑재되어 있다.  이 외로 Elm, MH, Rmail, Mush 등 여러 가지가 있는데 모두 나름대로의 특징을 가지고 있다.

지금까지 언급된 것은 주로 유닉스 하의 TCP/IP 중 일부인 SMTP로써 유닉스 기반하에서 동작하는 것들이다. 어떤 랜에 연결된 PC는 정해진 Host에 연결해 메일 작업을 할 수도 있지만 직접 PC에 도구를 설치해 운용할 수도 있게 된다. 이와 같이 PC에서 동작하는 메일 프로토콜 중 하나가 POP(Post Office Protocol)이며 이는 SMTP보다 사용하기에 편리한 점이 많다. 이 POP 기반하에 동작되는 것 중 많이 사용하는 도구가 유도라(Eudora)이다.

관련글 더보기