MailHogについて
簡易SMTPサーバーの1種で開発時のメールテストに活用できます。
Docker Hubでコンテナ公開もされているため
導入も非常に簡単です。
GitHub
Docker Hub
今回はあくまで既存dockerプロジェクトにSMTPサーバを追加する形でいきます
docker runにて挙動確認をしたい方は配布元のドキュメントを確認してください
導入方法
docker-compose.ymlへコンテナを追記
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025"
portsに設定している8025はMailHogのデフォルトHTTPポートです。
もしホスト端末からコンテナ上のMailHogへSMTPテストを行う場合は
ports へ - " 1025:1025"を追記してください
| service | default port |
|---|---|
| HTTP server | 8025 |
| SMTP server | 1025 |
build後、http://localhost:8025へアクセスするとこんな画面が表示される

あとはMailHogコンテナに対しメールを送信すればこちらの画面で確認できるらしい
メールテスト
同確のためSMTP通信が正常に通るか簡単なプログラムでチェックします
import smtplib
from email.mime.text import MIMEText
def test_mail(fromaddr, toaddr, subject, msg):
m = MIMEText(msg)
m['Subject'] = subject
m['From'] = fromaddr
m['To'] = toaddr
s = smtplib.SMTP(host="mailhog", port=1025)
s.sendmail(fromaddr, toaddr, m.as_string())
s.close()
return "done"
Jimでfailure_test
Jimによる異常系のテストもできるようです。
利用するにはdocker-compose.ymlのmailhog部で以下を追記します
command: -invite-jim -jim-accept=0.5
上記の場合50%の確率でメール送信が成功します。(他にも通信速度等も設定可能)
マニュアル上はMailHog 〜にてオプション設定と書いてありますがDocker上でそれを書くと動作しません
各種オプションは以下から確認してください
Introduction to Jim
その他
デフォルトではメールはメモリ上に保存されるので、
コンテナの再起動などを行うと受信したメールは消えます。


