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

これらのポートはオプションでカスタマイズできます。

以下の内容で 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

まとめ

MailDev を動かす小さな Docker コンテナを構築し、テストメールを送ってみたところ、実際の受信箱を用意することなく送信メールをキャプチャ・確認できるとわかりました。MailDev は単一のコンテナから 1025 の SMTP リスナーと 1080 の Web コンソールの両方を公開しているため、アプリケーションのメール設定を localhost:1025 に向けるだけで、送信されるすべてのメッセージをキャプチャして視覚的に確認できます。パスワードリセットや通知など、メール送信を伴うコードパスをローカル開発中に検証したいときに便利な方法です。ただし、このコンテナはメールを配送するのではなく捕捉することだけを目的としているため、開発環境やテスト環境の範囲内にとどめておくべきです。

About the author

Takahiro Iwasa

Takahiro Iwasa

Software Developer

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