Docker で MailDev をローカルメールサーバーとして動かす
実際の受信箱を用意することなく、Docker 上で MailDev を動かして送信メールをキャプチャ・確認する方法。
Docker で MailDev をセットアップする
以下の例を使って Dockerfile を作成します。
FROM node:14-alpineEXPOSE 1080EXPOSE 1025RUN npm i -g maildevCMD ["maildev"]MailDev は以下のポートを使用します。
- 管理コンソール用に
1080。 - SMTP 用に
1025。
これらのポートはオプションでカスタマイズできます。
以下の内容で docker-compose.yml ファイルを作成します。
version: '3'services: mail: container_name: mail build: ./ ports: - "1080:1080" - "1025:1025"コンテナを起動します。
docker-compose up -d mailコンテナが起動したら、ブラウザで http://localhost:1080 を開くことで MailDev の管理コンソールにアクセスできます。
このコンソールでは、MailDev サーバーに送信されたメールを表示・管理するためのインターフェースが提供されます。

メール機能のテスト
Windows を使用している場合は、PowerShell の Send-MailMessage コマンドを使ってテストメールを送信できます。以下はその例です。
Send-MailMessage ` -from 'dev@localhost' ` -to 'dev.to@localhost' ` -subject 'Test Subject' ` -body 'This is a test email.' ` -smtpServer 'localhost' ` -port 1025メールを送信したら、MailDev の管理コンソールに移動し、メールが受信されていることを確認します。

まとめ
MailDev を動かす小さな Docker コンテナを構築し、テストメールを送ってみたところ、実際の受信箱を用意することなく送信メールをキャプチャ・確認できるとわかりました。MailDev は単一のコンテナから 1025 の SMTP リスナーと 1080 の Web コンソールの両方を公開しているため、アプリケーションのメール設定を localhost:1025 に向けるだけで、送信されるすべてのメッセージをキャプチャして視覚的に確認できます。パスワードリセットや通知など、メール送信を伴うコードパスをローカル開発中に検証したいときに便利な方法です。ただし、このコンテナはメールを配送するのではなく捕捉することだけを目的としているため、開発環境やテスト環境の範囲内にとどめておくべきです。
Related posts
Docker環境でGreengrassコンポーネントをビルド・デプロイする
Greengrass Core Dockerイメージを使って、AWS IoT Greengrassコンポーネントをローカルで開発します。
Cognito User PoolsとOIDCでSlackサインインを実装する
Cognito user poolをOIDC経由でSlackと連携させ、"Sign in with Slack"をAmplifyでNext.jsアプリに組み込みます。
Lambda Web AdapterでFastAPIをAWS Lambdaにデプロイする
Lambda Web Adapterを使うと、FastAPIで書いたAPIバックエンドをコンテナのまま単一のLambda関数にデプロイできます。
API Gateway WebSocket:モック統合の実装
バックエンドのLambdaを一切使わず、モック統合のみでAPI Gateway WebSocket APIを構築し、あらかじめ用意されたレスポンスを返します。
CloudFront署名付きURL経由でS3にアップロードする
CloudFrontの署名付きURLを使えば、独自ドメイン経由でS3にアップロードできます。S3の直接の署名付きURLが使えない場合に有用です。
