SMTP, 우분투 Postfix
✅ SMTP?
SMTP(Simple Mail Transfer Protocol)는 이메일을 전송하기 위해 사용되는 표준 통신 프로토콜
인터넷 상에서 이메일 클라이언트 ↔ 메일 서버 ↔ 수신자 메일 서버 간에 텍스트 기반 명령어를 통해 메시지를 전송합니다.
📌 SMTP의 역할
- 이메일 작성자 → 서버 전송 (Client to Server)
- 이메일 서버 → 수신자 서버 전송 (Server to Server)
- 전송만 가능, 수신은 불가능 (수신은 POP3 또는 IMAP 프로토콜이 담당)
📦 SMTP 흐름 요약
plaintext
[보낸 사람]
↓ SMTP
[보낸 사람 메일 서버]
↓ SMTP
[받는 사람 메일 서버]
↓ IMAP 또는 POP3
[받는 사람]
✅ SMTP 기본 포트
| 포트 | 용도 | 설명 |
|---|---|---|
| 25 | 기본 SMTP 포트 | 서버 간 메일 전송 (많이 차단됨) |
| 465 | SMTP over SSL (암호화) | 구식이나 일부 서비스에서 사용 |
| 587 | SMTP with STARTTLS | ✅ 현재 권장되는 전송 방식 |
📄 SMTP 주요 명령어 (명령 기반 프로토콜)
| 명령어 | 설명 |
|---|---|
HELO / EHLO |
클라이언트가 서버에게 자신을 소개 |
MAIL FROM: |
발신자 이메일 주소 |
RCPT TO: |
수신자 이메일 주소 |
DATA |
본문 시작 (제목, 본문 등 포함) |
QUIT |
연결 종료 |
SMTP는 사람이 타이핑할 수도 있을 정도로 단순한 텍스트 프로토콜입니다.
🔐 SMTP 보안 방식
SMTP는 원래 암호화되지 않은 상태로 설계되었기 때문에, 현대에서는 보안 강화가 필요합니다.
| 보안방식 | 설명 |
|---|---|
| STARTTLS | 일반 연결을 TLS로 승격 (587번 포트에서 사용) |
| SMTPS (SSL) | 암호화된 SMTP (465번 포트) |
| 인증 필요 (AUTH) | 대부분의 SMTP 서버는 사용자 인증 필수 |
🛠 SMTP 클라이언트 구성 요소 (개발 시)
- SMTP 서버 주소: ex)
smtp.gmail.com,smtp.naver.com - 포트 번호: 보통 587 (STARTTLS) 또는 465 (SSL)
- 이메일 계정 정보: 인증을 위한 ID / 앱 비밀번호
- TLS/SSL 설정: 암호화 전송 필요
- 보낸 사람, 받는 사람, 제목, 본문, 첨부파일 등
📫 SMTP와 관련된 주요 용어
| 용어 | 설명 |
|---|---|
| MUA (Mail User Agent) | 이메일 클라이언트 (ex. Outlook, Gmail 앱 등) |
| MTA (Mail Transfer Agent) | 메일 전송 서버 (SMTP 서버) |
| MDA (Mail Delivery Agent) | 메일 수신 및 보관 서버 (POP3/IMAP 서버) |
✅ POP3란?
POP3 (Post Office Protocol version 3)는 원격 메일 서버에 저장된 이메일을 다운로드해서 로컬에 저장하는 수신 프로토콜입니다.
- SMTP가 "이메일을 보내는" 프로토콜이라면
- POP3는 "이메일을 받아오는" 데 사용됩니다.
📦 POP3 기본 특징
| 항목 | 설명 |
|---|---|
| 프로토콜 목적 | 메일 수신 (다운로드) |
| 기본 포트 | 110 (일반), 995 (SSL) |
| 메시지 저장 방식 | 메일을 로컬로 다운로드하고 서버에서 삭제 (기본 동작) |
| 연결 방식 | 단방향 (서버 → 클라이언트) |
| 프로토콜 상태 | 상태 유지 없음 (Stateless) |
| 대안 프로토콜 | IMAP (보다 동기화 중심) |
📥 POP3 동작 흐름
- 메일 클라이언트(Outlook, Thunderbird 등)가 POP3 서버에 연결
- 사용자 인증 (ID/PW)
- 서버에 저장된 메일을 다운로드
- 다운로드 후 서버에서 메일 삭제 (옵션: 서버에 복사본 유지 가능)
- 연결 종료
📄 POP3 주요 명령어
POP3는 텍스트 기반 명령어로 동작합니다 (Telnet 등으로 직접 테스트 가능).
| 명령어 | 설명 |
|---|---|
USER username |
사용자 이름 입력 |
PASS password |
비밀번호 입력 |
STAT |
메시지 개수, 전체 크기 확인 |
LIST |
메시지 목록 확인 |
RETR n |
n번째 메시지 다운로드 |
DELE n |
n번째 메시지 삭제 요청 |
QUIT |
연결 종료 및 삭제 적용 |
🔐 POP3 포트 및 암호화
| 포트 | 설명 |
|---|---|
| 110 | 일반 POP3 (암호화 없음) |
| 995 | ✅ POP3 over SSL (보안 연결) |
🆚 POP3 vs IMAP
| 항목 | POP3 | IMAP |
|---|---|---|
| 메일 저장 위치 | 클라이언트 (로컬) | 서버 (중앙 저장) |
| 디바이스 동기화 | ❌ 불가능 | ✅ 가능 |
| 폴더 지원 | ❌ 없음 | ✅ 있음 |
| 서버에서 삭제 | 기본적으로 삭제 | 기본적으로 유지 |
| 사용 대상 | 단일 장치에서 메일 확인 | 여러 기기에서 메일 동기화 |
POP3는 단일 장치 기반, IMAP은 클라우드 기반 메일 관리에 더 적합합니다.
📧 실제 메일 서비스의 POP3 설정 예시
- Gmail POP3 설정
| 항목 | 값 |
|---|---|
| 서버 주소 | pop.gmail.com |
| 포트 | 995 |
| 보안 | SSL 필수 |
| 인증 필요 | ✅ ID, 앱 비밀번호 필요 |
설정 경로: Gmail 설정 → 전달 및 POP/IMAP → POP 사용 설정
📧 POP3를 사용할 수 있는 클라이언트/환경
- 데스크탑: Outlook, Thunderbird, Windows Mail
- 모바일: 대부분의 이메일 앱에서 설정 가능
- .NET 또는 다른 언어에서 직접 구현 가능 (
MailKit,OpenPop.NET등 라이브러리 사용)
📌 POP3 사용 시 주의사항
| 항목 | 설명 |
|---|---|
| ✅ 서버 저장 유무 설정 | 대부분 클라이언트에서 "서버에 복사본 유지" 옵션 있음 |
| ❌ 여러 기기 동시 사용 어려움 | 한 번 내려받으면 다른 기기에서 확인 어려움 |
| 🔐 보안 필수 | 항상 SSL 포트를 사용해야 함 (995) |
| 🔑 앱 비밀번호 사용 | Gmail/Naver 등은 앱 비밀번호 요구 |
📚 정리 요약
| 항목 | POP3 요약 |
|---|---|
| 목적 | 메일 수신 (다운로드 방식) |
| 특징 | 클라이언트 중심, 단방향 |
| 기본 포트 | 110 (일반), 995 (SSL) |
| 대체 프로토콜 | IMAP (동기화 중심) |
| 적합한 경우 | 단일 디바이스, 오프라인 사용 중심 환경 |
📫 우분투 메일서버 구축 추가 자료 동영상
✅ 우분투 Postfix 설치
Sendmail은 복잡하고 보안에 취약해서, 보통은 Postfix를 많이 사용
bash
sudo apt update
sudo apt install postfix
sudo apt install mailutils
Postfix가 설치되면
bash
설정
/etc/postfix/main.cf
포트 변경
sudo vim /etc/postfix/master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
3512 inet n - y - - smtpd
# 25번(smtp) 포트를 유지하면서 3512 포트를 추가