Simon icon Simon
Flexible server monitoring

Email Cycle Check

Good old WhistleBlower (may it rest in peace) had a very cool and useful built-in test that would check for a full email cycle, i.e. it would send a special email out through your designated SMTP server, then it would poll a POP3 or IMAP account for a customizable amount of time, waiting for that same email to arrive. If that particular message didn't arrive in the time allotted, it was a failure.

WB serialized the emails that it sent, so that it knew which particular message it was looking for, to avoid confusion from interruptions and old messages. It also cleaned up after itself when it was done, deleting the messages after a successful test (or from old tests), so it was a long-term, sustainable test that was extremely useful for monitoring the all-around function of a mailserver.

I was reminded of the rare but critical need for this test when my Internet message server recently had the process thread that sent messages out die some kind of weird semi-death....but the rest of the process kept running, including responding to a basic SMTP port check and HELO/EHLO, and successfully receiving incoming messages, which masked the human detection of the issue.

It went on like that for 12 hours before some random user finally discovered that their outgoing message never arrived at the destination, and by then all kinds of havoc had enused with critical messages that users thought had gone out but hadn't.

I can see how this test could be hacked together with some fairly extensive shell scripts, but it seems like something that Simon should include as a built-in function that can be easily and cleanly implemented without having to code it ourselves.

Could you consider this for a near-future version of Simon?

Thanks,
John

David Sinclair's picture

Re: Email Cycle Check

Hi John,

I agree that such a feature would be a valuable addition. Email is notoriously unreliable. Unfortunately, it's very hard to code for, too. Simon used to use Apple's Message framework, but they deprecated that, and it also uses the Pantomime framework, which can be tricky to configure correctly. Nowadays, the preferred transport mechanism is Apple Mail, since that offloads the setup and delivery to Apple's software, though that requires the Mail app set up.

In theory, I may be able to use the Apple Mail transport to receive mail too. In which case it should be possible to add a service to do an email cycle. I'll have to do some research, though.

By the way, I do have an experimental program where I can write custom additions to Simon as paid contract work — for example, the History filter plugin was written on this basis. So if you wanted to expedite changes like this or the other enhancement, that could be something to consider. Contact me if you want to discuss that.