Mailpit이란?

Mailpit은 개발 및 테스트 환경에서 사용하는 SMTP catch-all 서버다. 애플리케이션이 발송하는 모든 이메일을 가로채서 웹 UI로 확인할 수 있게 해준다. 실제 이메일이 외부로 발송되지 않으므로, 개발 중 실수로 고객에게 테스트 메일이 전달되는 사고를 방지한다.

MailHog의 후속 프로젝트로, Go로 작성되었으며 더 적은 리소스로 동작한다.


아키텍처

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│ Application  │     │   Mailpit    │     │   Mailpit    │
│ (SMTP 발송)  │────▶│  SMTP Server │────▶│   Web UI     │
│              │     │  :1025       │     │  :8025       │
└──────────────┘     └──────────────┘     └──────────────┘
컴포넌트포트역할
SMTP Server1025 (기본)애플리케이션의 SMTP 메일을 수신
Web UI8025 (기본)수신된 이메일을 브라우저에서 조회
API8025REST API로 메일 조회, 삭제, 검색 (자동화 테스트용)

SMTP Catch-All이란?

수신 주소에 관계없이 모든 이메일을 가로채서 보관하는 방식이다. 실제 MX 레코드나 DNS 설정 없이, 애플리케이션의 SMTP 설정만 Mailpit으로 지정하면 동작한다.

# 애플리케이션 설정 예시
SMTP_HOST=localhost
SMTP_PORT=1025

주요 기능

기능설명
HTML/Text 미리보기이메일의 HTML 렌더링과 텍스트 본문을 탭으로 전환하여 확인
첨부파일 확인첨부된 파일 목록 조회 및 다운로드
검색보낸 사람, 받는 사람, 제목, 본문으로 이메일 검색
APIREST API로 이메일 조회 — E2E 테스트에서 발송 결과 검증에 활용
Spam 분석SpamAssassin 점수 확인 (선택적)
SMTP Relay특정 조건의 메일만 실제 SMTP 서버로 중계 가능
MessageID 링크이메일의 Message-ID로 직접 접근 가능

MailHog와의 비교

항목MailHogMailpit
언어GoGo
유지보수2020년 이후 비활성활발한 개발 중
메모리 사용상대적으로 높음경량 (SQLite 기반 저장)
검색기본적전문 검색 지원
APIv1/v2REST + WebSocket
HTTPS미지원자동 TLS 지원

Docker 구성 예시

services:
  mailpit:
    image: axllent/mailpit
    ports:
      - "8025:8025"  # Web UI
      - "1025:1025"  # SMTP
    environment:
      MP_MAX_MESSAGES: 5000       # 최대 보관 메일 수
      MP_DATABASE: /data/mailpit.db  # 영속 저장소
    volumes:
      - mailpit-data:/data

관련 문서

  • Celery — 비동기 Worker가 이메일 발송 태스크를 처리하면 Mailpit이 수신