다음 이전 차례

1. sendmail이란?

인터넷을 조금이라도 써 보신분은 sendmail이란 말을 들어보셨을 껍니다. 아니 요즘 같이 책들이 많이 나왔을때는 인터넷을 쓰지 않으셔도 sendmail이란 말은 들어보셨을 지도 모릅니다. 아마 대부분의 사람들은 과연 sendmail이 무엇이길래 사람들의 입에 오르내리는지?, 꼭 써야 하는건지? 라는 생각을 해 보셨을텐데요 여기에서는 sendmail이 무엇이며 어떻게 설치하고 sendmail에서 야기되는 몇가지 문제점들에 대해 이야기를 해 보도록 하겠습니다.

우선 sendmail은 인터넷에서 전자메일을 전송하기 위해 사용되는 프로그램이라고 생각하시면 됩니다. 그럼 이렇게 대답하시는 분들이 계실꺼예요. "어! 저는 전자메일을 보내고 받는데 Netscape Messanger를 쓰는데요! 그럼 sendmail은 몰라도 되겠네요!" 하지만 지금까지 모르셨을지 모르지만 Netscape Messanger같은 메일프로그램을 사용하시더라도 sendmail은 사용해 오셨을 겁니다. 전자메일 시스템에서 사용되는 용어중 Netscape Messanger와 같은 프로그램은 MUA(Mail User Agent)라고 부릅니다. 그에 비해 sendmail은 MTA(Mail Transfer Agent)라고 부릅니다.

우선 인터넷으로 편지를 보냈을때 어떤 경로로 전달되는지 알아보도록 하죠. 여기에서 메일서버로 taegu.ac.kr를 사용하는 whjang이라는 사용자가 kebi.com 컴퓨터에 있는 peach란 사용자에게 메일을 보낸다고 가정해보죠. 우선 사용하는 MUA(여기에서는 Netscape Messanger, 줄여서 NM이라고 부르겠습니다.)는 메일서버의 25번 포트에 접속을 합니다. 메일서버의 25번 포트에서는 MTA(여기에서 설명하는 sendmail이 해당됩니다. 이하 sendmail이라고 언급하겠습니다.)가 대기하고 있다가 NM이 보내고자 하는 메일을 받습니다. 그러면 sendmail은 스풀디렉토리(시스템 마다 조금씩 틀립니다. 제가 사용하는 Solaris 2.x에서는 /var/spool/mqueue를 사용합니다.)에 메일을 저장해 둔 후 kebi.com의 25번 포트로 접속합니다. kebi.com에도 sendmail이 25번 포트에서 대기하고 있겠죠. 정상적으로 접속을 한 후 taegu.ac.kr에 있는 sendmail은 kebi.com에 있는 sendmail에게 메일을 전송한 후 자신의 스풀에 저장된 메일을 삭제합니다. taegu.ac.kr에 있는 sendmail은 더이상 할 일이 없는거죠. 만일 kebi.com에 이상이 있어서 접속할 수 없다면 어떻게 될까요? taegu.ac.kr에 있는 sendmail은 메일을 스풀 디렉토리에 계속 가지고 있으며 수시로 접속을 시도합니다. 그러다가 며칠이 지나도 보낼 수 없다면 처음에 메일을 보낸 사람에게 메일을 보낼 수 없다고 되돌려 줍니다.

이제 메일을 받은 kebi.com에 있는 sendmail이 하는일을 차례대로 살펴보죠. 메일을 받은 sendmail은 메일의 도착지가 자신인지 확인을 합니다.(sendmail.cw파일 참조) 만일 도착지가 자신이 아니라면 도착지로 메일을 다시 전송합니다. (이 경우에는 아래에 설명드리겠지만 relay를 허용하는 호스트로만 전달할 수 있습니다. 그렇지 않은경우에는 에러를 출력합니다.) 만일 자신이 메일의 도착지라면 메일을 MDA(Mail Delivery Agent)에게 넘겨줍니다. MDA는 메일을 MTA로부터 받아서 메일박스등에 저장하거나 원하는 필터링을 할 수 있는 프로그램입니다. 보통 기본적으로 사용하는 MDA프로그램은 /bin/mail이며, 한글 처리를 위해 procmail을 이용하는 서버도 많이 있습니다. 메일을 받은 MDA는 필터링 과정을 거친 후 사용자의 메일박스에 저장합니다.

이제 메일의 전송은 완료되었습니다. 사용자는 mutt나 pine등의 MUA를 이용하여 메일을 확인할 수 있으며 외부에서 메일을 확인하는 경우 POP3나 IMAP프로토콜을 이용하여 메일박스를 가져갈 수 있습니다. POP3나 IMAP에 관한 내용은 본 글의 범위를 벗어나므로 설명은 하지 않겠습니다.

이상에서 보듯이 sendmail은 MTA의 역활을 합니다. 사용자로부터 메일을 전달받아 다른 컴퓨터의 MTA에게 넘겨주고, 다른 MTA로 부터 받은 메일을 MDA에게 넘겨주는 인터넷 전자메일의 가장 중심부에 위치하고 있습니다. 물론 MTA에는 다양한 프로그램이 있지만 sendmail은 카테고리 킬러(해당분야의 다른 프로그램들은 아예 잊혀져 버릴 만한 경쟁력을 갖추고 자신의 지위를 확고히 하는 최고 수준의 프로그램)가 될 수 있는 능력을 갖추었고, 현재 UNIX기반 메일서버의 거의 대부분이 MTA로 sendmail을 쓰고 있습니다.


다음 이전 차례