Docker で MailDev をローカルメールサーバーとして動かす

Docker で MailDev をローカルメールサーバーとして動かす

実際の受信箱を用意することなく、Docker 上で MailDev を動かして送信メールをキャプチャ・確認する方法を紹介します。

Takahiro Iwasa
3 min read

Docker で MailDev をセットアップする

以下の例を使って Dockerfile を作成します。

Dockerfile
FROM node:14-alpine
EXPOSE 1080
EXPOSE 1025
RUN npm i -g maildev
CMD ["maildev"]

MailDev は以下のポートを使用します。

  • 管理コンソール用に 1080
  • SMTP 用に 1025

これらのポートは、MailDev のコマンドラインオプションで変更できます。

以下の内容で docker-compose.yml ファイルを作成します。

docker-compose.yml
version: '3'
services:
mail:
container_name: mail
build: ./
ports:
- "1080:1080"
- "1025:1025"

コンテナを起動します。

Terminal window
docker-compose up -d mail

コンテナが起動したら、ブラウザで http://localhost:1080 を開き、MailDev の管理コンソールへアクセスします。

管理コンソールでは、MailDev サーバーに送信されたメッセージを表示・管理できます。

Management Console

メール機能のテスト

Windows を使用している場合は、PowerShell の Send-MailMessage コマンドを使ってテストメールを送信できます。以下はその例です。

Terminal window
Send-MailMessage `
-from 'dev@localhost' `
-to 'dev.to@localhost' `
-subject 'Test Subject' `
-body 'This is a test email.' `
-smtpServer 'localhost' `
-port 1025

メールを送信したら、MailDev の管理コンソールを開き、メッセージが受信されていることを確認します。

Received Email

まとめ

Docker コンテナで MailDev を実行すると、実際の受信箱を使わずに送信メールを取得して確認できます。

MailDev はポート 1025 で SMTP を受け付け、ポート 1080 で Web コンソールを公開します。アプリケーションの SMTP サーバーに localhost:1025 を指定すると、取得したメッセージをブラウザで確認できます。

この構成は、パスワードリセットや通知など、メール送信を伴う処理のローカルテストに利用できます。MailDev はメッセージを配送せずに取得するため、開発環境とテスト環境でのみ使用してください。

About the author

Takahiro Iwasa

Takahiro Iwasa

Software Developer

This blog shares technical notes from hands-on projects—architecture, implementation, and AWS service integrations.