GN⁺: MailCatcher로 초간단 SMTP 서버 운영하기
(mailcatcher.me)- MailCatcher는 간단한 SMTP 서버를 실행하여 수신된 메일을 웹 인터페이스로 보여주는 도구임.
- 메일을 smtp://127.0.0.1:1025로 전송하도록 설정하고, http://127.0.0.1:1080에서 수신된 메일을 확인할 수 있음.
-
주요 기능
- 모든 메일을 수신하여 저장하고, HTML, 일반 텍스트, 소스 버전을 표시함.
- HTML을 재작성하여 내장 이미지 및 링크를 새 창에서 열 수 있도록 함.
- 첨부 파일 목록을 제공하고 개별 다운로드를 지원함.
- 원본 이메일을 다운로드하여 기본 메일 클라이언트에서 볼 수 있음.
- 명령줄 옵션을 통해 기본 SMTP/HTTP IP 및 포트 설정을 변경할 수 있음.
- WebSockets를 지원하는 브라우저에서는 메일이 즉시 나타나며, 그렇지 않으면 30초마다 업데이트됨.
- 백그라운드에서 데몬으로 실행 가능하며, 포그라운드에서도 실행 가능함.
- PHP에서 사용하기 쉽게 하는 sendmail 유사 명령인 catchmail을 제공함.
- 메시지 간 키보드 탐색 지원.
-
설치 및 사용법
-
gem install mailcatcher
명령어로 설치 가능하며,mailcatcher
명령어로 실행함. - 메일을 smtp://127.0.0.1:1025로 전송하고, http://127.0.0.1:1080에서 확인함.
- 명령줄 옵션은
mailcatcher --help
로 확인 가능함.
-
-
Bundler 및 RVM
- Gemfile에 MailCatcher를 추가하지 말고, README에 사용법을 기재할 것을 권장함.
- RVM을 사용할 경우, 전용 gemset에 설치하여 gem 충돌을 방지할 것을 권장함.
-
Rails 및 PHP 설정
- Rails에서는
environments/development.rb
에 SMTP 설정을 추가하여 사용함. - PHP에서는
php.ini
또는 Apache 설정에서sendmail_path
를 설정하여 사용함.
- Rails에서는
-
Django 설정
- Django에서는
settings.py
에 이메일 설정을 추가하여 사용함.
- Django에서는
-
API
- RESTful URL 스키마를 통해 JSON 형식으로 메시지 목록을 다운로드할 수 있음.
-
주의사항
- 메일 처리 기능은 기본적이며, 필요에 따라 수정 가능함.
- UTF-8 인코딩을 완벽히 지원하지 않으므로, 적절한 메일 라이브러리를 사용할 필요가 있음.
-
향후 계획
- 요청 시 메일 전송 기능 추가.
- CampaignMonitor의 디자인 가이드라인 및 CSS 지원 매트릭스에 대한 호환성 테스트.
Hacker News 의견
-
이 도구는 유용하지만 유지보수가 중단되었음. MailHog도 마찬가지임. MailPit, MailCrab, smtp4dev가 현대적인 대안임
-
유지보수자는 현재 많은 작업을 하지 않음. 도구가 완성되었기 때문임. 개선할 점은 많지만, 기능을 크게 향상시키지는 않음. 문제가 발생하면 수정함
-
Mailpit은 Go로 작성되었고, 단일 정적 바이너리로 실행되며, 매우 낮은 자원 사용량을 가짐. 적극적으로 유지보수되고 있음
-
SMS 메시지를 로컬 개발 환경에서 잡아내는 유사한 도구를 찾고 있음. 회사는 Mailtrap을 사용하여 이메일 미리보기 도구로 사용 중이며, Twilio를 통해 보내는 SMS 메시지에 대한 유사한 도구를 찾고 있음. Twilio Dev Phone 프로젝트가 있었으나 유지보수가 중단된 상태임
-
이 도구는 개발용이며, 성숙한 상태임. 최근 1년 내에 Git 활동이 있었음. 특정 기능이 중요하다면, 풀 리퀘스트를 제출하거나 개발을 위한 기부를 고려할 수 있음
-
smtp4dev를 최근에 사용하기 시작했음. 로컬 개발을 위한 "mailtrap" 문제는 이미 해결된 문제라고 판단함. Docker-compose 파일에 추가하는 데 15분과 10줄의 코드가 필요했으며, 잘 작동하고 있음. Docker/Podman을 통해 서비스 설정이 매우 쉬움
-
Rails 앱 개발에 Mailcatcher를 사용 중이며, 사용이 매우 쉬움. 다른 것이 필요하지 않다고 생각함. @sj26 및 협력자들에게 감사함
-
MailCatcher를 사용했으나 Arm 머신으로 전환하면서 문제가 발생함. Mailpit을 사용 중이며, 설정이 더 복잡함. MailCatcher가 Arm 문제를 해결한 것 같아 다시 전환할 수도 있음
-
smtp-sink를 오래 사용했으나, 팀이 CLI보다 GUI 도구를 선호하여 Mailcatcher를 발견함. 안정적이고 잘 작동함
- smtp-sink 사용 예시:
$ smtp-sink -u nobody -R /tmp/smtp-sink -d "maildir/%Y-%m-%d/mail.%H.%M." 127.0.0.1:25 1024
- smtp-sink 사용 예시:
-
이러한 도구의 일반적인 용도는 이메일을 보내는 다른 애플리케이션 테스트임. 다른 용도가 있는지 궁금함