What Is a Fake Smtp Server

How can fake mail servers be used to create real email accounts for testing and development. Use Smtp4Dev or MailSlurp for email generation.

What Is Fake SMTP?

Definition of a fake SMTP server is one that reads Simple Mail Transfer Protocol (SMTP) packets but does not deliver emails. For research and development operations, fake SMTP servers are typically put established. You should typically validate all emails that are sent from your software to your clients.

Why Do I Need To Test My Emails?

Given that we use email for sensitive functions like password recovery, authentication mechanism configuration, and verification. So it is crucial to test email communications.

Evaluating email operations may be significantly more challenging since you have to look for problems not just in the email messages but also in the source routes that transmit any email.

We seriously encourage implementing fully automated tests for the emails because manually analyzing mailbox operations can eventually become tiresome.

Why Is It Necessary To Set Up A Fake SMTP Server?

Instead of replicating email-sending frameworks and interfaces, using an actual SMTP server for testing emails is typically more secure. You're using the similar code routes that are employed when mailing outbound emails in operation. Because of this, you're more likely to anticipate unforeseen problems before they arise in the initial implementation.

How To Set Up a Fake SMTP Server?

Windows and Linux users can install smtp4dev using the Docker option. This fully accessible fake SMTP server is widely employed for testing reasons. Installing Docker on your server can get you began with this method more quickly than any other method. You should get an overview of what is really happening within the Docker container if Docker is deployed and executed.

~ % docker info

Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0

Start the rnwood/smtp4dev

container to configure smtp4dev. As soon as you start the smtp4dev image for the first time, Docker will download the image from Docker Hub and reuse it:

~ % docker run --rm -it -p 3000:80 -p 2525:25 rnwood/smtp4dev:v3
Now listening on: http://[::]:80

Application started. Press Ctrl+C to shut down.

Manual for every Docker option that our command employs:

Once the service has finished, remove the container. Instead of having your data from the previous launch, the smtp4dev container will be in a clean state when you start it again.

By using the -it flag, the container is started interactively (rather than being left running in the background) and its output is streamed into the terminal. When you close the terminal window in which smtp4dev is running, the process is terminated.

Map port 80 on the container to port 3000 on your local system using the command line option -p 3000:80.Map port 25 (the SMTP server port) on the container to port 2525 on your computer with the -p 2525:25 command. All of your tests must connect to smtp4dev using port 2525. You may access the smtp4dev console at http://localhost:3000.

You may view the interface right now by visiting http://localhost:3000, where the program is now executing. You may now send smtp4dev your first email. Port 2525 is used by our server to communicate.

~ % ./smtp-cli --verbose --server localhost --port=2525
Connection from [::1]:60618 to [::1]:2525
[220] 'djfsfjd smtp4dev ready'
> HELO localhost
[250] 'Nice to meet you'
> QUIT
[221] 'Goodbye'

The results demonstrate that the server is operating properly. Let's send it a brief email. The headers and content of the email will be placed in a data.txt file:

subject: Birds

Birds are great

Then, we forward that email to our fake SMTP server:

./smtp-cli --verbose --server localhost --port=2525 --from
test@example.org --to test@example.net --data data.txt

Connection from [::1]:60750 to [::1]:2525
[220] '4eb77fb909ab smtp4dev ready'
> HELO localhost
[250] 'Nice to meet you'
> MAIL FROM:<test@example.org>
[250] 'New message started'
> RCPT TO:<test@example.net>
[250] 'Recipient accepted'
> DATA
[354] 'End message with period'
[250] 'Mail accepted'
> QUIT
[222] 'Goodbye'

Conclusion

For development, smtp4dev may be a wonderful tool, but before using it, be careful to take into account any potential drawbacks.

Even if running the smtp4dev docker directly is feasible as we've seen, it's not easy to make observations in the test cases for the information contained in the emails that smtp4dev receives.

Moreover, think about how you'll use smtp4dev in your system for unit testing. Until you check every small test, you won't be able to determine whether the emails maintain your desired format.

For a hosted solution try MailSlurp's powerful fake email server. Create disposable, throwaway, temp and permanent email addresses on demand with no limits. Use custom domains, webhooks, forwarding and more.