10. 메일 서버 설치 및 운영 - 기본 개념
E-Mail의 송수신에서 사용되는 프로토콜은 3가지가 있다.
일단 용어만 눈에 익혀 두고 그림에서 각 프로토콜이 사용되는 용도를 살펴보자.
- SMTP(Simple Mail Transfer Protocol) : 클라이언트가 메일을 보내거나,
메일 서버끼리 메일을 주고 받을 때
- POP3(Post Office Protocol) : 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때
- IMAP(Internet Mail Access Protocol) : POP3와 같음
● E-Mail 서버의 작동 원리
E-Mail 서버의 작동 원리를 단순하게 하면 아래의 그림과 같다.
[E-Mail 서버의 작동 개념]
위의 그림은 아주 단순하지만, E-Mail이 전송되는 원리가 잘 표현되어 있다.
우선, 사용자는 kim이라는 이름의 사람이고, daum.net이라는 메일 서버에 계정이 있다.
즉, kim@daum.net이라는 계정을 가지고 있다.
또, lee라는 사람은 lee@naver.com이라는 메일 서버에 계정을 가지고 있다.
이제 kim이 lee에게 메일을 보내고 받는 과정을 살펴보자.
① kim이 PC1에서 메일클라이언트 프로그램(Outlook Express 등)을 실행해서,
daum.net에 접속한다. '편지쓰기'를 클릭해서 [받는이]란에 'lee@naver.com'이라고 쓰고,
내용을 채운 후에 <보내기>를 클릭해서 메일을 보낸다. (이때는 SMTP 프로토콜이 이용된다)
② 메일 서버1(daum.net)은 kim이 보낸 메일을 잠시 임시 장소에 보관한다.
시간의 여유가 생겼을 , 메일 서버1은 kim이 보낼 메일의 수신자 주소인 naver.com
메일 서버 IP주소를 네임 서버에게 문의하여 알아온다.
③ 메일 서버1은 메일을 인터넷을 통해서 메일 서버2(naver.com)에게 전송한다.
(이 때도 SMTP 프로토콜이 이용된다)
④ 메일 서버2(naver.com)는 메일 서버1(daum.net)로부터 받은 메일의 수신자 이름을 확인한다.
lee라는 수신자 이름이 자신이 관리하는 계정 중에 있는지 확인한다.
lee라는 이름이 자신의 계정 중에 있다면 lee의 메일박스에 kim에게서 받은 메일을 넣어 둔다.
⑤ lee는 PC2에서 메일 클라이언트 프로그램을 실행해서, 자신의 메일 서버인 naver.com에
접속한다. 접속 후에 자신의 메일박스에 도착된 편지들을 PC2로 내린다.
(이 때는 POP3/IMAP 프로토콜이 사용된다) kim으로부터 온 메일을 읽는다.
인터넷 상에서 메일을 주고 받을 때 움직이는 원리를 단순하게 하여 살펴 보았다.
● 센드메일 서버의 작동원리
아래의 그림은 메일이 전송되는 과정을 우리가 구현할 센드메일(Sendmail) 서버의 입장에서
내부적으로 좀 더 자세히 표현한 것이다.
[센드메일 서버의 자세한 작동원리]
① 메일 클라이언트1은 SMTP 프로토콜을 이용해서, 메일 서버1의 센드메일 데몬에게 메일을
보내달라고 요청한다.
② 센드메일 데몬은 메일을 '메일 큐'에 넣어 놓는다. (이 파일은 /var/spool/mqueue이다)
③ 센드메일 데몬은 시간이 되면 MDA에게 메일을 보내달라고 요청한다.
④, ⑤ MDA는 SMTP 프로토콜을 이용해서 메일 서버2의 센드메일 데몬에게 메일을 전송한다.
⑥, ⑦ 메일 서버2의 센드메일 데몬은 받은 메일을 MDA를 통해서 사용자의 메일 박스에 넣어 놓는다.
⑧ 메일 클라이언트2는 메일 서버2의 dovecot 데몬에게 자신의 메일을 달라고 요청한다.
⑨, ⑩ dovecot 데몬은 메일 박스에서 메일 클라이언트2의 메일을 POP3 또는 IMAP 프로토콜을
이용해서 전송해 준다.
위와 같은 작동들이 Sendmail 서버를 이용해서 메일을 보내는 과정에서 발생하게 되는 것이다.