| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- PYTHON
- XCUIElementStaticText
- XCUITest
- iOS Class Chain
- 포그라운드
- push notification
- IOS
- MAC
- Mailpit
- XCode Console
- Appium Inspector
- appium
- 자동화테스트
- Web Driver Agent
- Playwright
- 푸시알림
- WDA
- foreground
- java
- 자동화 테스트
- xpath
- Today
- Total
성장기의 히동
[Playwright/Python] Mailpit으로 가상 STMP 서버 구성하기 본문
🌼
이번 글에서는 Mailpit을 이용해 가상 STMP 서버를 구성하는 과정을 정리했다.
실제 아이디로 로그인하고 메일함에 들어가는 번거로운 과정 없이, 이메일 인증 과정을 보다 간편하게 테스트 할 수 있다.
❓Mailpit이란?
로컬 환경에서 이메일 전송 기능을 개발/테스트할 때 사용하는 오픈소스 로컬 SMTP 서버이자 메일 뷰어 (UI 제공)
흔히 사용하는 Gmail과 같은 실제 서버를 이용하지 않고도 애플리케이션에서 발송하는 모든 메일을 중간에서 가로채서 웹 브라우저에서 바로 확인할 수 있게 해준다.
💭 도입 배경
- 내가 테스트하는 실시간 채팅 서비스는 회원가입을 해야 이용할 수 있고, 회원가입 시 이메일 인증이 필수이다.
- DB에 직접 데이터를 넣어서 테스트 계정을 생성할까 싶었는데, 그럼 E2E 테스트 본질에서 벗어난다.
➡️ 그래서 나는 이메일 인증 자동화 테스트를 반드시 코드로 구현해야 했다.
백엔드 서버의 application.yml 파일에는 실제 Gmail STMP 서버로 설정돼있었는데, 실제 STMP 서버를 이용할 경우 테스트 과정이 너무 번거로웠다.
- 테스트하고자 하는 웹에 더불어 실제 Gmail에 로그인을 하고, 메일함에 들어가서 최신 메일을 가져와 검증해야 한다.
👌🏻 그래서 로컬 SMTP 서버인 Mailpit을 이용해 이메일 인증 자동화를 구현하기로 했다.
🛠️ Mailpit 설정 과정
1. Mailpit 설치
Mailpit 설치 방법은 크게 두 가지다.
- 로컬 설치
- Docker로 컨테이너 실행하기
나는 환경 관리를 좀 더 쉽고 깔끔하게 하기 위해 Docker로 컨테이너를 띄우는 방식을 택했다.
(Mailpit 공식 문서에서 설치 방법을 세부적으로 확인할 수 있다.)
https://mailpit.axllent.org/docs/install/

나는 Docker로 설치할 거라, 위 페이지에서 공식 도커 이미지를 확인하고 pull 해서 컨테이너를 실행했다.
- docker 공식 이미지 Pull
docker pull axllent/mailpit
- docker 컨테이너 실행, 8025 포트와 1025 포트를 열어줌 (공식 홈페이지의 Usage와 동일한 명령어임)
- --restart ~ : PC 재부팅 시 자동으로 컨테이너 다시 시작 (필요 없으면 제거)
- -d : 백그라운드 모드로 실행
- --name=mailpit : 컨테이너 이름 mailpit으로 지정
- 하단에 보면 WebUI는 8025 포트를 사용하고, STMP는 1025 포트를 사용한다고 명시되어 있어서 두 포트 모두 열어줬다.
docker run -d \
--restart unless-stopped \
--name=mailpit \
-p 8025:8025 \
-p 1025:1025 \
axllent/mailpit
- 실행중인 컨테이너 목록 확인
docker ps

- 구체적으로 mailpit 이름으로 확인하고 싶으면
docker ps -f name=mailpit

- 웹 UI 확인
http://localhost:8025

2. 백엔드 application.yml 파일 수정
# ── Mail (Mailpit 로컬 테스트용 SMTP) ─────────────────────────────────────────
mail:
host: localhost
port: 1025
username: test@youngchat.com
password: test
properties:
smtp:
auth: false
starttls:
enable: false
username은 RFC 5321 형식의 유효한 이메일 주소여야 에러가 나지 않는다.
나는 에러 한 번 봤따 ^.^...
8025 포트는 웹 브라우저에서 확인하려고 열은 포트라 실제 STMP 처럼 사용하려면 1025로 열어줘야 한다.
그럼 설정은 끝났다. 완전 간단!
❗️실제로 작동하는지 확인하기

def send_auth_email(self):
self.auth_email_button.click()
내가 테스트하는 웹은 이메일 주소를 입력하고, 인증 버튼을 누르면 이메일이 전송된다.
그래서 인증 이메일을 전송하는 버튼을 미리 페이지별로 POM 형식으로 잡아놓고, 클릭만 한다.

그럼 이렇게 Mailpit 웹 브라우저에서 실제로 인증 메일이 도착한 것을 확인할 수 있다.
베리 이지 !
그러면 다음 포스팅에서는 Mailpit을 이용해 이메일 테스트 자동화 한 과정을 구체적으로 다뤄보겠다.
많은.. 일이..있었다..
'☁️ QA' 카테고리의 다른 글
| [Playwright/Python] Chromium이 열리지 않는 경우, 메모리 충돌이 발생하는 경우 이슈 해결기 (3) | 2026.03.11 |
|---|---|
| [Appium, iOS] 푸시 알림 배너를 OCR로 검증하는 방법 - tesseract, tess4j / OCR 자동화 (1) | 2025.12.12 |
| [Appium, iOS] 포그라운드에서 iOS 앱 푸시 알림 테스트 - 알림센터에 등록되지 않는 경우 (0) | 2025.10.23 |
| [Appium, iOS] 같은 로케이터를 사용하는 버튼을 눌렀을 때, 요소를 찾지 못한다는 에러가 발생하는 이유 (0) | 2025.10.17 |
| [Appium, iOS] TypePickerWheel을 조작할 때 발생한 에러 직면기 및 Locator 리팩토링 (0) | 2025.10.15 |