今回は、MailHogについてのメモです。
MailHogについて
MailCatcherやFakeSMTPなどと同様に、
ローカル開発環境などで、メール送信テストを行えるツールとなります。
以下が公式のリポジトリです。こちらに、各環境へのインストール方法、設定なども記載されています。
https://github.com/mailhog/MailHog
今回のメモでは、Dockerコンテナで動作させる内容になっていますが、
MailHogはリリース用にバイナリ化された物も用意されていますので、
コンパイルなど無しで各OSにインストール利用できます。
https://github.com/mailhog/MailHog/releases
環境
- macOS:Big Sur 11.5.2
- Docker:20.10.12
- Docker Desktop:4.5.0 (74594)
動作バージョン
- MailHog:1.0.1
起動・メールボックス確認
公式リポジトリでDockerfileも公開されていますのでこちらを利用します。
https://github.com/mailhog/MailHog/blob/master/Dockerfile
以下は公式の引用です。
Dockerfile
#
# MailHog Dockerfile
#
FROM golang:1.18-alpine as builder
# Install MailHog:
RUN apk --no-cache add --virtual build-dependencies \
git \
&& mkdir -p /root/gocode \
&& export GOPATH=/root/gocode \
&& go install github.com/mailhog/MailHog@latest
FROM alpine:3
# Add mailhog user/group with uid/gid 1000.
# This is a workaround for boot2docker issue #581, see
# https://github.com/boot2docker/boot2docker/issues/581
RUN adduser -D -u 1000 mailhog
COPY --from=builder /root/gocode/bin/MailHog /usr/local/bin/
USER mailhog
WORKDIR /home/mailhog
ENTRYPOINT ["MailHog"]
# Expose the SMTP and HTTP ports:
EXPOSE 1025 8025
Configuration
Check out how to configure MailHog, or use the default settings:
- the SMTP server starts on port 1025
- the HTTP server starts on port 8025
- in-memory message storage
上記の公式の引用と被る内容もありますが、概ねデフォルトの設定値は以下となります。
SMTP username:user
SMTP password:pass
SMTPサーバーのポートと、メールボックス・HTTP実行用のポートを合わせる形でコンテナ起動すれば、
すぐに利用できます。
ビルド例
docker build -t mailhog:latest .
起動コマンド例
docker run -d -p 1025:1025 -p 8025:8025 mailhog
デフォルトの設定の場合、以下のURLアクセスでメールボックスを表示できます。
http://localhost:8025/
設定変更
以下に色々な設定方法が記載されており、こちらを参考に行えます。
https://github.com/mailhog/MailHog/blob/master/docs/CONFIG.md
基本的には環境変数で設定するか、コマンドライン実行時のオプション指定で行います。
例えば、HTTPポートを変更する場合、以下のように指定します。
環境変数指定
ENV MH_UI_BIND_ADDR=0.0.0.0:8026
コマンドライン オプション指定
$ ./MailHog_linux_amd64 -smtp-bind-addr 0.0.0.0:8026
Dockerで動作させる場合も、環境変数としてMH_UI_BIND_ADDRで指定すれば動作します。
ENV MH_UI_BIND_ADDR=0.0.0.0:8026
# Expose the SMTP and HTTP ports:
EXPOSE 1025 8026
以下のメモでは、SpringBootで簡単なメール送信処理を実装し、
MailHogでテストメールを受信確認する内容をメモしていますので、宜しければご覧ください。
今回のメモは以上となります。
ローカル環境でもテストメールを送信して確認しなければいけないことは多いと思います。
バイナリ化されていて、各種OSで動作可能なのもありがたいです。
他にもローカルでSMTPサーバー代わりになるツールは色々あります。
一番新しいツールだとmailpitなどもあり気になるので今度調べてみたいと思います。