SMTP Werkzeug is an SMTP e-mail message delivery test utility for Windows.
The features
- MX lookup, available as a separate step with the option of copying the MX records to the clipboard (under Tools)
- MX selection: choose which MX record to test against
- Custom MTA: enter a custom MTA to deliver messages to any specific server; these options can also be stored in the program settings
- Custom SMTP port
- Multiple test types:
- Check server response (not useful)
- Test recipient address (issues QUIT after RCPT TO)
- Deliver test message
- Test messages are date-stamped and contain a session serial number and the name and IP address of the target server
- Multiple test message types:
- Plain text: a very short message to test delivery only
- HTML with inline images and PDF attachment, simulating a conventional message
- “Payload”: send messages of any size (the limit is probably 2 GB at the moment), created by spooling as many copies of Jabberwocky (1 kB exactly) as is required to reach the specified size; no physical local message needs to exist, so your Sent Mail folder will thank you
- EICAR: send a copy of EICAR in an eicar.com attachment to a plain text message to test anti-virus scanning
- GTUBE: send a plain text message containing the GTUBE text to test anti-spam scanning (in particular SpamAssassin)
- LOGIN and PLAIN authentication
- Session history window for a reference of what was sent
Portable mode
Portable mode is enabled by placing the configuration file (SMTP Werkzeug preferences.xml) in the same directory as the executable. The portable version ships with an empty configuration file for this reason. Normally, the configuration file lives inside %APPDATA%\Telcontar.
The bad news
SMTP Werkzeug needs recreating from scratch, but I do not envisage this ever happening. As such, there are some limitations of the software that are worth mentioning:
- SMTP Werkzeug requires your default nameserver to support TCP DNS lookups: UDP DNS lookups are not supported. This is a limitation of the RBDNS library. I doubt it’s an insurmountable, but I don’t imagine I’ll ever attempt to get UDP DNS working.
- There is no support for SSL/TLS or STARTTLS. The REALbasic 2006 cypher suite is too old, so I have not attempted to implement secure connections. HTTP Werkzeug does have HTTPS support enabled (confirmed working with an old Linux box) but it will only talk to outdated servers. Making TLS work under a modern REALbasic would be trivial, but implementing STARTTLS would be interesting.
- No high DPI support: the UI only works at 100% DPI. I suspect that I could fix this if anyone was persuasive enough.
The back story
I had completely abandoned writing desktop software, because I had yet to find a language and framework that I wanted to invest time and effort in. This remains true to this day. However, I needed this program at work, so I blew the dust off REALbasic Professional 2006 on my old PowerMac G4 450 running Tiger and quickly threw this program together. Since then, it has gained additional functionality and bug fixes, but it also gains all the bugs from REALbasic runtime, of which there are a lot.
Since then I have migrated to a much faster Mac mini G4 1.25 GHz acquired from my colleague Russell Brooks, but my development environment remains PPC, and remains Tiger. I use my Windows PC for producting the graphics, however.
The program itself is used in production in Windows 7, 8 and 10.
The caveats
REALbasic runtime is bug-ridden and broken, so anyone foolish enough to use this program is expected to put up with the following grief:
- On some Windows 7 PCs, the pop-menu controls show empty menus; presently I don’t have access to a PC where this can be reproduced
- Ctrl+Tab and Ctrl+Page Up/Down does not cycle through a tab panel; this cannot be resolved, because controls get first pickings on events (upon investigation, I see that other programs also get this wrong)
- Senseless beeps when pressing any key that doesn’t do anything in a text box
- Senseless beeps with Active Window Tracking enabled and a dialog box is open
- Tooltips don’t always appear
- When focusing a window, the control focus can get moved arbitrarily
- Combo boxes behave strangely and don’t support the Edit menu under Windows; I’ve added support for the Edit menu with the caveat that all menu items are enabled as it’s impossible to enable and disable them
- Moronic message box placement
- The VERSIONINFO resource is broken: Windows 7 cannot read the product details and Process Explorer won’t read them under XP either
- Fake separators in the mail exchanger dropdown (Mac OS X permits them, Windows does not; this is a limitation of Windows’s pathetic attempt at popup controls)
- Disconnections and socket errors often appear before the final response from the server: the Error (disconnect) event occurs before the final DataAvailable without any way to check whether any data remains (the count of data left remains resolutely zero), and I cannot be bothered to kludge a way around this garbage
- Virtually no socket error messages: all I can tell you is that you were connected before and you aren’t now, or that you never were (I don’t even get error numbers to play with)
- Minimise to tray cannot be used with this program: it is likely that this is caused by the taskbar button being owned by a different (hidden) window to the visible window
This does not include the faults I did work around, such as rubbish support for theme-compliant control colours for the classic Windows UI (screenshot depicts correct appearance).
Credits
- Uses the RB DNS public domain, open source resolver library by Will Cannings.
Licence
- SMTP Werkzeug and my associated code library is licensed under the terms of the zLib license.