---
title: "BadSMTP — 일부러 에러를 뿜는 SMTP 서버로 이메일 클라이언트 테스트하기"
published: 2026-02-14T21:51:14.000Z
canonical: https://jeff.news/article/859
---
# BadSMTP — 일부러 에러를 뿜는 SMTP 서버로 이메일 클라이언트 테스트하기

SMTP 클라이언트 테스트를 위해 원하는 에러 응답을 설정 없이 반환하는 Go 기반 테스트 서버. 외부 연결을 하지 않아 안전하고, CI 파이프라인에 임베딩 가능.

- SMTP 클라이언트를 테스트할 때 가장 귀찮은 게 "특정 에러를 재현하는 것"인데, BadSMTP는 원하는 SMTP 에러 응답을 **설정 없이 바로** 돌려주는 테스트용 서버임

- postfix, smtp-sink, exim, sendmail 같은 걸 일부러 망가뜨려서 특정 에러를 만들어내는 삽질을 안 해도 됨

- Go로 작성된 싱글 바이너리라 로컬에서도, CI 파이프라인에서도 바로 띄울 수 있음. 설정 제로, 초고성능, 대규모 병렬 처리 가능

- **핵심 특성: 메시지를 절대 발송하지 않음**. 외부 연결 자체를 안 하니까 테스트 메일이 실제 수신자에게 날아갈 걱정이 없음

- 인증 성공/실패, DKIM 미스매치, SPF 실패 등을 마음대로 시뮬레이션할 수 있음. "당신의 거짓말을 믿어줍니다"라는 표현이 웃김

- 네트워크 지연 테스트도 가능 — 온디맨드 타임아웃과 느린 응답을 설정할 수 있음

- Laravel, Symfony, Rails, Django는 물론이고 Apple Mail, Thunderbird, Outlook 등 SMTP를 쓰는 모든 앱과 바로 연동됨

- maildir 포맷으로 메시지를 로컬 폴더에 저장하는 옵션도 있고, 확장 아키텍처를 통해 자체 시스템이나 API에 연결할 수도 있음. 라이선스는 GPLv3이되 확장은 원하는 라이선스로 만들 수 있음

## 핵심 포인트

- 설정 없이 원하는 SMTP 에러 응답을 즉시 반환
- 싱글 바이너리로 로컬/CI에서 바로 실행 가능
- 메시지를 절대 실제 발송하지 않아 안전
- 타임아웃과 느린 응답으로 네트워크 지연 테스트도 가능

## 인사이트

이메일 전송 로직 테스트는 항상 귀찮은 영역인데, 에러 시나리오 재현에 특화된 도구라는 점이 틈새를 정확히 노림.
