1. sendmail이란?
Internet을 조금이라도 써 보신 분은 sendmail이란 말을 들어보셨을 겁니다. 아니 요즘 같이 책들이 많이 나왔을 때는 Internet을 쓰지 않으셔도 sendmail이란 말은 들어보셨을 지도 모릅니다. 아마 대부분의 사람들은 과연 sendmail이 무엇이길래 사람들의 입에 오르내리는지? 꼭 써야 하는 건지? 라는 생각을 해 보셨을 텐데요 여기에서는 sendmail이 무엇이며 어떻게 설치하고 sendmail에서 야기되는 몇 가지 문제점들에 대해 이야기를 해 보도록 하겠습니다.
우선 sendmail은 Internet에서 전자메일을 전송하기 위해 사용되는 Program이라고 생각하시면 됩니다. 그럼 이렇게 대답하시는 분들이 계실꺼예요. "어! 저는 전자메일을 보내고 받는데 Netscape Messenger를 쓰는데요! 그럼 sendmail은 몰라도 되겠네요!" 하지만 지금까지 모르셨을지 모르지만 Netscape Messenger같은 Mail Program을 사용하시더라도 sendmail은 사용해 오셨을 겁니다. 전자메일 System에서 사용되는 용어중 Netscape Messenger와 같은 Program은 MUA(Mail User Agent)라고 부릅니다. 그에 비해 sendmail은 MTA(Mail Transfer Agent)라고 부릅니다.
우선 Internet으로 편지를 보냈을 때 어떤 경로로 전달되는지 알아보도록 하죠. 여기에서 Mail Server로 taegu.ac.kr를 사용하는 whjang이라는 사용자가 kebi.com Computer에 있는 peach란 사용자에게 Mail을 보낸다고 가정해보죠. 우선 사용하는 MUA(여기에서는 Netscape Messenger, 줄여서 NM이라고 부르겠습니다.)는 Mail Server의 25번 Port에 접속을 합니다. Mail Server의 25번 Port에서는 MTA(여기에서 설명하는 sendmail이 해당됩니다. 이하 sendmail이라고 언급하겠습니다.)가 대기하고 있다가 NM이 보내고자 하는 Mail을 받습니다. 그러면 sendmail은 Spool Directory (System 마다 조금씩 틀립니다. 제가 사용하는 Solaris 2.x에서는 /var/spool/mqueue를 사용합니다.)에 Mail을 저장해 둔 후 kebi.com의 25번 Port로 접속합니다. kebi.com에도 sendmail이 25번 Port에서 대기하고 있겠죠. 정상적으로 접속을 한 후 taegu.ac.kr에 있는 sendmail은 kebi.com에 있는 sendmail에게 Mail을 전송한 후 자신의 Spool에 저장된 Mail을 삭제합니다. taegu.ac.kr에 있는 sendmail은 더 이상 할 일이 없는 거죠. 만일 kebi.com에 이상이 있어서 접속할 수 없다면 어떻게 될까요? taegu.ac.kr에 있는 sendmail은 Mail을 Spool Directory에 계속 가지고 있으며 수시로 접속을 시도합니다. 그러다가 며칠이 지나도 보낼 수 없다면 처음에 Mail을 보낸 사람에게 Mail을 보낼 수 없다고 되돌려 줍니다.
이제 Mail을 받은 kebi.com에 있는 sendmail이 하는 일을 차례대로 살펴보죠. Mail을 받은 sendmail은 Mail의 도착지가 자신인지 확인을 합니다. (sendmail.cw File 참조) 만일 도착지가 자신이 아니라면 도착지로 Mail을 다시 전송합니다. (이 경우에는 아래에 설명 드리겠지만 relay를 허용하는 Host로만 전달할 수 있습니다. 그렇지 않은 경우에는 Error를 출력합니다.) 만일 자신이 Mail의 도착지라면 Mail을 MDA(Mail Delivery Agent)에게 넘겨줍니다. MDA는 Mail을 MTA로부터 받아서 Mail Box 등에 저장하거나 원하는 Filtering을 할 수 있는 Program입니다. 보통 기본적으로 사용하는 MDA Program은 /bin/mail이며, 한글 처리를 위해 procmail을 이용하는 Server도 많이 있습니다. Mail을 받은 MDA는 Filtering 과정을 거친 후 사용자의 Mail Box에 저장합니다.
이제 Mail의 전송은 완료되었습니다. 사용자는 mutt나 pine등의 MUA를 이용하여 Mail을 확인할 수 있으며 외부에서 Mail을 확인하는 경우 POP3나 IMAP프로토콜을 이용하여 Mail Box를 가져갈 수 있습니다. POP3나 IMAP에 관한 내용은 본 글의 범위를 벗어나므로 설명은 하지 않겠습니다.
이상에서 보듯이 sendmail은 MTA의 역할을 합니다. 사용자로부터 Mail을 전달받아 다른 Computer의 MTA에게 넘겨주고, 다른 MTA로 부터 받은 Mail을 MDA에게 넘겨주는 Internet 전자메일의 가장 중심부에 위치하고 있습니다. 물론 MTA에는 다양한 Program이 있지만 sendmail은 Category Killer (해당분야의 다른 Program들은 아예 잊혀져 버릴 만한 경쟁력을 갖추고 자신의 지위를 확고히 하는 최고 수준의 Program)가 될 수 있는 능력을 갖추었고, 현재 UNIX기반 Mail Server의 거의 대부분이 MTA로 sendmail을 쓰고 있습니다.
'Operating System > Linux' 카테고리의 다른 글
| Sendmail (Third Party Relay) (0) | 2007/06/20 |
|---|---|
| Sendmail (sendmail.cf에 관한 얘기) (0) | 2007/06/20 |
| Sendmail (한글지원) (0) | 2007/06/19 |
| Sendmail (추가적인 작업들) (0) | 2007/06/19 |
| Sendmail (Compile & Installation) (0) | 2007/06/19 |
| Sendmail (Sendmail이란?) (0) | 2007/06/19 |
| Linux Security How-To (FAQ/결론) (0) | 2007/06/18 |
| Linux Security How-To (색인) (0) | 2007/06/18 |
| Linux Security How-To (보안 관련 자료) (0) | 2007/06/18 |
| Linux Security How-To (침입 도중이나 후에 할 일들) (0) | 2007/06/18 |
| Linux Security How-To (접속에 앞서서) (0) | 2007/06/18 |