MAIL DELIVERY MECHANISM
alice@naver.com → bob@gmail.com · 인증서와 보안 협상은 생략
교육용 자체 구축 구조를 naver.com / gmail.com 이름으로 설명합니다. 실제 네이버·구글의 내부 구현을 뜻하지 않습니다.
SYSTEM BOUNDARY
Roundcube, Postfix, Dovecot, vhost DBMS를 서로 다른 역할로 분리한다.
vhost DBMS에는 메일 본문이 아니라 도메인·사용자·별칭·쿼터·홈/메일 경로 같은 메타데이터를 저장한다.
END-TO-END
각 화살표가 실제 연결 주체, 프로토콜, 포트를 보여준다.
Host B의 브라우저는 Dovecot에 직접 접속하지 않는다. 브라우저는 Roundcube와 HTTP(S)로, Roundcube는 Dovecot과 IMAP으로 통신한다.
DOMAIN A · SEND
Roundcube는 화면을 제공하고, 실제 외부 전송은 Postfix가 맡는다.
Roundcube DB와 vhost DBMS는 논리적으로 구분했다. 운영 환경에서는 같은 DBMS 인스턴스를 공유할 수도 있다.
EXTERNAL DNS
DNS는 메일을 운반하지 않고, 목적지 메일 서버의 이름과 IP를 알려준다.
gmail.com. MX 10 mail.gmail.com.mail.gmail.com. A 203.0.113.20일반 DNS 질의는 UDP 53을 우선 사용하고, 응답이 크거나 재시도·영역 전송 등의 경우 TCP 53을 사용할 수 있다.
MTA TO MTA
서버 간 메일 전달은 SMTP TCP 25가 담당한다.
발신 MTA · alice@naver.com
/var/spool/postfix/...EHLO mail.naver.comMAIL FROM:<alice@naver.com>RCPT TO:<bob@gmail.com>DATA ...수신 MTA · gmail.com
/var/spool/postfix/...250 mail.gmail.com250 Sender OK250 Recipient OK250 Message accepted인증, TLS, 스팸 필터, DKIM/SPF/DMARC 처리는 흐름을 단순화하기 위해 생략했다.
DOMAIN B · LOCAL DELIVERY
Postfix가 받은 메일을 Dovecot LMTP에 넘기면, Dovecot이 최종 파일을 만든다.
같은 서버라면 Postfix와 Dovecot 사이 LMTP는 보통 /var/spool/postfix/private/dovecot-lmtp 같은 UNIX 소켓을 사용한다.
READING MAIL
웹 메일은 IMAP을 사용하고, 별도 메일 클라이언트는 IMAP 또는 POP3를 선택한다.
브라우저와 Dovecot 사이를 Roundcube가 중계한다.
Outlook·Thunderbird 같은 프로그램이 Dovecot에 직접 연결한다.
인증서 설명은 생략했으므로 기본 포트 143/110을 표시했다. 보안 전용 포트는 IMAPS 993, POP3S 995이다.
WHERE IS THE MESSAGE?
큐는 임시 저장, Maildir/mbox는 사용자 우편함의 최종 저장이다.
/var/spool/postfix/...실패 시 재시도/var/vmail/naver.com/alice/Maildir/.Sent//var/spool/postfix/...로컬 배달 대기/var/vmail/gmail.com/bob/Maildir/Maildir에서는 메일 한 통이 파일 하나다. 파일명과 위치 변경으로 읽음 등 상태를 반영한다.
MAILBOX FORMAT
차이는 “메일 여러 통을 한 파일에 넣는가, 한 통씩 파일로 나누는가”이다.
/var/vmail/<domain>/<user>/Maildir/ 형태를 사용한다.Dovecot 문서는 mbox를 전통적 호환·아카이브 용도로 설명하며, 활성 프로덕션 저장에는 Maildir 같은 현대적 형식을 권장한다.
PORT & ROLE RECAP
전체 핵심: Roundcube는 UI, Postfix는 SMTP 운송, DNS는 목적지 탐색, vhost DBMS는 계정 메타데이터, Dovecot은 LMTP 저장과 IMAP/POP3 열람을 맡는다.