コンテナ - MailHog

提供: MochiuWiki : SUSE, EC, PCB

概要

MailHogは、開発環境で使用するメールテスト用のツールである。

SMTPサーバとして動作し、送信されたメールを実際には配信せず、Web UIで確認することができる。
これにより、開発中に誤って実際のメールアドレスにメールを送信してしまうリスクを防ぐ。

MailHogの主な機能を以下に示す。

  • SMTPサーバ機能 (デフォルト : ポート1025)
  • Web UI でのメール確認 (デフォルト : ポート8025)
  • 送信されたメールの保存と検索
  • メールの削除や詳細表示



Containerfile

Containerfileを作成する。

 FROM mailhog/mailhog:latest
 
 EXPOSE 1025 8025
 
 VOLUME ["/data"]
 
 CMD ["MailHog"]


コンテナイメージをビルドする。

podman build -t mailhog:custom -f Containerfile .


ビルドしたイメージからコンテナを実行する。

podman run -d           \
  --name mailhog        \
  -p 0.0.0.0:1025:1025  \
  -p 0.0.0.0:8025:8025  \
  -v mailhog-data:/data \
  mailhog:custom



Compose

Composeファイルを作成する。

version: '3'
services:
  mailhog:
    image: mailhog/mailhog
    container_name: mailhog
    ports:
      - "0.0.0.0:1025:1025"  # SMTP用(すべてのIPでリッスン)
      - "0.0.0.0:8025:8025"  # Web UI用(すべてのIPでリッスン)
    volumes:
      - mailhog-data:/data

volumes:
  mailhog-data:


Composeファイルを実行して、コンテナを作成および実行する。

podman-compose up -d
# または
podman-compose -f <Composeファイル名> up -d



アクセス方法

コンテナが起動したら、以下のURLでアクセスできる。

  • Web UI: http://localhost:8025
  • SMTP サーバー: localhost:1025


アプリケーションからの使用例

アプリケーションのメール設定で以下のように設定する。

SMTP Host: localhost(または MailHog が動作しているホスト)
SMTP Port: 1025
認証: 不要
暗号化: なし



ファイヤーウォールの設定

同一ネットワーク上の外部PCからアクセスする場合は、ファイヤーウォールのポート開放を行う。

Linux

# Firewalldを使用している場合
sudo firewall-cmd --permanent --add-port=1025/tcp
sudo firewall-cmd --permanent --add-port=8025/tcp
sudo firewall-cmd --reload

# UFWを使用している場合
sudo ufw allow 1025/tcp
sudo ufw allow 8025/tcp 


Windows 11

PowerShellを管理者権限で起動して、以下に示すコマンドを実行する。

SMTPポート(1025)の受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mailhog SMTP" -Direction Inbound -Protocol TCP -LocalPort 1025 -Action Allow


Web UIポート(8025)の受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mailhog Web UI" -Direction Inbound -Protocol TCP -LocalPort 8025 -Action Allow


正常にポート開放が行われているかどうかを確認する場合、別PCからPowerShellを起動して、以下のコマンドを実行する。

Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 8025
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 1025


ファイアウォールルールを削除する場合は、以下に示すコマンドを実行する。

# SMTPポート(1025)のルール削除
Remove-NetFirewallRule -DisplayName "Mailhog SMTP" -ErrorAction SilentlyContinue

# Web UIポート(8025)のルール削除
Remove-NetFirewallRule -DisplayName "Mailhog Web UI" -ErrorAction SilentlyContinue


Windows 10

PowerShellを管理者権限で起動して、以下に示すコマンドを実行する。

SMTPポート(1025)の受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mailhog SMTP" -Direction Inbound -Protocol TCP -LocalPort 1025 -Action Allow


Web UIポート(8025)の受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mailhog Web UI" -Direction Inbound -Protocol TCP -LocalPort 8025 -Action Allow


正常にポート開放が行われているかどうかを確認する場合、別PCからPowerShellを起動して、以下のコマンドを実行する。

Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 8025
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 1025


ファイアウォールルールを削除する場合は、以下に示すコマンドを実行する。

# SMTPポート(1025)のルール削除
Remove-NetFirewallRule -DisplayName "Mailhog SMTP" -ErrorAction SilentlyContinue

# Web UIポート(8025)のルール削除
Remove-NetFirewallRule -DisplayName "Mailhog Web UI" -ErrorAction SilentlyContinue



参考情報