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

今回は、MailHogについてのメモです。

MailHogについて

MailCatcherFakeSMTPなどと同様に、

ローカル開発環境などで、メール送信テストを行えるツールとなります。

以下が公式のリポジトリです。こちらに、各環境へのインストール方法、設定なども記載されています。

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 hostlocalhost
WebUI port8025
SMTP hostlocalhost
SMTP port:1025

SMTP usernameuser
SMTP passwordpass

 

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年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 164

コメントを残す

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

CAPTCHA


関連投稿

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

トップに戻る