JS

2013년 5월 31일 금요일

Mail Agent Overview

필자도 자세한 것은 모르지만, 메일관련 프로그램은 5가지 정도로 분류된다. 아래 정리된 설명은 조금 불완전할 수도 있다. 설명이 짧은 항목은 위키에서 보고 적은 것이므로 대충 맞겠지만, 설명이 긴 항목일 수록 개인적인 의견이 많이 섞여 있고 틀린 내용이 있을지도 모른다.
  • Mail User Agent (MUA)
    사용자 클라이언트이다. MS 아웃룩, 모질라 썬더버드, mutt 등이 그 예이다.
  • Mail Transfer Agent (MTA)
    넓은 의미로는 MUA를 제외하고는 전부 MTA이지만, 세분화해서 말하면 MTA는 메일을 실제로 다른 서버 등과 주고 받는 프로그램이다. 예를 들면 sendmail, postfix, exim, qmail 등이 있다. SMTP를 사용하고 port 번호는 25번이다.
  • Mail Delivery Agent (MDA)
    받은 메일을 메일함(~/Maildir 등)에 전달하는 프로그램으로, procmail 등의 프로그램이 있다. 하지만 MTA가 간단한 MDA 역할을 하기도 한다. 즉, procmail을 서버에 설치하지 않아도 기본적인 기능은 동작한다.
  • Mail Submission Agent (MSA)
    MTA와 MSA의 구분을 필자도 정확히 모르겠다. MSA와 MTA를 언제부터 구분하기 시작했는지 잘 모르겠지만, 비교적 최근에 구분하기 시작한 것 같다. MUA에서 메일을 직접 받는 것은 MSA라고 하고, MSA에서 메일을 받는 것이 MTA이다. MSA는 SMTP와 비슷한 프로토콜을 사용하는데 포트 번호는 587번이다. MSA가 만들어진 것 자체는 어느정도 지난 것 같지만, 그동안 MUA에서 587번 포트를 안 쓰고 25번 포트를 써왔던 것으로 기억한다. 그런데 스팸 메일을 차단하는 것 등의 목적으로 25번 포트를 제한하게 되면서 587번 포트가 본격적으로 사용되기 시작한 것 같다.
  • Mail Retrieval Agent (MRA)
    원격 메일함에서 메일을 가져온다. 예를 들면 fetchmail, getmail 등이 있다. 필자는 사용해보지 않았다. 참고로 MRA는 RFC 5598에 없는 내용이고, Wikipedia에서는 메일 전달 과정에서 받는 쪽 MUA 직전의 단계를 MRA라고 하고 있다.
Dovecot 등의 서버는 위 분류에서 어디에 들어갈지 모르겠다. Dovecot은 IMAP, POP 서버의 역할을 하는데, MRA로 분류되는 fetchmail은 IMAP 등을 통해서 메일을 가져오는 것이므로 dovecot과 성격이 다른 것 같다. 그런데 Wikipedia의 설명대로라면 Dovecot을 MRA인 것 같기도 하다.

또, dovecot은 Simple Authentication and Security Layer (SASL) 기능도 제공한다. 그리고 postfix나 exim에서 SASL을 통해 SMTP 인증(authentication)을 하게 된다. 적어도 내가 알기로는 postfix에서 SMTP 인증을 쓰기 위해 dovecot과 같은 별도의 프로그램이 필요한데, 왜 postfix에서 자체적으로 SASL 기능을 포함하지 않았는지 생각을 해보았다. 따지고 보면 postfix는 IMAP이나 POP도 지원하지 않고, 단순하게 들어오는 메일을 받거나, 나가야할 메일을 보내는 역할정도만 한다. Dovecot 없이 postfix만 설치해도 local에서 메일을 보내는 것은 잘 된다. 그런데 외부에서 SMTP로 들어오는 메일을 전부 처리하면 내 서버는 스팸 메일의 경유지가 될 것이므로, local에서 전송되는 메일 또는 local이 최종 목적지인 메일만 처리하는 편이 좋을 것이다. 즉, postfix 등의 MTA는 local 외부에서 사용되는 MUA를 제대로 지원하지 않고 있는 것이다. 그래서 dovecot 같은 것을 설치해야 IMAP 또는 POP을 통해 MUA가 메일을 가져갈 수 있고, SMTP를 통해 MUA가 메일을 보낼 수 있는 것이다. 여기서 SMTP의 경우 MUA는 MTA에 직접 접속하지만 dovecot이 없으면 SMTP 인증 기능은 사용할 수 없는 것으로 생각하면 될 것 같다.

결론적으로, IMAP이나 POP은 받는쪽 MTA와 받는 쪽 MUA를 매개하고, SASL은 보내는 쪽 MUA와 보내는 쪽 MTA의 연결에서 인증 기능을 담당하고 있다. 그러므로 dovecot 등의 프로그램은 MTA는 아니지만 MTA의 보조적인 기능을 담당하고 있는 것이라고 생각하면 될 것 같다.

마지막으로 dovecot은 Local Delivery Agent (LDA) 기능도 하는데 써보지는 않았다.

자세한 내용을 원하면 다음 문서를 읽어보면 된다. RFC 문서들은 링크한 것 이외에도 많이 있는데, 사실 난 거의 읽어보지 않았다. 기본 개념만 알기 원하는 것이라면 Wikipedia나 mutt, dovecot 사이트의 설명을 읽어보는 편이 도움이 될 것이다.

댓글 없음:

댓글 쓰기