SWAKS is a general purpose testing tool for SMTP. For basic SMTP testing it’s a more convenient, scriptable alternative to running a transaction by hand, but it also lets you test things that are difficult to do manually, such as authentication or TLS encryption.
It’s a perl script that installs fairly easily on OS X or any Linux/unix system (and can be installed on Windows, if you have perl installed there).
It’s pretty well documented, but it can be a bit overwhelming to start with. Here are some simple recipes:
Send a test email:
swaks -f email@example.com -t firstname.lastname@example.org
Check to see if a recipient exists:
swaks -f email@example.com -t firstname.lastname@example.org \ --quit-after RCPT
Send via a particular server:
swaks -f email@example.com -t firstname.lastname@example.org \ --server mail.example.com
Test user authentication for a smarthost:
swaks -tls --server example.com -f email@example.com \ -t firstname.lastname@example.org -ao --auth-user=you
Test to see if a server supports opportunistic TLS:
swaks -tls -s mail.example.com -f email@example.com \ --ehlo your.host.name --quit-after FROM
(The backslashes are just there to split a single command line into two, so you can read it easily on this narrow blog).
SWAKS has a lot of other tricks too – adding headers, using specific protocols and ports, attaching content. It’s a very useful tool, and gets even more so when you add a little bit of shell scripting to automate your testing further.