메일 전달 구조와 서비스 운영
SMTP·POP3·IMAP의 역할과 봉투·헤더·포트를 구분합니다.
1. 메일 작성·전달·조회는 서로 다른 단계다
메일은 작성한 내용을 상대 컴퓨터로 바로 보내는 구조가 아니다. 작성·제출·중계·보관·조회가 나뉘므로, 어느 단계가 실패했는지 구분해야 한다.
| 구성요소 | 역할 |
|---|---|
| MUA: Mail User Agent | 사용자가 메일을 작성하고 읽는 프로그램 |
| MSA: Mail Submission Agent | 사용자가 작성한 메일을 인증·정책에 따라 접수하는 제출 지점 |
| MTA: Mail Transfer Agent | SMTP로 다른 메일 서버에 메시지를 전달·중계 |
| MDA: Mail Delivery Agent | 수신자의 사서함에 최종 배달 |
| 메일 저장소·접근 서버 | 메시지를 보관하고 POP3·IMAP으로 조회를 제공 |
한 프로그램이 여러 역할을 맡을 수 있다. 웹메일 사용자는 HTTPS로 화면에 접속하지만, 뒤에서 메일을 전달하는 SMTP의 역할이 없어지는 것은 아니다.
발신 MTA는 수신자 주소의 도메인에 대해 DNS MX를 조회하여 수신 메일 서버를 찾는다. MX의 우선순위 값이 10과 20이면 일반적으로 10을 우선 시도한다. MX의 값은 메일 서버 이름이며, 실제 연결 주소는 A·AAAA로 해석한다.
2. SMTP의 기본 흐름과 명령
SMTP는 메일 전송을 위한 명령·응답 프로토콜이다. 대표 흐름은 다음과 같다.
EHLO → MAIL FROM → RCPT TO → DATA → QUIT
| 명령 | 의미 |
|---|---|
| HELO / EHLO | 인사와 세션 시작 / ESMTP 확장 기능 확인 |
| MAIL FROM | 봉투의 발신·반송 경로 지정 |
| RCPT TO | 실제 배달할 수신자 지정, 여러 번 사용 가능 |
| DATA | 메시지의 헤더와 본문 전송 시작 |
| RSET | 현재 메일 트랜잭션 초기화 |
| QUIT | 세션 종료 |
메일 헤더와 본문은 빈 줄로 구분한다. MIME은 첨부파일·다양한 콘텐츠 형식을 표현하도록 메일 형식을 확장하며, MIME 자체가 암호화를 제공하지는 않는다.
3. SMTP 봉투와 메시지 헤더를 구분한다
MAIL FROM:<bounce@example.com>
RCPT TO:<reader@example.net>
DATA
From: Sender <sender@example.com>
To: Reader <reader@example.net>
Subject: Study meeting
The meeting begins at 10:00.
.
MAIL FROM과 RCPT TO는 전송 시스템의 봉투 정보다. From:·To:·Subject:는 사용자가 보는 메시지 헤더다. 화면에 보이는 From:과 실제 SMTP 발신 경로가 반드시 일치하지는 않는다.
그러므로 표시된 발신자 이름만으로 신원을 믿어서는 안 된다. 이 차이가 SPF·DKIM·DMARC의 검사 대상을 구분하는 출발점이다. 인증 기술은 메일 공격과 발신 인증·메시지 보호에서 다룬다.
4. SMTP 응답과 전달 실패
| 첫 자리 | 의미 | 판단 |
|---|---|---|
| 2xx | 성공 | 해당 단계의 수락 |
| 3xx | 추가 입력 필요 | DATA 등 후속 입력 진행 |
| 4xx | 일시적 실패 | 큐에 보관하고 정책에 따라 재시도 |
| 5xx | 영구적 실패 | 주소·정책 등 원인 확인 후 실패 처리 |
수신 MTA가 메시지를 수락했다는 사실이 수신자가 이미 읽었다는 뜻은 아니다. 전달 큐에 남았는지, 사서함에 저장됐는지, POP3·IMAP 접속만 실패했는지를 나누어 확인한다.
메일 서버는 인증된 사용자나 허가된 송신자에게만 외부 목적지 중계를 허용한다. 반면 자기 도메인 사용자에게 들어오는 정상 메일까지 모두 인증된 외부 MTA에서만 받도록 제한하는 것과는 다르다.
5. POP3와 IMAP
| 구분 | POP3 | IMAP |
|---|---|---|
| 중심 기능 | 사서함 메시지를 가져오기 | 서버의 메일함·읽음 상태 등을 관리·동기화 |
| 기본 TCP 포트 | 110 | 143 |
| 처음부터 TLS를 사용하는 포트 | 995 | 993 |
| 여러 기기 사용 | 서버 상태 동기화가 제한적 | 서버 중심 동기화에 적합 |
POP3의 기본 상태는 인증 → 작업 → 갱신이다. RETR은 가져오기, DELE는 삭제 표시이며, 작업 상태에서 정상적으로 QUIT하여 갱신 단계에 들어갈 때 삭제가 반영된다. 클라이언트가 복사본을 남기도록 설정할 수 있으므로 POP3는 읽으면 무조건 삭제한다는 설명은 틀리다.
IMAP도 필요한 메일 내용을 내려받는다. 차이는 다운로드 유무가 아니라 서버의 폴더·메시지 상태를 관리하는 방식에 있다.
6. 포트와 운영 보호를 연결한다
| 용도 | 기본 TCP 포트 |
|---|---|
| MTA 사이 SMTP 전달 | 25 |
| 사용자 메일 제출, STARTTLS 사용 가능 | 587 |
| 연결 즉시 TLS를 시작하는 사용자 메일 제출 | 465 |
465를 모든 서버 간 SMTP 전달의 보안 포트로 외우지 않는다. 사용자 제출·조회 구간은 TLS로 보호하고, 계정별 전송량·메시지 크기·수신자 수를 제한한다. 반복 실패, 대량 발송, 큐·디스크 사용량을 기록·점검하여 계정 오용과 자원 고갈에 대응한다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01메일 화면의 From 주소가 실제 SMTP MAIL FROM과 같아야 하는가?
반드시 같지 않다. MAIL FROM은 SMTP 봉투의 발신·반송 경로이고 From은 메시지 헤더에 표시되는 작성자 정보다.
02POP3로 메시지를 가져오면 서버에서 즉시 무조건 삭제되는가?
아니다. RETR은 가져오기, DELE는 삭제 표시다. 정상적인 종료의 갱신 단계에서 표시가 반영되며 클라이언트가 서버 복사본을 남길 수도 있다.