This is mainly why I stopped forwarding emails from Gmail to Fastmail as >95% of the spam was sent via Gmail, and I suspect Fastmail doesn't try to filter those.
Anyway, a helpful tip for you is that the Fastmail spam filter is configurable. You may want to look at making it more aggressive. Go to Fastmail > Settings > Filters & Rules > Filters > Spam protection > Advanced settings. Here you can either just select the 'Aggressive' preset or even customise your own thresholds for flagging a message as spam. Here you can also check how many messages are have been learnt by the filters.
If you're forwarding emails from Gmail I'd also suggest turning that off or setting up a rule to dump the Gmail forwarded messages into a separate folder. I suspect you'll find most of the spam has been passed on by Gmail.
Re forwarding, there is a setting to address that in the same location:
Fastmail > Settings > Filters & Rules > Filters > Spam protection > Advanced settings
"If forwarding email to Fastmail from another service, enter the SMTP host names (not IP addresses) of the forwarding servers. The Received headers of these hosts are parsed to find the true email source. Please contact support if you require assistance with this feature."
Meanwhile, on my other account, I have hacked together a basic email classification with n8n and cheap LLM model, and it works awesomely and costs peanuts. I wonder why services who want to be google's competitors don't do this?
It's exceedingly difficult to compete against "free".