ENES UYSAL

Go · SMTP · Performance testing

SMTP load testing with Go

smtp-load-test is a Go command-line project for generating SMTP traffic and reporting how mail submission behaves under load. It connects my work on Linux mail services and network troubleshooting with an implementation that can be inspected on GitHub.

Project by Enes Uysal

What the project measures

A successful TCP connection is only one part of submitting an email. The tool records timings for connection setup and SMTP stages including HELO, MAIL, RCPT, DATA and QUIT. Its report lists successful and failed submissions, minimum, average, maximum and total recorded durations, and the overall test duration.

Configuring a test

The command-line interface exposes separate controls for the load and the target server. These settings make it possible to compare different test configurations while keeping the server and message parameters explicit.

ParametersPurpose
workerSize, batchSize, jobCountWorker, batch and job counts exposed by the test runner.
smtpServer, smtpPort, heloTarget host, port and SMTP greeting identity.
senderMail, receiverMail, dataSizeSender, recipient and generated message size.
sslEnabled, startTLS, authEnabledConnection security and authentication options.

Reading the results

When evaluating a controlled test, compare the success and failure counts alongside the protocol timings. Changing one load parameter at a time makes differences easier to interpret. Server-side CPU, disk and mail queue observations provide context that the client-side report alone cannot supply.

Implementation and scope

The entry point parses the configuration, creates the SMTP test client, runs SendTestMails and prints the statistics. The statistics package aggregates stage timings and counters. The repository focuses on load generation and client-side measurements. Server monitoring and verification of inbox delivery remain separate parts of evaluating a mail system.

Explore the source

Review the current implementation and available options in the repository before running a test on a mail server you operate.

Explore my work with Linux mail services, Kubernetes, observability and database reliability.

DevOps and SRE experience