Running MailDev as a Local Mail Server with Docker
Running MailDev in Docker to capture and inspect outgoing mail locally, without a real inbox involved.
Setting Up MailDev with Docker
Create a Dockerfile using the example below.
FROM node:14-alpineEXPOSE 1080EXPOSE 1025RUN npm i -g maildevCMD ["maildev"]MailDev uses the following ports:
1080for the management console.1025for SMTP.
These ports can be customized using options.
Create a docker-compose.yml file with the following content:
version: '3'services: mail: container_name: mail build: ./ ports: - "1080:1080" - "1025:1025"Bring up the container:
docker-compose up -d mailOnce the container is running, you can access the MailDev Management Console by opening your browser and navigating to http://localhost:1080.
This console provides an interface to view and manage emails sent to the MailDev server.

Testing Email Functionality
If you’re using Windows, you can send test emails using the PowerShell Send-MailMessage command. Here’s an example:
Send-MailMessage ` -from 'dev@localhost' ` -to 'dev.to@localhost' ` -subject 'Test Subject' ` -body 'This is a test email.' ` -smtpServer 'localhost' ` -port 1025After sending an email, navigate to the MailDev Management Console to verify that the email has been received.

Conclusion
Building a small Docker container running MailDev and sending a test email to it confirmed that outgoing mail could be captured and inspected without a real inbox involved. Because MailDev exposes both an SMTP listener on 1025 and a web console on 1080 from a single container, pointing an application’s mail configuration at localhost:1025 is enough to capture every outgoing message and inspect it visually. That makes it a convenient way to verify email-triggering code paths — password resets, notifications, and the like — during local development, though the container is only intended to catch mail rather than deliver it, so it should stay confined to development and test environments.
Related posts
Building and Deploying Greengrass Components in a Dockerized Environment
Develop AWS IoT Greengrass components locally using the Greengrass Core Docker image.
Sign in with Slack Using Cognito User Pools and OIDC
Federating Cognito user pools with Slack over OIDC and wiring "Sign in with Slack" into a Next.js app with Amplify.
Deploying FastAPI on AWS Lambda with Lambda Web Adapter
This example guides you through the process of developing API backends with FastAPI using Lambda Web Adapter.
API Gateway WebSocket: Implementing a Mock Integration
Building an API Gateway WebSocket API entirely with mock integrations, returning canned responses with no backend Lambda involved.
Uploading to S3 Through CloudFront Pre-Signed URLs
CloudFront signed URLs let you upload to S3 through a custom domain—useful when direct S3 pre-signed URLs are not an option.
