smtpwtstt

A cross-platform SMTP testing tool with both a desktop GUI and CLI.

GoSMTPNetworkingCLIDesktop AppCross-Platform

The Name

Yeah, the name is a mouthful. It stands for SMTP With TLS Support Testing Tool. I know it's not the most creative name, but at least it tells you exactly what it does. And honestly, once you type it a few times it kinda sticks.

The Problem

Testing SMTP connectivity is one of those tasks that sounds simple but never is. You need to check if the server responds, whether TLS works, if STARTTLS negotiation goes through, whether your credentials are accepted — and ideally you want to see the full SMTP transcript to debug issues. Most of the time I'd end up using openssl s_client or telnet, manually typing EHLO and hoping for the best.

I wanted a tool that handles all of this in one place, works on any platform, and doesn't require memorizing SMTP commands.

What It Does

smtpwtstt can probe SMTP servers using plain SMTP, SMTPS (implicit TLS on port 465), or STARTTLS (explicit TLS upgrade, typically port 587). It validates the greeting, does an EHLO, checks TLS negotiation, and optionally tries AUTH PLAIN with your credentials. You can also send a test email to verify the full flow end to end.

It ships as two binaries — a native desktop GUI for quick interactive checks, and a CLI for scripting, automation, and CI pipelines. Both are backed by the same probe package under the hood, so they behave identically.

GUI vs CLI

The desktop app gives you input fields for everything — host, port, mode, credentials, sender/recipient addresses, TLS settings, and a timeout. Hit test and you get a clean result panel showing the banner, server capabilities, TLS state, auth status, and the full transcript if you enable verbose mode.

The CLI does the same thing but from your terminal. It's great for quick smoke tests or when you want to integrate SMTP checks into a deployment pipeline.

Built with Go

The whole thing is written in Go, which was a natural choice for a tool like this. Cross-compilation is trivial — GitHub Actions builds tagged releases for Linux, macOS, and Windows automatically. The GUI uses Fyne for the native desktop UI, and the core SMTP probe logic is a standalone package that both frontends share.

It's one of those tools I built because I needed it at work, and it turned out useful enough to clean up and open source. Nothing groundbreaking, but it saves me time every week.