SpamFoo instead of Cyren – my experience after migrating to Windows Server 2025
Idea shared by Sabatino - 10/26/2026 at 3:53 AM
Proposed

Hi everyone, I’d like to share an experience.

As I mentioned before, I migrated my mail server from Windows Server 2019 to Windows Server 2025. Unfortunately, apparently due to an issue on Cyren’s side, the license currently doesn’t reactivate correctly on the new server.

This pushed me to speed up my tests with SpamFoo and to raise its weights.

How I ran the checks

I created a service mailbox testspam that uses plus addressing with “move to folder”, so each variant lands in a different folder.

Then I created 3 events that run on all incoming email:

  1. Spam level Low → add recipient testspam+non-spam
  2. Spam level Medium → add recipient testspam+medium
  3. Spam level High → add recipient testspam+spam-alto

This way I get a copy of all the traffic, already split by spam level.

Finally, I wrote a small tool that connects to this mailbox via IMAP and analyzes the message headers (see screenshots), so I can see exactly how the score is calculated. I also added some filters so I can “play” with the calculations and simulate different weights.

Result

As far as I’m concerned, SpamFoo nails it. I haven’t found any false positives – which are the ones that scare me the most – except for some service messages: when I looked into why, it turned out the senders had no DKIM (I’ve already reported it to the respective providers).


P.S. I still believe the SmarterMail spam filter should allow a two-tier weight for SpamFoo, based on the probability it returns:

  • Spam,prob >= 0.90 → weight x
  • Spam,prob < 0.90 → weight y

Right now a single flat weight means a 0.55 and a 0.98 count exactly the same, while the confidence behind them is very different.


P.P.S. Bounces coming from other mail servers very often fail both DKIM and SPF, and SpamFoo then gives them a high score.

This is the biggest anomaly I’m seeing. It’s not only SpamFoo’s fault – DSNs are sent with an empty envelope sender and are almost never DKIM-signed, so the checks are bound to fail – and in practice it works as a protection against backscatter.

The downside, of course, is that users end up finding legitimate bounces they actually care about in their Junk folder. Anyone handling DSNs differently?

Sabatino Traini
      Chief Information Officer
Genial s.r.l. 
Martinsicuro - Italy

I fully agree... SpamFoo should have a not spam, possibly spam and definitely spam...

Thanks echoDreamz. To be clear, I don’t think the problem is on SpamFoo’s side – it’s doing a great job. It’s SmarterMail that should let us set a different weight depending on the probability SpamFoo returns.

Based on my tests and what I’m observing right now, I’d go with something like this:

  • prob ≥ 0.90 → a weight high enough on its own to push the message over the Spam High threshold
  • prob < 0.90 → a lower weight, enough to land it in Spam Medium, unless other checks add further points

That way SpamFoo’s confidence actually drives the outcome, instead of a 0.55 and a 0.98 counting exactly the same.

Sabatino Traini
      Chief Information Officer
Genial s.r.l. 
Martinsicuro - Italy

Zach Sylvester Replied
Employee Post
Hey Guys,

SpamFoo has a setting that allows you to adjust how aggressively it classifies messages as spam.
To find this setting, navigate to Settings → SpamFoo Dashboard → System → Settings.
From there, you can choose between three options: Conservative, Recommended, and Aggressive. Each option adjusts the threshold SpamFoo uses to determine whether a message should be classified as spam. The same can be set for Anti-Phishing. 

Kind Regards,

Zach Sylvester

Software Developer
SmarterTools Inc.
I fully agree... SpamFoo should have a not spam, possibly spam and definitely spam...

Those kind of choices though gets into subjectiveness, depending upon circumstances.

i Zach, thanks – you already gave me this suggestion a while ago, but it doesn’t address what I’m asking for.

The SpamFoo level itself is fine as it is. The point is that SpamFoo doesn’t just return spam / not spam: it returns a probability, and that’s already in the headers (see screenshot in my first post, e.g. Spam,prob:0.79 vs Spam,prob:0.87).

Right now, in Settings → Antispam → Spam Checks → SpamFoo, SmarterMail only allows two weights: Spam Weight and Not Spam Weight. It should allow more, something like:

  • Spam Weight → SpamFoo prob ≥ 0.90
  • Spam Suspect Weight → SpamFoo prob ≥ 0.60 and < 0.90
  • Not Spam Weight → everything else

That’s all that’s needed on SmarterMail’s side: the data is already there, it’s just not usable in the weighting.

Sabatino Traini
      Chief Information Officer
Genial s.r.l. 
Martinsicuro - Italy

Reply to Thread

Enter the verification text