미니 서버 꾸리기 - 메일서버

메일 서버를 설치하고 운영하는 것에는 실제로 많은 노우하우가 필요하다. 웹서버를 빼면 대부분의 서비스는 로컬 서비스이고 인터넷에 미치는 영향이 별로 없기 때문이기도 하고, 메일 서버는 그것이 잘못 기동하는 경우에 미치는 파급효과가 클 뿐더러 역시나 생소한 개념과 용어가 많이 나오기도 하고, 이것과 곁들여 메일 필터링을 개인적으로 해줘야 할 필요도 있고, 더러는 웹 메일 기능을 필요로 할 수도 있고, 또 기본적으로 외부에서 메일을 확인할 수 있도록 IMAP이나 POP3를 지원해주야 하는 문제들이 있기 때문이다.

예전엔 sendmail을 가져다가 build하고 sendmail.cf를 손수 편집하고 procmail과 같은 메일 필터용 소프트웨어를 다른 스크립트들과 연계해서 사용하기도 하였고, 메일링 리스트를 가끔씩 꾸려서 사용해야 하는 일들도 있었다. 초창기에 처음으로 메일 서버를 운용할 때에는 그런 개념 자체가 전혀 없었기 때문에 공인 IP주로를 부여받는 머신에 달랑 OS를 설치해놓기만 한 경우가 다반사였다. 대부분 OS에 sendmail이 붙어서 오긴 하지만, 수많은 악동들이 뛰노는 인터넷에 무방비로 연결되는 순간 이런 머신들은 순식간의 악동들의 놀이터로 바뀌기 때문에 스펨메일의 릴레이 서버로 활용되기도 하고 메일 서버 공격을 위한 연습장이 되기도 하고 그랬다.

비로서 운영자랍시고 OS나 설치해주던 입장에서 여기 저기에서 경고메일을 받고 나면 그제서야 unix를 OS로 사용하는 머신을 공인 IP로 물려 운영하는 운영자는 PC에 OS만 달랑 설치하는 이들과는 다른 일종의 ‘책임감’이 따른다는 사실을 깨닫고 거의 매일 같이 공인 IP에 물려있는 이 unix machine의 활동사항을 점검하게 되기에 이른다. 그중 가장 비중이 큰 것이 mail server이다.

각론하고 메일 서버를 개인적으로 꾸미는 목적은 단순하다. 내가 가지고 있는 email 계정이 많고, 각각 web interface로 접속해서 작업하기 귀찮고 한군데에 몰아서 관리하고, 또 백업을 받아두거나 문제가 생겼을 때 쉽게 대처할 수 있게 함이다. 다시 말해 수많은 메일 계정들은 한 목적지로 모두 forward하도록 만들어놓고 난 한군데에서 일괄적으로 관리하면 된다는 편리함이 있다. 또 한곳에서 서로 다른 이메일 주소로 답장을 쓴다거나 메일을 보낼 수도 있다. 물론! 그 통합 메일 서버에 문제가 생긴다면 대단히 낭패가 아닐 수 없는데, 그런 의미에서 주기적으로 시스템 백업을 받아두어야할 이유는 있다.

요새 메일 서버 하나 꾸리는 것은 너무나도 쉽다. 잘은 모르겠으나 예전처럼 sendmail을 쓰지도 않고 postfix라는 오픈소스 기반의 소프트웨어를 사용하고, imap이나 pop3를 지원하는 dovecot이라는 소프트웨어를 사용하는 게 보편화된 것 같다. 그저 apt-get이라든가 yum이라든가 pacman 같은 것을 통해 불러다 설치하면 된다. 운영자의 몫은 configuration file을 제대로 작성해주는 것인데, 차근 차근 잘 설명해놓은 것들을 이용해서 해주면 된다.

그런데!! 가장 큰 문제는 내가 부여받은 공인 IP가 무엇이냐, 또 내 ISP가 어떤 필터링을 하고 있느냐에 있다. 가정용으로 들어오는 인터넷 서비스에 있어서 사실상 가정용 서비스에 불필요한 포트는 filtering이 되는 수가 있고, 내가 부여받은 공인 IP 주소가 spammer 혹은 relaying blacklist에 올라가 있는 수도 있다. 이러한 경우에 내가 아무리 용을 써도 메일 서버를 제대로 구동시킬 방법은 없다. 서비스 업체가 port에 걸려있는 filter를 풀어주려 하지도 않고, blacklist 관리 업체에 메일을 보내도 여간해서 잘 지워주지 않는다.

난 이 사실을 간과하고 3일간의 여가 시간을 빼앗겼다. 단순히 내 개인용 라우터에 문제가 있는 줄 알았지, 내가 사용하고 있는 (새로 받은지 2주도 안된) IP 주소가 여기 저기 블랙리스트에 올라있고, 또 ISP가 메일을 주고 받는 25 포트를 완전히 필터링을 해놓은지도 몰랐다. 결국 메일을 주고 받기 위해서는 메일 프락시를 쓰거나 아니면 ISP에게 내 주소를 business 용으로 업글 해달라고 해야 한다. 이게 도무지 뭐하는 것인지. 간단한 개인용 메일 서버하나 굴리는 것이 이리 불편한 일일 줄이야.

정리하기.

개인적으로 메일 서버를 꾸리는 것에 postfix + dovecot 조합을 권한다. sendmail의 경우 sasl, tls 그외 잡다한 기능들을 전부 지원하게 하려면 컴파일 하면서 다소 고충이 요구된다. 배포판으로 뿌려지는 postfix에는 거의 모든 기능이 전부 다 config에 따라 활성화시켜 쓸 수 있다.25번 포트가 ISP에 의해 막힌 것으로 판단되면 메일 서버를 두는 일은 조용히 포기하는 것이 좋다. 465나 587포트로 보내주지 않을까 하는 생각을 해보지만, 절대로 인터넷의 다른 메일 서버들은 25번 포트가 아닌 다른 포트로 메일을 보내주지 않는다. 손톱만한 희망을 걸고라도 도전하지 말길 바란다. 안된다. 대개 ISP가 블락을 해놓으면 25번 포트로 받지도 보내지도 못하게 된다. 당신의 서버에서 465나 587포트를 통해 다른 메일 서버로 릴레이는 될지 모를지언정 그외 기능은 아예 안된다고 봐야 한다.