01 / 11

MAIL DELIVERY MECHANISM

Host A가 보낸 메일은
Host B까지 어떻게 가는가?

alice@naver.com → bob@gmail.com · 인증서와 보안 협상은 생략

USERHost A메일 작성
HTTP(S)
TCP 80 / 443
DOMAIN Anaver.com 메일 시스템Roundcube · Postfix · Dovecot
SMTP
TCP 25
DOMAIN Bgmail.com 메일 시스템Postfix · Dovecot · Maildir
HTTP(S)
TCP 80 / 443
USERHost B메일 열람
범위: 메일 제출 → DNS 조회 → 서버 간 전송 → 로컬 배달 → 우편함 저장 → 사용자 열람

교육용 자체 구축 구조를 naver.com / gmail.com 이름으로 설명합니다. 실제 네이버·구글의 내부 구현을 뜻하지 않습니다.

02 / 11

SYSTEM BOUNDARY

두 메일 시스템과 외부 DNS

Roundcube, Postfix, Dovecot, vhost DBMS를 서로 다른 역할로 분리한다.

naver.com

DOMAIN A
Roundcube WAS웹 메일 UI · IMAP/SMTP 클라이언트
Postfix SMTP메일 제출 · 큐 · 외부 MTA 전송
DovecotLMTP 최종 배달 · IMAP/POP3 열람
vhost DBMS가상 도메인 · 계정 · 별칭 · 경로
Mail Storage사용자별 Maildir 또는 mbox · 메일 본문과 첨부 저장
외부 DNSgmail.com의 MX 조회
MX 호스트의 A/AAAA 조회

gmail.com

DOMAIN B
Roundcube WAS웹 메일 UI · IMAP/SMTP 클라이언트
Postfix SMTP외부 수신 · 큐 · 메일 제출
DovecotLMTP 최종 배달 · IMAP/POP3 열람
vhost DBMS수신 도메인 · 사용자 · 저장 경로
Mail Storagebob의 최종 우편함 · 이 예시는 Maildir 사용
발신 영역수신 영역외부 공통 인프라계정 메타데이터

vhost DBMS에는 메일 본문이 아니라 도메인·사용자·별칭·쿼터·홈/메일 경로 같은 메타데이터를 저장한다.

03 / 11

END-TO-END

메일 한 통의 8개 홉

각 화살표가 실제 연결 주체, 프로토콜, 포트를 보여준다.

1
Host A웹 브라우저
HTTP(S)
80 / 443
Roundcube A메일 작성 UI
2
Roundcube A완성된 메시지
SMTP SUBMIT
TCP 587
Postfix A발신 큐에 수용
3
Postfix Agmail.com 목적지
DNS
UDP/TCP 53
외부 DNSMX · A/AAAA 응답
4
Postfix A발신 MTA
SMTP
TCP 25
Postfix B수신 MTA
5
Postfix B수신자 확인
SQL
3306 / 5432
vhost DBMS Bbob 계정 · 경로
6
Postfix B로컬 배달 요청
LMTP · UNIX 소켓
또는 TCP 24
Dovecot B최종 배달 담당
7
Dovecot B메시지 저장
파일시스템 I/O
포트 없음
bob의 Maildirtmp → new → cur
8
Roundcube B받은편지함 요청
IMAP
TCP 143
Dovecot B메일 목록 · 본문 반환

Host B의 브라우저는 Dovecot에 직접 접속하지 않는다. 브라우저는 Roundcube와 HTTP(S)로, Roundcube는 Dovecot과 IMAP으로 통신한다.

04 / 11

DOMAIN A · SEND

Host A에서 메일을 제출한다

Roundcube는 화면을 제공하고, 실제 외부 전송은 Postfix가 맡는다.

① 웹 메일 접속브라우저가 Roundcube 화면을 사용
Host ABrowser
HTTP(S)
80 / 443
Roundcube AWAS · 메시지 작성
SQL
3306 / 5432
Roundcube DB환경설정 · 주소록 · 세션
② 발신 제출Roundcube가 완성된 메일을 Postfix로 전달
Roundcube AFrom · To · 본문 · 첨부
SMTP SUBMISSION
TCP 587
Postfix A발신 큐 생성
SQL
3306 / 5432
vhost DBMS A발신 도메인 · 계정 · 별칭
③ 보낸편지함 사본Roundcube가 별도로 Sent 폴더에 추가
Roundcube ASent 폴더 APPEND
IMAP
TCP 143
Dovecot A발신자 우편함 접근
파일시스템 I/O
포트 없음
alice의 MaildirSent 사본 저장
Postfix 큐 상대 서버가 받을 때까지 메일을 임시 보관하고 실패하면 재시도한다.
Sent 사본 수신 서버로 가는 원본과 별개로 발신자 우편함에 저장된다.

Roundcube DB와 vhost DBMS는 논리적으로 구분했다. 운영 환경에서는 같은 DBMS 인스턴스를 공유할 수도 있다.

05 / 11

EXTERNAL DNS

어느 서버로 보낼지 MX로 찾는다

DNS는 메일을 운반하지 않고, 목적지 메일 서버의 이름과 IP를 알려준다.

MTAPostfix A수신자 도메인: gmail.com
DNS QUERY
UDP/TCP 53
RESOLVER재귀 DNSMX와 A/AAAA를 순서대로 조회
DNS QUERY
UDP/TCP 53
AUTHORITATIVEgmail.com 권한 DNS도메인의 공식 레코드 응답
1 · MX RESPONSEgmail.com. MX 10 mail.gmail.com.
2 · A / AAAA RESPONSEmail.gmail.com. A 203.0.113.20
결과: Postfix A는 응답받은 IP의 TCP 25번 포트로 연결한다. MX 우선순위가 여러 개면 낮은 숫자부터 시도한다.

일반 DNS 질의는 UDP 53을 우선 사용하고, 응답이 크거나 재시도·영역 전송 등의 경우 TCP 53을 사용할 수 있다.

06 / 11

MTA TO MTA

Postfix A에서 Postfix B로 전송한다

서버 간 메일 전달은 SMTP TCP 25가 담당한다.

Postfix A

발신 MTA · alice@naver.com

발신 큐 · 임시 저장/var/spool/postfix/...
EHLO mail.naver.comMAIL FROM:<alice@naver.com>RCPT TO:<bob@gmail.com>DATA ...
SMTP
TCP 25
Postfix B가 250 OK로 수락하면 A는 해당 큐 항목을 제거한다.

Postfix B

수신 MTA · gmail.com

수신 큐 · 임시 저장/var/spool/postfix/...
250 mail.gmail.com250 Sender OK250 Recipient OK250 Message accepted
중요: 이 시점의 성공은 “gmail.com의 Postfix가 메일을 인수했다”는 뜻이다. bob의 최종 우편함 저장은 다음 단계인 LMTP에서 완료된다.

인증, TLS, 스팸 필터, DKIM/SPF/DMARC 처리는 흐름을 단순화하기 위해 생략했다.

07 / 11

DOMAIN B · LOCAL DELIVERY

수신자를 확인하고 우편함에 넣는다

Postfix가 받은 메일을 Dovecot LMTP에 넘기면, Dovecot이 최종 파일을 만든다.

MTAPostfix B수신 큐의 메시지
LMTP · UNIX 소켓
포트 없음
(분리 시 TCP 24)
DELIVERYDovecot LMTP사용자별 최종 배달
파일시스템 I/O
포트 없음
FINAL STORAGEbob의 Maildirtmp → new → cur
Postfix / Dovecot수신 도메인과 사용자 조회
MySQL TCP 3306
또는 PostgreSQL TCP 5432
vhost DBMS B메일 본문은 저장하지 않음
domainmailboxaliasquotamail_path
정상 계정LMTP 성공 응답 → Postfix B 큐 제거
없는 계정수신 거부 또는 반송 처리

같은 서버라면 Postfix와 Dovecot 사이 LMTP는 보통 /var/spool/postfix/private/dovecot-lmtp 같은 UNIX 소켓을 사용한다.

08 / 11

READING MAIL

Host B가 저장된 메일을 읽는다

웹 메일은 IMAP을 사용하고, 별도 메일 클라이언트는 IMAP 또는 POP3를 선택한다.

웹 메일 · Roundcube

브라우저와 Dovecot 사이를 Roundcube가 중계한다.

Host BBrowser
HTTP(S)
80 / 443
Roundcube BWAS
IMAP
TCP 143
Dovecot BMaildir 읽기
목록·폴더·읽음·삭제 상태는 서버 우편함 기준으로 관리된다.

별도 메일 클라이언트

Outlook·Thunderbird 같은 프로그램이 Dovecot에 직접 연결한다.

메일 클라이언트Host B의 앱
IMAP TCP 143
또는 POP3 TCP 110
Dovecot BIMAP/POP3 서비스
IMAP: 서버와 상태 동기화 · POP3: 메시지를 클라이언트로 내려받기
답장 전송: Roundcube B → Postfix B는 다시 SMTP Submission TCP 587을 사용한다.

인증서 설명은 생략했으므로 기본 포트 143/110을 표시했다. 보안 전용 포트는 IMAPS 993, POP3S 995이다.

09 / 11

WHERE IS THE MESSAGE?

메일은 단계마다 저장 위치가 달라진다

큐는 임시 저장, Maildir/mbox는 사용자 우편함의 최종 저장이다.

단계
담당
저장 성격
대표 위치 / 동작
발신 제출 직후
Postfix ASMTP 587로 수용
임시 큐상대 서버 수락까지
/var/spool/postfix/...실패 시 재시도
보낸편지함 사본
Dovecot AIMAP APPEND
최종 우편함alice의 Sent
/var/vmail/naver.com/alice/Maildir/.Sent/
수신 직후
Postfix BSMTP 25로 수용
임시 큐LMTP 완료까지
/var/spool/postfix/...로컬 배달 대기
LMTP 완료
Dovecot B파일시스템 I/O
최종 우편함bob의 INBOX
/var/vmail/gmail.com/bob/Maildir/
/var/vmail/gmail.com/bob/Maildir/
tmp/저장 중인 임시 파일. 쓰기가 끝나기 전 단계.
new/배달이 끝났지만 아직 확인되지 않은 새 메일.
cur/클라이언트가 확인한 메일과 상태 플래그.

Maildir에서는 메일 한 통이 파일 하나다. 파일명과 위치 변경으로 읽음 등 상태를 반영한다.

10 / 11

MAILBOX FORMAT

mbox와 Maildir 저장 방식 비교

차이는 “메일 여러 통을 한 파일에 넣는가, 한 통씩 파일로 나누는가”이다.

mbox

전통 방식
/var/mail/bob
└─ 하나의 큰 파일 안에
   메일 1 + 메일 2 + 메일 3 ...
  • 저장 단위메일함 하나 = 파일 하나
  • 쓰기큰 파일 끝에 메시지를 이어 붙임
  • 동시 접근파일 잠금이 중요하고 경합 가능
  • 장점파일 수가 적고 순차 읽기·아카이브가 단순
  • 주의파일이 커지며 수정·복구 영향 범위가 큼
결론: 이 자료의 가상 사용자 구조는 /var/vmail/<domain>/<user>/Maildir/ 형태를 사용한다.

Dovecot 문서는 mbox를 전통적 호환·아카이브 용도로 설명하며, 활성 프로덕션 저장에는 Maildir 같은 현대적 형식을 권장한다.

11 / 11

PORT & ROLE RECAP

프로토콜·포트 한 장 정리

출발 → 도착
프로토콜
포트
역할
Browser ↔ Roundcube
HTTP / HTTPS
TCP 80 / 443
웹 메일 화면 요청·응답
Roundcube → Postfix
SMTP Submission
TCP 587
사용자가 작성한 메일 제출
Postfix → 외부 DNS
DNS
UDP/TCP 53
수신 도메인의 MX·A/AAAA 조회
Postfix A → Postfix B
SMTP
TCP 25
메일 서버 간 전송
Postfix → Dovecot
LMTP
UNIX 소켓 / TCP 24
로컬 사용자의 최종 우편함 배달
Roundcube → Dovecot
IMAP
TCP 143
웹 메일 목록·본문·폴더·상태 동기화
Mail client → Dovecot
POP3
TCP 110
메일을 클라이언트로 내려받기
Mail services ↔ vhost DBMS
MySQL / PostgreSQL
TCP 3306 / 5432
가상 도메인·사용자·별칭·경로 조회
Roundcube A작성
587
Postfix ADNS 53 조회
SMTP 25
Postfix B수신
LMTP
Dovecot → Maildir최종 저장

전체 핵심: Roundcube는 UI, Postfix는 SMTP 운송, DNS는 목적지 탐색, vhost DBMS는 계정 메타데이터, Dovecot은 LMTP 저장과 IMAP/POP3 열람을 맡는다.