MailHog 開発環境用 メールサーバー Docker

今回は、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

 

上記の公式の引用と被る内容もありますが、概ねデフォルトの設定値は以下となります。

WebUI host:localhost
WebUI port:8025
SMTP host:localhost
SMTP port:1025

SMTP username:user
SMTP password:pass

 

SMTPサーバーのポートと、メールボックス・HTTP実行用のポートを合わせる形でコンテナ起動すれば、

すぐに利用できます。

ビルド例

docker build -t mailhog:latest .

起動コマンド例

docker run -d -p 1025:1025 -p 8025:8025 mailhog

Dockerfile mailhog

デフォルトの設定の場合、以下のURLアクセスでメールボックスを表示できます。

http://localhost:8025/

mailhog web ui


設定変更

以下に色々な設定方法が記載されており、こちらを参考に行えます。

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

mailhog docker command mailhog web ui

 

以下のメモでは、SpringBootで簡単なメール送信処理を実装し、

MailHogでテストメールを受信確認する内容をメモしていますので、宜しければご覧ください。

SpringBoot メール送信 実装 サンプル MailHog


今回のメモは以上となります。

ローカル環境でもテストメールを送信して確認しなければいけないことは多いと思います。

バイナリ化されていて、各種OSで動作可能なのもありがたいです。

他にもローカルでSMTPサーバー代わりになるツールは色々あります。

一番新しいツールだとmailpitなどもあり気になるので今度調べてみたいと思います。

都内でエンジニアをやっています。 2017年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 192

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA


関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る