コンテナ - MailHog
概要
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
参考情報