메일 서버 · 3 min read · Sep 09, 2025

가상 도메인 및 사용자와 함께하는 전체 메일 서버 솔루션 (Debian Etch, Postfix, MySQL, Dovecot, DSpam, ClamAV, Postgrey, RBL)

가상 도메인 및 사용자와 함께하는 전체 메일 서버 솔루션 (Debian Etch, Postfix, MySQL, Dovecot, DSpam, ClamAV, Postgrey, RBL)

이 튜토리얼은 Justin Refice에 의해 저작권(c) 2007으로 보호됩니다. 이 문서는 문서 끝에 나열된 다양한 가이드와 원본 자료에서 파생되었습니다. 이 튜토리얼은 Creative Commons 라이선스 2.5 또는 이후 버전 하에 자유롭게 사용할 수 있습니다.

I. 소개

이 가이드는 Debian Linux에서 전체 이메일 솔루션을 설정하는 방법을 설명합니다 (모든 코드는 Debian Etch에서 가져왔습니다). 작은 회사를 위해 안전하고 확장 가능하며 휴대 가능한 솔루션을 설계해 달라는 요청을 받았습니다. 가이드에서는 많은 ‘서버’를 참조하지만, 회사에는 물리적 머신이 4대만 있었고, Xen을 사용하여 전체 솔루션을 가상화했습니다. 시스템의 이 특정 측면은 이 가이드에서 논의되지 않지만, 다음 개정판에 포함하도록 노력하겠습니다.

아래에서 사용된 서버 이름에 대한 주의 사항: 인터넷에서 접근할 필요가 없다면 접근하지 않도록 하십시오. internal.example.com으로 끝나는 도메인 이름은 내부 NIC/IP 주소입니다… 인터넷에서 직접 접근할 수 있는 방법이 없으며, 접근해서도 안 됩니다. internal.example.com 도메인 이름만 있는 서버는 순수 내부 서버이며, 인터넷에서 직접 접근할 수 없습니다. 모든 비내부 서버는 두 개의 NIC를 가지고 있습니다 (이들은 두 개의 실제 NIC일 수도 있고, 가상일 수도 있습니다). 첫 번째 NIC는 인터넷에 접근할 수 있으며, 엄격하게 방화벽이 설정되어 있습니다. 두 번째 NIC는 내부 네트워크에 접근할 수 있으며, 그 결과 보안이 조금 덜합니다. 이러한 NIC를 설정하는 방법의 세부 사항은 이 문서의 범위를 벗어나지만, 향후 이를 포함하도록 업데이트할 수 있습니다.

서버의 일반적인 레이아웃은 다음과 같습니다:

Primary MX:
NIC1 = 불안전/인터넷 = mx-1.example.com
NIC2 = 안전/인트라넷 = mx-1.internal.example.com
MTA: Postfix
Greylist Filter: Postgrey

Secondary MX:
NIC1 = 불안전/인터넷 = mx-2.example.com
NIC2 = 안전/인트라넷 = mx-2.internal.example.com
MTA: Postfix
Greylist Filter: Postgrey

SMTP+TLS & IMAPS:
NIC1 = 불안전/인터넷 = secure-mail.example.com
NIC2 = 안전/인트라넷 = secure-mail.internal.example.com
MTA: Postfix (+TLS/SSL)
IMAP: Dovecot (IMAPS)

메일 배달 서버: postman.internal.example.com
MTA (lmtp): DSPAM
안티바이러스: ClamAV
IMAP: Dovecot

데이터베이스 서버: sql-1.internal.example.com
MySQL

파일 서버: files-1.internal.example.com
NFS

임시 빌드 서버: build.internal.example.com
<다양한 도구>

메일은 다음과 같은 방식으로 작동합니다:

인터넷 메일 귀하의 도메인으로:

  1. 메일이 포트 25에서 Primary 또는 Secondary MX로 들어옵니다.
  2. MX는 수신자 및 목적지가 유효한지 확인하기 위해 MySQL 서버에 쿼리합니다:
    a. 수신자가 권한이 없음 - 메일이 거부됩니다 (550 오류)
    b. 수신자가 권한이 있음 - 메일이 계속 진행됩니다.
  3. MX는 그레이리스트 정책을 확인합니다:
    a. 이메일이 처음 시도되는 경우 - 메일이 거부됩니다 (재시도)
    b. 이메일이 처음 시도되지 않은 경우 - 메일이 계속 진행됩니다.
  4. MX는 쿼터 위반을 확인합니다.
    a. 사용자의 쿼터가 가득 찼습니다 - 메일이 반송됩니다.
    b. 사용자가 공간이 있습니다 - 메일이 배달됩니다.
  5. MX는 내부 배달 서버로 메일을 보냅니다 (LMTP를 통해)
  6. 내부 배달 서버는 바이러스/SPAM을 확인합니다.
    a. 이것은 SPAM입니다 - SPAM으로 표시되고 LDA에 배달됩니다.
    b. 이것은 바이러스입니다 - 메일이 거부됩니다.
    c. 이것은 SPAM도 바이러스도 아닙니다 - 메일이 LDA에 전달됩니다.
  7. LDA가 메일을 배달합니다.
    a. 메일이 SPAM으로 표시됩니다 - Maildir의 “SPAM” 디렉토리에 배달됩니다.
    b. 메일이 SPAM으로 표시되지 않습니다 - 받은 편지함에 배달됩니다.

인터넷 메일 귀하의 도메인에서:

  1. 사용자가 포트 25에서 SMTP 릴레이에 연결을 시작합니다.
  2. SMTP 릴레이가 TLS를 제공합니다:
    a. 사용자가 TLS를 사용하지 않음 - 메일이 거부됩니다.
    b. 사용자가 TLS를 사용함 - 세션이 계속 진행됩니다.
  3. SMTP 릴레이가 AUTH (PLAIN)를 제공합니다:
    a. 사용자가 인증하지 않음/인증 실패 - 메일이 거부됩니다.
    b. 사용자가 인증함 - 세션이 정상적으로 완료됩니다.

원격 사용자는 IMAPS (보안 IMAP)를 통해 메일에 접근합니다.

로컬 사용자는 IMAP을 통해 메일에 접근합니다.

사용자가 잘못된 긍정 SPAM 감지를 발견하면 이메일을 “ham-@.”로 전달합니다.
사용자가 잘못된 부정 SPAM 감지를 발견하면 이메일을 “spam-@.”로 전달합니다.

II. 중요 사항

이 모든 것은 Debian 4.0 Etch 또는 Ubuntu Feisty Fawn에 설치할 수 있으며, 두 시스템은 매우 유사합니다. 그러나 Dovecot 및 Postfix의 기본 버전을 사용할 경우 약간의 문제가 발생할 수 있으니, 발생할 경우 이를 기록해 두도록 하겠습니다.

Ubuntu 사용자인 경우, 모든 명령 앞에 “sudo”를 사용하지 않을 것입니다. 대신, “sudo -s” 명령을 사용하여 루트 셸을 실행합니다.

Ubuntu 및 Debian에서 소프트웨어를 설치하는 것은 매우 쉽기 때문에 가능한 한 apt-get 유틸리티를 사용하겠습니다. 우리가 스스로 빌드해야 할 일이 적을수록 나중에 유지 관리하기가 더 쉬워집니다.

그럼 시작해 보겠습니다!

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.